Teternity

欢迎大家指出代码的不足,共同学习!

Rolling Ball 铜牌收录

这是经典的下 100 层游戏。>_<

通过鼠标左右键或者键盘 A、D 按键及左右方向键控制小球左右移动,木板会不断上升,小球到底认定游戏结束,按下键盘后小球会加速到一个最大速度,小球在木板上则会跟着木板上移,达到一定分数启动反向操作。

本程序采用单例设计模式,RollingBall 公有继承 BallAndPlank,protected 便于派生类访问基类数据成员。

木板的颜色随机,位置随机。

界面由初始化界面大小控制,可自行更改。

游戏运行截图如下:

游戏的完整源代码如下:

/*
	项目名称:
		RollingBall
	作者:
		tzdhu.z@qq.com (1926594835)
	编译环境:
		Visual Studio 2017,EasyX_20190219(beta)
	发布日期:
		2019-2-2
	最后修改:
		2019-2-23
	项目介绍:
		本程序由单例设计模式
...

扫雷(WinXP 扫雷的高仿版) 金牌收录

这是个高仿的扫雷游戏,游戏手感非常贴近原版。

代码由两个类构成,基类 Graph 对 IMAGE 进行绘制,同时生成界面,初始化相关数据。MineSweeper 类继承 Graph 类,主要进行相关操作,识别按钮等做出反应。

执行效果如下:

完整的游戏源码如下:

/*
	程序名称:扫雷

	简  介:一款经典的小游戏,程序运行中可以通过 ESC 直接退出
			 左键点击,右键标记和取消标记,同时按下左右或按下中间键触发提示
			 其他操作基本和官方一致,界面略有调整,详细操作自行测试

	编译环境:VS2019 + EasyX_20190529(beta)

	编写时间:2019-6-29
	最后修改:2019-7-30

	作  者:Teternity(qq1926594835)

	版  权:作者原创,无抄袭,不涉及版权问题,仅用作学习
*/

// 头文件
#include <graphics.h>
#include <co
...

扫雷(联网对战版) 金牌收录

一、简介

单机版扫雷总会有些枯燥,不妨试试联网对战版扫雷!

开发环境:VS2019 + EasyX_20210224。

游戏玩法:左键按下翻开方块,翻开雷判输,或翻开最后一个方块判赢;逃跑或超时会结束本轮连接,正常结束会自动重新开局,对手不变。

目的:一方面提供联网对战版扫雷供大家娱乐,另外也是重构曾经写过的扫雷单机版,最后也为了练习 Windows 网络编程。

二、网络

关于 Windows 网络编程书籍,推荐朱晨冰老师的《Visual C++ 2017 网络编程实战》,出版日期 2020 年。

个人感觉这本书讲解比较细致,内容也不会太老旧,有计网基础会更容易理解学习。

程序采用阻塞套接字编写,因此服务器免不了使用多线程,多线程部分由 C++11 提供。

想要让程序不限于局域网通信又不想购买服务器,这里推荐花生壳软件,操作简单,TCP 部分免费使用,相关内容自行搜索。

三、程序文件

1、服务器文件:

...

贪吃蛇大作战 铜牌收录

这是一个贪吃蛇大作战类游戏,修改特性为 AI 不互杀;

该程序有四个类:蛇基类 SnakeBase,玩家类 Player,AI 类,Game 类;
SnakeBase 和 AI 均继承自 SnakeBase,SnakeBase 提供基础接口;
Game 提供数据初始化以及游戏主循环。

程序设计之初,采用“实运行”方式,即所有动画均在地图 imgMap 上真实绘制,
这样却有一些严重的问题,需要不断地记录节点背景以恢复节点经过的地方等。

后修改为“虚运行”方式,判断位置是否可视后直接绘至窗口内,
这样大大降低时间开销,同时不会因为蛇靠近而产生不可擦除的颜色。

