代码分享

================

物理程序:引力模拟(by 有时的迷惘)

一个模拟引力的程序。可以在程序中创建不同质量和初始速度的天体,天体按照万有引力定律运行。

左键创建天体。按下左键不松开,天体质量会增加;然后移动,会给天体赋值初始速度,然后松开左键。

右键删除天体。

超出屏幕、碰撞后的天体不会消失。

程序的运行截图如下:

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

作者:有时的迷惘
个人主页:www.baidu.com/p/有时的迷惘

计算器(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++ 真的是一门非常优秀的语言。

游戏运行截图如下:

...

模拟 FC 游戏:快打旋风

该游戏模拟的红白机经典游戏快打旋风。

该程序的编译环境:vc6.0 / vs2010 + EasyX_v20130322(beta)。

游戏运行抓图如下:

游戏原代码一万四千多行,另有多张图片和音乐,【点击这里下载全部源代码】。

实现水波纹显示效果(by 豪)

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

执行效果如下:

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

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


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

[图像处理] 将图片转换为马赛克效果

这个程序将图片转换为马赛克效果。

算法原理:求出每个小方块内所有像素的颜色平均值,然后用来设置为该小方块的颜色。依次处理每个小方块,即可实现马赛克效果。

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:将图片转换为马赛克效果
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20200727
// 作    者:krissi <zh@easyx.cn>
// 最后修改:2013-4-22
//
#include <graphics.h>
#include <conio.h>

// 将图片转换为马赛克效果
// 参数:
//		pimg: 待处理的 IMAGE 对象指针
//		tilesize: 马赛克的尺寸
//		startx: 马赛克的平铺起始位置 x 坐标
//		starty: 马赛克的平铺起始位置 y 坐标
vo...

[图像处理] 将图片进行模糊处理

这个程序实现将图片进行模糊处理。

本程序的模糊处理算法:遍历图片像素,将每个像素颜色值与其周围像素颜色值求和,取平均值对其赋值。

完整代码如下(注意图片文件的路径):

/////////////////////////////////////////////////////////////////////////
// 程序名称:将图片进行模糊处理
// 编译环境:Visual C++ 6.0 ~ 2017,EasyX 20180727(beta)
// 作  者:krissi <zh@easyx.cn>
// 发布日期:2013-1-19
// 最后修改:2018-10-5
//
#include <graphics.h>
#include <conio.h>				

// 将图片进行模糊处理
void Blur(IMAGE *pimg)
{
	DWORD*	pMem = GetImageBuffer(pimg...

[图像处理] 彩色图片转化成底片效果

这个程序实现将图片转化成底片效果。

底片效果使用如下公式:

R = 0xFF - GetRValue(pMem[i]);

G = 0xFF - GetGValue(pMem[i]);

B = 0xFF - GetBValue(pMem[i]);

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:底片效果
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20200727
// 作    者:krissi <zh@easyx.cn>
// 最后修改:2013-1-20
//
#include <graphics.h>
#include <conio.h>

// 底片效果
void ColorInvert(IMAGE *pimg)
{	...

[图像处理] 彩色图像转换为灰度图像

这个程序实现将彩色图像转换为灰度图像。

彩色转换为灰度使用如下公式:

Gray = R * 0.299 + G * 0.587 + B * 0.114

为了提高运算速度,将这个公式转换为整数运算:

Gray = (R * 229 + G * 587 + B * 114 + 500) / 1000

为了提高运算速度的方法还有很多,这里作为演示,不再详述。

完整代码如下:

/////////////////////////////////////////////////////////
// 程序名称:彩色图片转换为灰阶图片
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130322(beta)
// 作    者:krissi <zh@easyx.cn>...

祝福烟花

你是否还在苦恼朋友生日时一条简单的祝福短信不够分量嚒?

你是否还在犹豫如何在现实中诚心诚意地表达自己的感情嚒?

那么看了该文章,相信只要是心里有爱的盆友都会灵光乍现,

加上自己的创意,给你的 TA 送去属于你自己的祝福烟花吧!

动画运行截图:

完整的动画 VC++ 源代码下载:

vc6.0 版:<点击这里下载>

vs2019 版:<点击这里下载>(如果无法解压,请使用 7z 解压)