
贪婪球第一版在这里:https://codebus.cn/contributor/post/greedy-ball
2.0 版本相对第一版做了如下修改:
- 视野缩放,会随着体积增大视野变大,解决一代玩家球过大挡住屏幕现象
- 增加高杀伤力毒圈,解决满地图跑问题
- 提高敌人 AI 智商,会主动吃食物
- 修复若干已知 bug
- 扩大了游戏区域
- 全部用 c++ 重写
执行效果如下:
完整的源代码如下:
///////////////////////////////////////////////////
// 程序名称:贪婪球 2.0
// 编译环境:Microsoft Visual studio 2017,EasyX 2018春分版
// 作 者:奶酪
// 邮 箱:2190038793@qq.com
// 发布日期:2019-6-24
...

游戏介绍
【第一版】
花了一天时间,用 easyx 做了一个小游戏,程序中所有的类函数都是内联函数,大约 300 行,开发环境是 Visual Studio 2015 Community。
【第二版】
主要做了代码优化,加强可读性。
同时改了操作方式,玩家和敌人都可以在 x、y 方向上移动,敌人每隔一段时间会随机换向。
游戏运行截图如下:
操作方式
玩家通过方向键移动,z 键射击,左 Shift 进入低速移动模式提高操作精度。
代码说明
关于无阻塞延时,
首先,先要 ctime 创建一个 clock_t 变量 a,初始化为 clock(),貌似是自从 1970 年到现在的毫秒数。
我们要每隔 0.5 秒执行函数 func() 一次。
那么创建主循环 while(1)
调用前用 clock() - a;
如果 clock() - a > 500,那么执
...
本程序模拟了多个小球在方框内的碰撞运动。
源代码如下:
///////////////////////////////////////////////////
// 程序名称:多个小球在方框内的碰撞运动
// 编译环境:Visual C++ 6.0,EasyX 2013冬至版
// 作 者:可可
// 最后修改:2014-03-18
//
#include <graphics.h>
#include <conio.h>
#include <math.h>
#define XN 640
#define YN 480 // 设置图形窗口的大小
#define N 40 // 设置球的个数,最多 90 个
#define V 20 // 设置球的速度
// 画出一个球
void Ball(int x, int y)
{
fillcircle(x, YN - y, 20); // 转换成常用的坐标
}
// 判定是否发
...

