Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏

大三课程设计周自己一个人写的迷宫小游戏

(一)课题内容

  • 实现走迷宫。
  • 主要功能为界面显示、上下左右键的响应以及当前步数统计。
  • 通过该课题全面熟悉数组、字符串等的使用,掌握程序设计的基本方法及友好界面的设计。

(二)课题要求

1. 基本要求

(1)游戏界面显示:迷宫地图、上下左右移动的特效。
(2)动作选择:上下左右键对应于上下左右的移动功能,遇到障碍的处理。
(3)得分统计功能:步数等。

2. 扩展要求

(1)用户数据管理。
(2)设计一个自动走迷宫的程序,使得得到最短路径。

(三)组队分工情况

  • 团队名称:import python
  • 团队成员:Wonz(没错就我一个人)
  • 分工:全部(好像给自己挖了个巨坑)

(四)ToDo

  • 2018.10.29-2018.10.30:学习 PyQt5 + Tkinter
  • 2018.10.31:学习 Pygame、熟悉 Python、实现随机生成迷宫地图程序
  • 2018.11.1:实现游戏界面程序、得分统计功能程序
  • 2018.11.2:学习 Python + MySQL,实现用户数据管理程序
  • 2018.11.3-2018.11.5:设计 AI 算法,实现自动走迷宫程序(DFS、BFS、强化学习、遗传算法)

(五)实际进度

  • 2018.10.29:学习 PyQt5
  • 2018.10.30:学习 Tkinter
  • 2018.10.31:放弃 PyQt5Tkinter,转 Pygame
  • 2018.11.1:尝试实现迷宫地图程序
  • 2018.11.2-2018.11.3:实现迷宫地图程序
  • 2018.11.4-2018.11.6:生成角色、实现键盘控制走迷宫、实现计分功能,改障碍处理的 bug(改了三天)
  • 2018.11.7:尝试实现 遗传算法 自动走迷宫,设置数据库连接
  • 2018.11.8:放弃 遗传算法 ,转向 强化学习 中的 Deep Q Network 实现自动走迷宫
  • 2018.11.9:Deep Q Network 中的 TensorFlow 框架看不懂,放弃,转 DFS,验收
  • 2018.11.10:实现人工生成迷宫地图,非随机生成
  • 2018.11.11:凌晨 3 点睡,早上 7 点多起,一直写报告到下午 5 点

(六)文件说明

  • main.py 为主函数
  • maze.py 为随机生成迷宫函数
  • color.py 为存储颜色函数
  • main_new.py 为被老师验收之后自己重写的主函数
  • mapp.py 为被老师验收之后自己重写的自己设计的迷宫(非随机生成迷宫)
  • 由于时间等原因,第二种生成迷宫的 AI 算法还未实现

(七)结果展示

1. 随机生成地图版本
  • 游戏界面

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第1张图片

  • 开始游戏:左上角有步数统计

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第2张图片

  • 遇到障碍的信息反馈

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第3张图片

  • AI自动走迷宫(程序还有待完善,步数统计存在问题)

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第4张图片

  • 存在的问题:有时 AI 程序会崩溃,暂时还没有找到 bug

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第5张图片

2. 非随机生成地图的迷宫
  • 游戏界面:起点在最右边,终点在最左边红色位置

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第6张图片

  • 开始游戏:左上角有步数统计

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第7张图片

  • 遇到障碍的信息反馈

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第8张图片

  • 走出迷宫:输出“Win”

Maze_AI: 一款基于 Python + Pygame + AI 算法的迷宫小游戏_第9张图片

(八)不足与反思

  • 基础不扎实:选了不是很熟悉的 Python 语言,期间复习语法也花了点时间
  • 自己给自己挖坑:拒绝了同学们的组队邀请,一个人做三个人的任务,结果做不好
  • 时间管理不够高效:进度安排不够科学,总是完不成自己规定的任务
  • 需求不明确:确实是自己没有问清楚老师的需求,导致自己的程序老师不满意,是自己的问题

(九)项目地址

GitHub

(十)Liscense

MIT

你可能感兴趣的:(#,Python,—————人工智能—————)