至于蛇运行,采用位置继承,即节点下一个位置为上一个节点的位置,但是会发现跨度太大,
解决办法是在这个跨度中插入适当帧数。

执行效果如下:

完整代码如下:

/*
	程序名称:
			贪吃蛇大作战

	
...

迷宫算法演示 铜牌收录

这不是一个游戏,而是算法分享和算法演示。

通过简单绘图,使得算法的执行过程可视化。

包含两个文件:头文件 MazeAlgorithm.h 和 源文件 main.cpp。

main.cpp 给出基本控制和简单文字按钮。

MazeAlgorithm.h 给出算法的实现和演示绘图,包含算法如下:

一、迷宫生成:

        ① DFS(即深度优先)递归和非递归版本。

        ② 十字分割 递归和非递归版本。

        ③ 随机 Prim。

二、迷宫寻路:

        ① DFS(分为随机方向 和 指定优先遍历方向,是同一个接口)。

        ② A* 寻路。

这对于初学者而言或有难度,而且许多教程只是给出简陋的文字描述,很难上手代码。

若以后有时间,我尽量去完成一篇迷宫算法的博客,然后回头补链接。

以下对这些算法给出简单说明(注:这不足以让你深刻理解算法原理

...

烟花 铜牌收录

这是一个简单的烟花程序,纯代码实现,

代码总长约 260 行,若有心去看应该不难看懂,相关注释已写于源码中。

3D 到 2D 转换 和 物理轨迹严格按照公式计算,

其余个别参数根据估计调试而设置,不用深究。

程序用到的 EasyX 绘图 主要是 solidcircle 和 putpixel,

更多的是对 语言特性、基础数学和物理的应用,亦可见其重要性。

编程之路,需要的不仅仅是语言,愿君共勉。

最后祝大家新年快乐!

界面截图:

源代码:

/*
	程序名称:
			烟花(Fireworks)

	简介:
			用 EasyX 实现的一个简单的烟花程序
			加入 z 轴以实现简单的 3D 视觉效果
			物理计算时 1 像素等效 10cm
			注:计算 3D->2D 时,未采用斜二测画法,而是不计
...

炸金花小游戏 铜牌收录

纯代码实现的一个简单的炸金花的小游戏。

市面上的炸金花似乎已经被禁,因此模拟时没有参考,或许有一些不足。

由于简单模拟,所以没有太多的动画和界面。

程序由 三个头文件 和 一个源文件 组成,便于分块管理。

一、"Cards.h"

        封装了卡牌底层,由三个类组成,单张牌类、三张牌类 和 52 张牌的类。

        有控制台的输出测试接口。

二、“CardGraph.h”

        该文件主要是进行绘图,根据扑克的底层数据进行相关绘制。

        修改:利用宽字符输出实现花色,而不是直接绘制。

        绘制卡片背面心形时,仅需两条直线和两条贝塞尔曲线即可,这里不过多说明。

三、"Controller.h"

        该文件是游戏的控制文件,处理按钮、鼠标、发牌等等操作。

        由两个类组成,Butt

...

大球吃小球 铜牌收录

一、简介

大球吃小球,模拟自小游戏,左键按下状态拖动小球进行移动,躲避大球的同时尽量多吃小球。

玩法简单,程序也简单。开始界面按下左键开始游戏,按下右键退出程序。

新生球保护期:在 500ms 后可以被玩家吃到,在 800ms 后可以击杀玩家。

相同大小的小球碰撞时判断玩家失败。

二、游戏截图

三、游戏源码

/*
	程序名称:
			大球吃小球
	简介:
			模拟小游戏,左键按下状态拖动小球进行移动,躲避大球的同时尽量多吃小球
	环境:
			VS2019 + EasyX_20210115(beta)
	时间:
			2021.2.4
	作者:
			Teternity(QQ:1926594835)
	版权:
			作者原创,无抄袭,不涉及版权问题,仅用作学习
*/


/* ---------------头文件--------------- */
#include <iostream>
...