个人作品

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下

计算器(by Redman) 铜牌收录

本程序采用面向对象技术编写,主要涉及到了三个类:GButton、GEdit、GCount。

GButton 负责按钮的放置,绘制,响应鼠标等操作。GEdit 负责编辑框的显示更新数据,通过设置其内部的字符串来更新数据, 设置函数 SetEditString 就是程序与编辑框的接口,每进行一次操作将 GCount 的字符串通过该函数传递给编辑框,然后编辑框更新数据。每个按钮内部也有字符串, 每次通过读取按钮内部的字符串来裁决 GCount 要进行的操作,当程序获取到左右操作数时,相当于用户点击了等于号按钮,程序便计算结果,并将结果传递给 GCount 内部的字符串,以便后续操作。当用户使用鼠标滑动时,会产生鼠标消息,若有鼠标消息,程序便读取一个消息,此时判断鼠标滑动的位置,函数 OnLocate 就是原来计算鼠标是否滑动到按钮上,若的确滑动到了按钮上,则将其设置为当前按钮,并将上次滑动到的按钮的颜色恢复,当前按钮的颜色将变化,至于 GButton 为什么使用二维数组,便是为了快速的将鼠标消息所对应的位置与相应的按钮映射过来,这样能迅速的找到对应的按钮,并对其进行操作。

...

游戏:种地要浇水(创意源自《金庸无双》)(by i92076) 铜牌收录

游戏规则如下:

填补水渠使每块田地都被灌溉。方向键选择,空格确定。

特技(耗金币):

  • 重置:R 键
  • 顺时针旋转:S 键
  • 逆时针旋转:N 键
  • 跳过一个:T 键

具体金币盈亏细则,可以在游戏中按 H 键查看。

注:游戏创意源自《金庸无双》。

游戏运行截图如下:

完整源代码、图片及编译后的可执行文件请【点击这里下载】。

作者:i92076
个人主页:https://www.baidu.com/p/i92076

游戏:大丰收(含有 VC6 游戏源码 和 完整论文)(by 杨盼) 铜牌收录

喜庆丰收,这是一款锻炼玩家反应能力的游戏,游戏中玩家通过控制上和左右键控制可爱的小猴子在地面上跳跃或者是平行移动,来接取天空中飘落的水果。接到不同的水果会得到不同的分数,桃子 10 分,西瓜 20 分,菠萝 30 分,接到炸弹扣 40 分,接不到水果也会扣 10 分,当扣分达到 500 游戏结束(扣分只计算没接到水果),当得分到达 500 会进入下一关,右侧会显示最高得分玩家的用户名和分数,游戏中可以点击暂停键,暂停,再次点击游戏开始,按空格键也可以暂停游戏,在按任意键开始,点击结束会关闭游戏,不保存游戏信息,正常游戏结束,会将游戏信息保存。

游戏附带有完整的 VC6 源代码,以及完整的游戏资源(图片和音效),并附有原作者写的论文。

游戏运行截图如下:

完整的游戏源代码请【点击这里下载】。

作者:杨盼
邮箱:745509409@qq.com
指导教师:蔡越江

拼图 2.0(by Redman) 铜牌收录

经典的拼图游戏。

采用 c++ 编写,主要使用到了两个类,分别是 GameFrame 和 Picture。

GameFrame 负责游戏界面的初始化和原始信息的绘制;Picture 负责图片的切割,图片位置的初始化,通关条件判断,控制整个游戏正确运行。

另外这次还修改了鼠标位置与图片的定位算法,同时图片位置初始化由正确的通关位置移动而来,所以能保证拼图游戏绝对有解,不需要使用复杂的数学公式来判断。

我的一点心得:在这个版本之前,我还写过一个版本,玩法不一样,所以开始没考虑拼图是否有解,以为只要通过移动就能得到全部想要的结果。界面也不好看,说实话,这次这个界面,我觉得勉强还能接受,没有找到那种能让我眼前一亮的渐变颜色。通过这个游戏的设计我学会了怎样切割图片,怎样快速的定位,更熟练的使用 easyx 提供的 API 函数,对于 c++ 语言本身,并没有使用到继承与多态还有泛型以及相关的知识,所以是熟练一下以前学过的知识吧。个人觉得 c++ 真的是一门非常优秀的语言。

游戏运行截图如下:

...

实现水波纹显示效果(by 豪) 铜牌收录

当鼠标滑过时,可以在屏幕上实现漂亮的水波纹效果。

执行效果如下:

源代码如下:
(注意,请确保 loadimage 函数里面加载的图片路径存在)

/********************************************************
 * 程序名称:实现水波纹显示								*
 * 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730		*
 * 作  者:豪 (QQ: 415051674)							*
 * 核心算法:参考网上算法									*
 * 发布日期:2013/3/20									*
 ********************************************************/


#include <graphics.h>     
#include <conio.h>
#include <stdio.h>
...

青蛙过河小游戏 v1.0(by P_S_I) 铜牌收录

