Lost person

蒟蒻一枚,只能写写小程序,有BUG欢迎指出!

益智小游戏:交叉线

这是用 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 : 
...

支持 Alpha 信息图片旋转(旋转后自动适应大小)

由于 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 算法

算法说明

以下对这些算法给出简单说明,详细请自行学习(比较有难度):

...