关于 Julia Set (茱莉亚集) 的介绍什么的我就不多说了,网上一大堆。执行效果如图:
关于 Julia Set,可以通过设置复数 c 的初值,显示出不同的图案,比如,大家可以试试以下几组:
c.re = 0.45, c.im = -0.1428; c.re = 0.285, c.im = 0.01; c.re = 0.285, c.im = 0; c.re = -0.8, c.im = 0.156; c.re = -0.835, c.im = -0.2321; c.re = -0.70176, c.im = -0.3842;
随便用哪行替换掉源程序中的“c.re = -0.75, c.im = 0;”都可以看到不同的精美图案。循环变量 k 是迭代次数,在某些参数下需要高一些会更精细。
为了美观,还需要修改一下颜色部分,目前代码中的颜色是这样的:
HSLtoRGB((float)((k<<5) % 3
...

这是一个简单的飞机空战游戏。
游戏操作说明:
w、s、a、d 控制飞机移动
k 发射子弹
空格暂停
ESC退出
敌机自动发射子弹、自动移动
当飞船碰到敌机、飞船血量为 0、敌机碰到底部时游戏结束
敌机血量为 0 时,会出现一个新的敌机
小敌机随机出现
结束后按 ESC 退出,按 R 重来。
游戏运行截图如下:
该游戏的编译环境为:Visual C++ 2013,EasyX_20190219(beta)。
完整的游戏源码包【点击这里下载】。
作者:刘华欣
QQ:1359240780
邮箱:1359240780@qq.com

经典的拼图游戏。
采用 c++ 编写,主要使用到了两个类,分别是 GameFrame 和 Picture。
GameFrame 负责游戏界面的初始化和原始信息的绘制;Picture 负责图片的切割,图片位置的初始化,通关条件判断,控制整个游戏正确运行。
另外这次还修改了鼠标位置与图片的定位算法,同时图片位置初始化由正确的通关位置移动而来,所以能保证拼图游戏绝对有解,不需要使用复杂的数学公式来判断。
我的一点心得:在这个版本之前,我还写过一个版本,玩法不一样,所以开始没考虑拼图是否有解,以为只要通过移动就能得到全部想要的结果。界面也不好看,说实话,这次这个界面,我觉得勉强还能接受,没有找到那种能让我眼前一亮的渐变颜色。通过这个游戏的设计我学会了怎样切割图片,怎样快速的定位,更熟练的使用 easyx 提供的 API 函数,对于 c++ 语言本身,并没有使用到继承与多态还有泛型以及相关的知识,所以是熟练一下以前学过的知识吧。个人觉得 c++ 真的是一门非常优秀的语言。
游戏运行截图如下:
...

这个打字母游戏是用图片的形式做的,并配有音乐。
以下是运行截图:
完整源代码、图片及编译后的可执行文件请【点击这里下载】。
作者:haha
邮箱:517467449@qq.com
个人主页:https://www.baidu.com/p/haha1111111113

这个计算器程序是模仿 Windows 10 系统的计算器所写的,借鉴了 Windows 10 计算器的一些外观设计以及所包含的一些功能,但是实现此计算器的所有算法是自己独立开发,其中的一些功能或许没有写的很完善。
下面介绍此计算器所包含的一些功能,以及用法。
计算器包含两大功能:计算功能、转换功能。计算功能包含普通计算器、科学计算器、超大数的计算、解一元一次方程。转换器包含体积转换、长度转换、重量转换、温度转换、能量转换、面积转换、速度转换、时间转换、功率转换、数据转换、压力转换、角度转换,包含了基本所有常用的转换。
普通计算器:实现最普通的加减乘除,通过用户输入的字符串(中缀表达式),转换为计算机可以计算的后缀表达式(后缀表达式又称逆波兰式),最后通过栈来实现计算。
科学计算器:所谓的科学计算器只是加上了一些可以计算的函数,如 sin、cos、tan 等,这个计算器不是按上面普通计算器的实现方法,而是通过数字的直接计算,功能实现的不是很好(所以我认为科学计算用起来是不怎么好用)。
超大数计算:实现一些很大的数
...

本程序实现将图片转换为 ascii 字符的效果。
使用说明:
支持 bmp / jpg / gif / emf / wmf / ico 类型的图片。gif 类型的图片仅加载第一帧,不支持透明。我只测试过jpg格式。
请把要转换的图片复制到 exe 程序所在的文件夹,并确保图片名中没有中文等无法输入的字符。
运行 exe 文件即可转换。
因为 txt 文件的行距,字符间距等原因,为了达到最好效果,请先把图片的高度压缩到原来的 1/2(宽度不变)。
转换根据图片的实际大小操作,如果图片过大,请修改图片尺寸,或者手工修改 txt 中字符的尺寸,以便能够完全显示。
这仅仅是一个 demo,里边存在不少问题,比如 ASCII 灰度实际上是按照 8*16 像素扫描的;实际使用的 ASCII 灰度值我修改过,并非原来的灰度等等。
为了更精确的控制字体的尺寸,间距,行距,html 文件是个不错的选择,如果你愿意的话,你可以选择完善这个 demo,做成一个很实用的小小的软件,但是让一个东
...
贪吃蛇的核心代码,很精简。
完整源代码如下:
///////////////////////////////////////////////////
// 程序名称:贪吃蛇的核心代码
// 编译环境:VC6.0 / VC2010,EasyX 2011惊蛰版
// 作 者:shareli,QQ: 953445224
// 最后修改:2012-2-4
//
#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#define SIZEMAX 100 // 定义蛇的最大长度
#define SNAKELEN 10 // 蛇的大小和蛇每次移动的距离
#define SPEED 100 // 初始速度
/****************************************/
typedef enum // 定义表示方向的枚举变量
...

一个模拟弹力的小程序,执行效果如下:
感兴趣的可以再加上几个小球,类似的还可以模拟出绳子的效果。
以下是全部源代码:
///////////////////////////////////////////////////
// 程序名称:模拟弹力的小程序
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20120404(beta)
// 作 者:frxyz1 <http://hi.baidu.com/frxyz1>
// 最后修改:2012-4-14
//
#include <graphics.h>
#include <conio.h>
#define BALL_RADIUS 30 // 小球的半径
void main()
{
initgraph(640, 480);
setfillstyle(RGB(255, 0, 0));
// 小球的初始位置
float ballx = 320.f,
...

一个模拟橡皮筋的程序。
执行效果:
以下是全部源代码:
///////////////////////////////////////////////////
// 程序名称:模拟橡皮筋
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作 者:frxyz1 <http://hi.baidu.com/frxyz1>
// 最后修改:2012-4-15
//
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#define NODES 20
#define GRAVITY 1
#define ITER 8
struct Vector
{
float x, y;
void operator += (Vector v) { x += v.x; y += v.y; }
void operator -
...

关于 Mandelbrot Set (曼德布洛特集) 的介绍什么的我就不多说了,网上一大堆。执行效果如图:
为了美观,可以修改一下颜色部分,目前代码中的颜色是这样的:
HSLtoRGB((float)((k<<5) % 360), 1.0, 0.5)
这行代码中的 k 的取值范围是 0~180,将其映射到 HSL 颜色空间中的色相上(360 度)。
全部代码如下:
// 程序名称:分形学 - Mandelbrot Set (曼德布洛特集)
// 编译环境:Visual C++ 6.0,EasyX_20200902
// 最后更新:2010-9-9
//
#include <graphics.h>
#include <conio.h>
/////////////////////////////////////////////////
// 定义复数及乘
...

该游戏是经典的涂格子游戏,很有挑战性。
执行效果如下:
源代码如下:
/**********************************************************
* 程序功能:涂格子游戏
* 程序版本:v0.1 基本功能演示版本,简单动态效果,可以过关
* 编译环境:Visual C++ 6.0,EasyX_20130506(beta)
* 最后更新:2010-11-9
**********************************************************/
#include <graphics.h>
#include <conio.h>
#define MaxNum 14 //单边最大格子数
#define G_length 30 //格子边长
#define USER_LBUTTONDOWN 101
#define USER_RBUTTONDOWN
...

这是个高仿的扫雷游戏,游戏手感非常贴近原版。
代码由两个类构成,基类 Graph 对 IMAGE 进行绘制,同时生成界面,初始化相关数据。MineSweeper 类继承 Graph 类,主要进行相关操作,识别按钮等做出反应。
执行效果如下:
完整的游戏源码如下:
/*
程序名称:扫雷
简 介:一款经典的小游戏,程序运行中可以通过 ESC 直接退出
左键点击,右键标记和取消标记,同时按下左右或按下中间键触发提示
其他操作基本和官方一致,界面略有调整,详细操作自行测试
编译环境:VS2019 + EasyX_20190529(beta)
编写时间:2019-6-29
最后修改:2019-7-30
作 者:Teternity(qq1926594835)
版 权:作者原创,无抄袭,不涉及版权问题,仅用作学习
*/
// 头文件
#include <graphics.h>
#include <co
...