这是一个很典型的游戏,很多程序使用的也是这种结构,制作多个元件同时的运动。还有如何用光栅获得透明背景。希望我的小作品能抛砖引玉,给大家一点启发!

待扩展的功能:

  • 难度、更多关卡、商店、分数排行榜、岸上的障碍。
  • 背景音乐、音效、鼠标控制、时间限制等。

游戏规则:

  • WSAD 控制,ESC 退到主界面,再按则退出。
  • 木板间隔是随机的。
  • 生命归零时游戏结束。
  • 渡河会导致1条河道速度 +2。
  • 死亡会导致所有河道速度 -1。
  • 青蛙出界或落水算死亡。
  • 不会在第一道出界。
  • 积分的算法是四条河道速度相加。
  • 金币留给以后扩展程序。

源码说明:

  • 图片放在res文件夹里,请把 res 和 frogger.exe 放在同一个文件夹里。
  • 关于各种元件的代码分别写在以它们命名的 cpp
...

迷宫 2:支持自己创建迷宫,并求解最短路径(by Redman) 铜牌收录

本迷宫游戏支持用户自己创建迷宫,定义迷宫的出入口,并求解最短路径。

游戏运行抓图如下:

使用方法:

  1. 执行程序后,先按 s,开始用鼠标绘制迷宫墙壁。
  2. 绘制完墙壁后,按 e,用鼠标设置迷宫的出入口。
  3. 设置好出入口之后,按 d,动态演示迷宫的最短路径。

游戏采用面向对象技术编写,完整的游戏 VC++ 源代码下载:<点击这里下载>

作者:Redman
邮箱:huangxionging@163.com

万年历(by Redman) 铜牌收录

万年历程序。顾名思义可以查询很多年份的日历。

按键介绍:

  • q 年份加 1,a 年份减 1
  • w 年份加 10,s 年份减 10
  • e 年份加 100,d 年份减 100
  • r 年份加 1000,f 年份减 1000
  • t 月份加 1,g 月份减 1

执行效果如下:

完整的源代码如下:

/************************************************************
 * 本程序名叫万年历:										*
 * 顾名思义可以查询很多年份的日历							*
 * 按键介绍:												*
 * q 年份加 1, a 年份减 1									*
 * w 年份加 10, s 年份减 10									*
 * e 年份加 100, d 年份减 100								*
 * r 年份
...

三辆行驶的小车(by E_SHARE) 铜牌收录

本程序模拟了以不同速度行驶的三辆小车。

源代码如下:

////////////////////////////////////////////
// 程序名称:3 辆行驶的小车
// 编译环境:Visual C++ 6.0,EasyX_20120603(beta) 
// 程序编写:E_SHARE <501748772@qq.com>
// 编写时间:2012-6-26
////////////////////////////////////////////
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>

// 声明需要使用的函数
void carstart(int x, int y, int z);
void drawbus();
void init();

// 定义全局变量
IMAGE img;


/////////
...

图片转化为 ASCII 图,就是很多字符组成图片的那种(by Geodesic) 铜牌收录

本程序实现将图片转换为 ascii 字符的效果。

使用说明:

支持 bmp / jpg / gif / emf / wmf / ico 类型的图片。gif 类型的图片仅加载第一帧,不支持透明。我只测试过jpg格式。

请把要转换的图片复制到 exe 程序所在的文件夹,并确保图片名中没有中文等无法输入的字符。

运行 exe 文件即可转换。

因为 txt 文件的行距,字符间距等原因,为了达到最好效果,请先把图片的高度压缩到原来的 1/2(宽度不变)。

转换根据图片的实际大小操作,如果图片过大,请修改图片尺寸,或者手工修改 txt 中字符的尺寸,以便能够完全显示。

这仅仅是一个 demo,里边存在不少问题,比如 ASCII 灰度实际上是按照 8*16 像素扫描的;实际使用的 ASCII 灰度值我修改过,并非原来的灰度等等。

为了更精确的控制字体的尺寸,间距,行距,html 文件是个不错的选择,如果你愿意的话,你可以选择完善这个 demo,做成一个很实用的小小的软件,但是让一个东

...

连连看(by 水木淋溪) 铜牌收录

经典的连连看游戏。

游戏运行截图如下:

游戏中使用了资源文件,<点这里下载该游戏的完整 VC 项目包>。

游戏主代码如下(相关图片资源请下载完整 VC 项目包):

///////////////////////////////////////////////////
// 程序名称:连连看
// 编译环境:Visual C++ 6.0 / 2012,EasyX 20120501(beta)
// 作  者:水木淋溪 <577712541@qq.com>
// 最后修改:2012-4-28
// 注:本游戏可以说是网上一个游戏的复制
//     但是是用自己的思想编制的(生成算法有参考)
//     游戏的优点我就不多说了,玩的过的人都知道
//     游戏缺点:音乐、背景选的不好,只有一关,很传统···
//               没有计时,没有提示,没有自动完成···
//     总之是有待完成,不过这些代码是核
...