在开始动手之前
在上一次使用Java完成了贪吃蛇的开发后,感觉迷宫和贪吃蛇的绘图差不多,所以本次项目全程依旧使用 Java 编写。
项目需求分析
迷宫项目要求实现游戏的基本功能,例如生成迷宫、人物、能控制人物的移动,当走到终点时游戏结束,同时要求引入系统自动解迷宫的功能。
功能分析
绘制迷宫和贪吃蛇类似,只需要绘制线条作为墙,而空余部分作为可行走路线。需要注意的是,这次并未选择将墙和路径做成等宽的,较细的墙可以增加游戏的难度。和贪吃蛇不同,这次绘制人物以及行走痕迹不再使用Java的绘图函数,而是直接创建自定义的图片,由对应的函数贴至指定位置。移动人物和贪吃蛇类似,只不过不再需要额外的标志位用于锁存,本次仍然使用timer控制游戏的进程,只不过仅在有按键按下才触发actionPerformed方法。
生成迷宫可以使用深度优先算法,结合一定程度的随机选择,可以让迷宫每次都不一样。解迷宫可以使用A星算法,计算代价和,选择最优解。
补充
人物行走痕迹有重合的情况,所以使用有透明度的图片,每次走过同一地方时,叠加后的透明度会降低,方便区分。由于绘图时不区分每个可以行走的格子,所以在行走时可以画一条线连接前后路径,方便观察。
致谢
本项目的完成离不开以下教程的指导和参考:
Java paint()和paintComponent()方法的区别
后续
下一篇地址 开发Windows迷宫游戏——(二)代码实现