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

时间: 2024-10-08 14:31:11

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

python写的第一个简单小游戏-猜数字

1 #Filename:game1.py 2 3 guess=10 4 running=True 5 while running: 6 try: 7 answer=int(raw_input('Guess what i think:')) 8 except: 9 print 'Please input interga\n' 10 continue 11 12 if answer<guess: 13 print 'Your answer is too small\n' 14 continue 15

Python基础入门-实现猜数字小游戏

今天呢,我们来通过前面学过的一些知识点来完成一个猜数字大小的游戏程序设计.那么呢,一般人写代码直接上来就干,没有分析,这样的做法是没有产出的,除非你是大牛,今天呢,我会把我学习编程的思路分享给大家,我的思路可能不是最好的,但是一定可以给你一点点的启发,来,让我们看一下这个写这个小程序该怎么去分析呢? 需求分析:用python实现一个猜数字的小游戏(场景可以自拟)这里我给出的需求是,我们还是先看一下流程图吧! 程序分析流程图: 分析思路: 1.如果设置默认值也就是结果数字,那么请输出"I"

零基础python教程-用Python设计你的第一个小游戏

学以致用,既然学习了python就要让它来实现我们想做的东西,这次咱就用python来做个简单小游戏,在实践中不断成长. 1.游戏代码: 输入数字,来猜测原作者心中所想的数字,猜中夸你,猜不中不夸你,游戏结束. 建议上面的代码,手工打一次,你会发现那些单词并没有看到的那么容易看.以下为翻译代码 2.tab缩进 tab有两种功能,一种是缩进(也可用空格来表示,tab在不同的编辑器里面可能是2个空格,4个空格或是8,要留意这个问题.),如上述代码中4,6行代码为缩进,来表明属于一个模块.另一种是在i

Python实现的QQ空间3366小游戏彩色砖块的辅助工具

由于女朋友每天玩这个小游戏,每天挑战我……囧,只好写了一个辅助工具帮我自动满分,最后的结果是大家一起满分……本人不是程序员,请大家指正. 主要使用了PIL模块和pymouse模块,一个做图像识别,另一个做自动点击,这个小工具只在我的电脑,Python2.5+XP下测试通过. # -*- coding: utf-8 -*- #这是一个QQ空间3366小游戏中的彩色砖块游戏的辅助工具 #他可以帮你自动计算一种正确的算法,保证你得200分! #使用时不能有任何窗口遮挡游戏界面,同时也不能做其他操作 #

基于Python &amp; Opencv 图像处理算法

Alg1:图像数据格式之间相互转换.png to .jpg(其他的请举一反三) 1 import cv2 2 import glob 3 4 def png2jpg(): 5 images = glob.glob('*.png') # 获取当前路径下的所有后缀名为.png的文件 6 count = 0 # 不断累加,提供输出图像名称 7 for i in images: 8 print('Picture %d is Processing...' % count) 9 I = cv2.imread

Python第07周:一个小游戏

本篇严重参考Julian Meyer发表的文章:Beginning Game Programming for Teens with Python 本次作业将创建一个简单的游戏叫做英雄兔ver0.1版: 游戏背景: 在这里作为英雄的兔子要保卫城堡,它必须能够移动和射击反击敌人(关于敌人我们在后续章再添加,那时你已经能看懂大部分代码了). # 设计步骤 # 第一步:Hello Bunny(嘿,兔子)# 第二步:添加布景# 第三步:让兔子动起来# 第四步: 旋转兔子# 第五步:射击吧,兔子!# V0.

Python 项目实践一(外星人入侵小游戏)第二篇

接着上次的继续学习. 一 创建一个设置类 每次给游戏添加新功能时,通常也将引入一些新设置.下面来编写一个名为settings的模块,其中包含一个名为Settings的类,用于将所有设置存储在一个地方,以免在代码中到处添加设置.这样,我们就能传递一个设置对象,而不是众多不同的设置.另外,这让函数调用更简单,且在项目增大时修改游戏的外观更容易:要修改游戏,只需修改settings.py中的一些值,而无需查找散布在文件中的不同设置下面是最初的Settings类: class Settings(): '

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

python 初学--第一个猜数字小游戏

import random num = random.randint(0,100) print num times = 0 print "Number[0,100] guess game" print "You will have 10 times to guess" print "Guess out of range will game over immediately!" guess = int(raw_input("guess a