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. 随机生成地图版本
  • 游戏界面

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

  • 遇到障碍的信息反馈

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

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

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

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

  • 遇到障碍的信息反馈

  • 走出迷宫:输出“Win”

(八)不足与反思

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

(九)项目地址

GitHub

(十)Liscense

MIT

原文地址:https://www.cnblogs.com/wonz/p/12312106.html

时间: 02-15

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

python摇骰子猜大小的小游戏

#小游戏,摇筛子押大小的小游戏 import random #定义摇筛子的函数: def roll_dice(number = 3,points = None): print ('<<<<< Roll The Dice >>>>>') if points is None: points = [] while number > 0: point = random.randrange(1,7) points.append(point) numb

pygame系列_小球完全弹性碰撞游戏

之前做了一个基于python的tkinter的小球完全碰撞游戏: 今天利用业余时间,写了一个功能要强大一些的小球完全碰撞游戏: 游戏名称: 小球完全弹性碰撞游戏规则: 1.游戏初始化的时候,有5个不同颜色的小球进行碰撞 2.玩家可以通过在窗口中单击鼠标左键进行增加小球个数 3.玩家可以通过在窗口中单击鼠标右键进行删减小球个数 4.玩家可以通过键盘的方向键:上,右键进行对小球加速 5.玩家可以通过键盘的方向键:下,左键进行对小球减速 6.玩家可以按键盘:f键实现全屏显示 7.玩家可以按键盘:Esc

Python编写微信打飞机小游戏(一)

最近开始学习Python语言,发现Python有一个神奇的Pygame模块,在编写小游戏时显得非常方便,于是参照教学视频编写了一个微信打飞机的小游戏,网上有很多相关的博客,但都不是很详细,大都是直接贴代码,于是决定沉下心来把编写程序的过程记录下来,与大家分享. 首先声明一点,这篇博客完全参照了小甲鱼的<零基础入门学习Python>教学视频,为了尊重原创,特将原作者的视频地址公布如下:<零基础入门学习Python> Python编译器和Pygame模块的安装网上的教程很多,这里不再赘

【Machine Learn】决策树案例:基于python的商品购买能力预测系统

决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结合视频学习和书籍基础的笔记所得.本系列文章将采用理论结合实践方式编写.首先介绍机器学习和深度学习的范畴,然后介绍关于训练集.测试集等介绍.接着分别介绍机器学习常用算法,分别是监督学习之分类(决策树.临近取样.支持向量机.神经网络算法)监督学习之回归(线性回归.非线性回归)非监督学习(

在Hadoop上运行基于RMM中文分词算法的MapReduce程序

原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词算法的MapReduce程序 23条回复 我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文!其实不然,只是一份普通的实验报告,同时本文也不对RMM中文分词算法进行研究.这个实验报告是我做高性能计算课程的实验里提交的.所以,下面的内容是从我的实验报告里摘录出来的,当作是我学

棋牌源码搭建教程之棋牌游戏AI算法

棋牌游戏客户端实现采用Flash 9开发,服务端采用Win32+VC6开发(基于IOCP),数据库网关采用Win32+VC6开发(基于IOCP,MySQL5实现了处理线程池和数据库连接池).虽然服务器端去年就已经完成,但相应的机器人AI算法一直没有能力去实现.今天把它拿到Blog上来希望有机会和感兴趣的兄弟们探讨下. Kevin在他的Blog上给出了他的实现,其给出的算法思想是用宽度优先生成一棵搜索树,再根据玩牌的技巧进行剪枝与判权,机器人的AI能够像养成类游戏那样,实现在蹂躏下慢慢成长,水平逐

符号执行-基于python的二进制分析框架angr

转载:All Right 符号执行概述 在学习这个框架之前首先要知道符号执行.符号执行技术使用符号值代替数字值执行程序,得到的变量的值是由输入变 量的符号值和常量组成的表达式.符号执行技术首先由King在1976年提出 ,经过三十多年的发展,现在仍然被广泛研究,它在软件测试和程序验证中发挥着重 要作用.符号执行是一种重要的形式化方法和静态分析技术,它使用数学和逻辑 首先定义一些基本概念.程序的路径(path)是程序的一个语句序列,这个 语句序列包括程序的一些顺序的代码片段,代码片段之间的连接是由

算法抽象及用Python实现具体算法

一.算法抽象 它们一般是在具体算法的基础上总结.提炼.分析出来的,再反过来用于指导解决其它问题.它们适用于某一类问题的解决,用辩 证法的观点看,抽象的算法和具体的算法就是抽象与具体.普遍性与特殊性.共性和个性的关系.马是白马的抽象,无论是白马还是红 马,都是马,我们用马的唯一本质属性--染色体来决定一种动物是否是马,这个本质属性就是马的抽象. (1)分治法 分治法的基本思想是先分割原问题,将原问题分割成一个或多个简单的子问题,这些子问题的解经过一定组合得到原问题的解,而求 解这些子问题时,常常会

根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

1 background_image_filename = 'blackground.png' 2 black_mouse_image_filename = 'black.png' 3 white_mouse_image_filename = 'white.png' 4 restart_icon_filename='restart.png' 5 pingju_icon_filename='pingju.jpg' 6 win_icon_filename='win.jpg' 7 lose_icon_

Java进阶(五十七)-基于感知哈希算法的图像配准

Java进阶(五十七)-基于感知哈希算法的pHash图像配准算法 ??毕业论文提交之后,老师交给自己一项任务:图像配准,也就是给你两幅图像,通过系统来判定两幅图像是否为同一副图像.自己作为这一方面的小白,先去网上搜索一下相应的检测方法,当然有现成的API调用最好,花钱也无所谓. ??我们这里采用的基础关键技术叫做 "感知哈希算法"(Perceptual hash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同