
这是用 C++ 写的益智小游戏“交叉线”(源码在底部)。
本程序的核心在于判断线段是否交叉,需要两种算法:快速排斥实验和跨立实验
包含十三个文件
- Head.h : 初始化头文件
- Cross Line.cpp : 程序开端文件
- Game_Class.h : 游戏类头文件
- Game.cpp : 游戏类文件
- Begin.cpp : 初始界面类实现文件
- Level.cpp : 关卡界面类实现文件
- Play.cpp : 游戏界面类实现文件
- Win.cpp : 过关界面类实现文件
- About.cpp : 关于项目类实现文件
- Point.cpp : 点的结构类实现文件
- Line.cpp : 
...

由于 EasyX 图形库中的 rotateimage 函数没有考虑关于 alpha 信息的问题,使旋转后的贴图 alpha 信息失真。
为了满足自己的需求,本人手动写 rotateimage 函数,解决了该问题。
本文参考:
- http://tieba.baidu.com/p/1490993926 (图像任意角度旋转方法)
- https://codebus.cn/yangw/transparent-putimage (详解透明贴图和三元光栅操作)
要实现图像旋转首先要搞懂旋转的坐标变换。
如图,在平面直角坐标系中,以原点为中心,一个点由一个位置逆时针旋转到另一个点,转角为θ。
根据坐标关系,可以求出两点的坐标关系,推算过程如下:
如图是一个单位圆的 1/4 圆弧,圆心在原点上,点 (x, y) 和 (x1, y1) 在圆弧上,则由三角函数的和差角公式可以推出式子
y = rs
...

基于 EasyX 的迷宫小游戏,有三种随机生成算法。
包含九个文件
- Maze.h : 初始化头文件
- Maze.cpp : 程序开端文件
- Game.h : 游戏类头文件
- Adventrue.cpp : 冒险模式类文件
- Forest.cpp : 冒险模式-森林系列类实现文件
- Dungeon.cpp : 冒险模式-地牢系列类实现文件
- Infernal.cpp : 冒险模式-地狱系列类实现文件
- Help.cpp : 帮助信息类实现文件
- Other.cpp : 刷新界面、放置按钮、输出对话框类实现文件
包含算法
- 森林系列:Prim 算法
- 地牢系列:图论 DFS 算法
- 地狱系列:暴力 DFS 算法
算法说明
以下对这些算法给出简单说明,详细请自行学习(比较有难度):
...