提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

迷宫小游戏

  • 前言
  • 一、python是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
      • 2.1.游戏开始
      • 2.2.控制角色移动
      • 2.3.鼠标响应
    • 效果图
  • 总结

前言

迷宫游戏是非常经典的游戏,在该项目要求随机生成一个迷宫,并求解迷宫


提示:以下是本篇文章正文内容,下面案例可供参考

一、python是什么?

示例:Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

二、使用步骤

1.引入库

代码如下:

import pygame
import sys
import random
import time
from pygame.locals import *
from random import randint, choice
import maze
import color

2.读入数据

代码如下:

# 设置屏幕宽度和高度为全局变量
global screen_width
screen_width = 800
global screen_height
screen_height = 600# 输出文本信息
def print_text(font, x, y, text, color, shadow=True):if shadow:imgText = font.render(text, True, (0, 0, 0))screen.blit(imgText, (x-2,y-2))imgText = font.render(text, True, color)screen.blit(imgText, (x,y))

2.1.游戏开始

if __name__ == '__main__':pygame.init()screen = pygame.display.set_mode([screen_width, screen_height])pygame.display.set_caption('Maze_AI——by Wonz') # 游戏标题global font1, font2, font3, font4 # 文字clock = pygame.time.Clock()fps = 20screen.fill(color.White)r_list = maze.room.creat_map(maze.room_m, maze.room_n)begin_point = [0, 0]begin_room = r_list[0][0]maze.room.creat_migong(r_list, begin_room)# 画出去起点和终点的其他点for i in range(maze.room_m):for j in range(maze.room_n):begin_point[0] = 25 + i * maze.room_sizebegin_point[1] = 25 + j * maze.room_sizer_color = color.Blackmaze.room.draw_room(screen, begin_point, r_list[i][j].walls, maze.room_size, r_color)# 画起点maze.room.draw_room(screen, [25, 25], [0, 0, 0, 1], maze.room_size, color.White)# 画终点maze.room.draw_room(screen, [25 + (maze.room_m - 1) * maze.room_size, 25 + (maze.room_n - 1) * maze.room_size],[0, 1, 0, 0], maze.room_size, color.White)# 加载角色照片user = pygame.image.load("user.png").convert_alpha()width,height = user.get_size()user = pygame.transform.smoothscale(user, (8,8))# 画角色width, height = user.get_size()x = 27y = 30roomx = 0roomy = 0screen.blit(user, (x, y))

2.2.控制角色移动

    while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()# 走到终点elif(roomx == maze.room_m-1 and roomy == maze.room_n-1):font4 = pygame.font.Font(None, 32)print_text(font4, 350, 350, "Win" , color.Red)break# 键盘响应,只取按“→”键作为例子,“↑”、“↓”、“←”类似,只要改改参数即可elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:# 右边无墙if(r_list[roomx][roomy].walls[1] == False):x += maze.room_sizeroomx += 1 # 计房间数maze.steps += 1 # 计步font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25)) # x:25 y:0 width:200 height:25screen.fill(color.White, (300, 0, 200, 25))  # x:300 y:0 width:200 height:25print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)pygame.display.flip()screen.fill(color.White, (x-15,y,10,10))screen.blit(user, (x, y))# 右边有墙elif (r_list[roomx][roomy].walls[1] == True):maze.steps += 1font1 = pygame.font.Font(None, 32)font2 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))  # x:25 y:0 width:200 height:25print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)print_text(font2, 350, 0, "This is a wall!", color.Black)pygame.display.flip()screen.blit(user, (x, y))elif event.key == pygame.K_LEFT:# 左边无墙if (r_list[roomx][roomy].walls[3] == False):x -= maze.room_sizeroomx -= 1maze.steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))screen.fill(color.White, (300, 0, 200, 25))  # x:300 y:0 width:200 height:25print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)pygame.display.flip()screen.fill(color.White, (x+15,y,10,10))screen.blit(user, (x, y))# 左边有墙elif (r_list[roomx][roomy].walls[3] == True):maze.steps += 1font1 = pygame.font.Font(None, 32)font2 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)print_text(font2, 350, 0, "This is a wall!", color.Black)pygame.display.flip()screen.blit(user, (x, y))elif event.key == pygame.K_UP:# 上边无墙if (r_list[roomx][roomy].walls[0] == False):y -= maze.room_sizeroomy -= 1maze.steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))screen.fill(color.White, (300, 0, 200, 25))  # x:300 y:0 width:200 height:25print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)pygame.display.flip()screen.fill(color.White, (x,y+15,10,10))screen.blit(user, (x, y))# 上边有墙elif (r_list[roomx][roomy].walls[0] == True):maze.steps += 1font1 = pygame.font.Font(None, 32)font2 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)print_text(font2, 350, 0, "This is a wall!", color.Black)pygame.display.flip()screen.blit(user, (x, y))elif event.key == pygame.K_DOWN:# 下边无墙if (r_list[roomx][roomy].walls[2] == False):y += maze.room_sizeroomy += 1maze.steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))screen.fill(color.White, (300, 0, 200, 25))  # x:300 y:0 width:200 height:25print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)pygame.display.flip()screen.fill(color.White, (x,y-15,10,10))screen.blit(user, (x, y))# 下边无墙elif (r_list[roomx][roomy].walls[2] == True):maze.steps += 1font1 = pygame.font.Font(None, 32)font2 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))print_text(font1, 25, 0, "Steps:" + str(maze.steps), color.Black)print_text(font2, 350, 0, "This is a wall!", color.Black)pygame.display.flip()screen.blit(user, (x, y))

2.3.鼠标响应

    elif event.type == pygame.MOUSEBUTTONUP:font3 = pygame.font.Font(None, 32)print_text(font3, 750, 0, "AI", color.Red)pygame.display.flip()start_x = 0start_y = 0steps = 0for i in range(1000000000):if (start_x == maze.room_m-1 and start_y == maze.room_n-1):font4 = pygame.font.Font(None, 32)print_text(font4, 350, 350, "Win", color.Red)breakd = random.randint(1,4)# 上边无墙if (d == 1 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 andr_list[start_x][start_y].walls[0] == False): # 在迷宫地图范围内且上边无墙start_y -= 1steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))  # x:25 y:0 width:200 height:25screen.fill(color.White, (300, 0, 200, 25))  # x:300 y:0 width:200 height:25print_text(font1, 25, 0, "Steps:" + str(steps), color.Black) # 步数统计pygame.display.flip()screen.blit(user, ((start_x+2) * maze.room_size, (start_y+2) * maze.room_size))# 右边无墙if (d == 2 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 andr_list[start_x][start_y].walls[1] == False):start_x += 1steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))screen.fill(color.White, (300, 0, 200, 25))print_text(font1, 25, 0, "Steps:" + str(steps), color.Black)pygame.display.flip()screen.blit(user, ((start_x+2) * maze.room_size, (start_y+2) * maze.room_size))# 下边无墙if (d == 3 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 andr_list[start_x][start_y].walls[2] == False):start_y += 1steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))screen.fill(color.White, (300, 0, 200, 25))print_text(font1, 25, 0, "Steps:" + str(steps), color.Black)pygame.display.flip()screen.blit(user, ((start_x+2) * maze.room_size, (start_y+2) * maze.room_size))# 左边无墙if (d == 4 and 0 <= start_x <= maze.room_m - 1 and 0 <= start_y <= maze.room_n - 1 andr_list[start_x][start_y].walls[3] == False):start_x -= 1steps += 1font1 = pygame.font.Font(None, 32)screen.fill(color.White, (25, 0, 200, 25))screen.fill(color.White, (300, 0, 200, 25))print_text(font1, 25, 0, "Steps:" + str(steps), color.Black)pygame.display.flip()screen.blit(user, ((start_x+2) * maze.room_size, (start_y+2) * maze.room_size))

效果图

总结

请大家多多指教,如需源码请联系。

一个Python的迷宫小游戏相关推荐

  1. 一个Python猜字小游戏

    开始Python的学习已经有了一小段时间,同学进行java的编程上传,我一看挺有意思,也来凑凑热闹,也希望可以得到锻炼,希望各位大佬可以指正一下我的代码,或是展示展示大佬们的高超编码手艺,Python ...

  2. 记录第一个 python项目 外星人入侵小游戏

    学习目标:提升自己的编程能力## 标题 *> 可谓是一波三折 ,刚开始看的一本电子书 里面是python2.0的内容,我敲着在3系列的编译器试着2.0的代码可谓好不酸爽 那报错 绝了 学习内容: ...

  3. Python游戏开发,pygame模块,Python实现过迷宫小游戏

    前言 今天为大家带来解闷用的过迷宫小游戏分享给大家好了.让我们愉快地开始吧~ 效果展示 开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境 ...

  4. python迷宫小游戏大全_Python迷宫小游戏源代码、源程序

    Python迷宫小游戏源程序包括两个文件maze.py和mazeGenerator.py,mazeGenerator.py实现迷宫地图的生成,程序运行截图: mazeGenerator.py impo ...

  5. python迷宫小游戏代码_6.1 | 童年的游戏,Python一行代码就能玩

    作者 | 刘早起来源 | 早起Python 大家好,儿童节就要来了,虽然秃头程序员没有头发,但是童心还是一直都在的,今天就分享一个私藏的GitHub项目--free-python-games,一行代码 ...

  6. python迷宫小游戏

    一款基于 Python + Pygame + AI算法 的 迷宫小游戏 (一)课题内容 实现走迷宫. 主要功能为界面显示.上下左右键的响应以及当前步数统计. 通过该课题全面熟悉数组.字符串等的使用,掌 ...

  7. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  8. python井字棋游戏人机对战_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  9. 分享一个C语言矿井逃生迷宫小游戏【附源码】

    用C语言写的一个迷宫小游戏,游戏玩法是通过鼠标控制帽子上的灯走出迷宫 // 定义常量 #define PI 3.141592653589 // 圆周率 #define UNIT_GROUND 0 // ...

最新文章

  1. pandas使用insert函数将dataframe特定数据列移动到第一列实战:Move a Column to First Position
  2. 机器视觉学习笔记:BP神经网络详解
  3. B/S系统常见缺陷整理和解决方案
  4. 苹果服务器消息转发,iOS 消息推送原理及简单实现
  5. 图像增强——基于OpenCV的图像色彩增强
  6. 工作流调度系统介绍,常见工作流调度系统对比,azkaban与Oozie对比,Azkaban介绍与特性(来自学习笔记)
  7. 通读AFN②--AFN的上传和下载功能分析、SessionTask及相应的session代理方法的使用细节...
  8. 45. 跳跃游戏 II golang 动态规划
  9. Matlab对指定参数的曲线进行非线性拟合
  10. Unity动画系统详解5:BlendTree混合树是什么?
  11. 修改服务器控件的ID和Name
  12. STM32学习心得一:FlyMcu软件配置(STM32串口下载软件)
  13. [讲课视频]谈谈C/C++中的整数
  14. AIR是什么?.air文件如何打开?flex如何运行air文件
  15. 三分钟带你快速看懂电子数据取证! | 打击网络犯罪必备知识
  16. 07 Java 工程师面试技巧篇
  17. halcon中的分水岭算法讲解以及作用和实例
  18. XQ6657Z35-EVM 的DSP + ZYNQ核心板,SRIO通讯
  19. 多媒体——音频——利用MediaRecorder录制音频
  20. 读王蒙的《庄子的快活》

热门文章

  1. 制作一个简单的chrome插件
  2. 工程建设项目综合信息管理系统
  3. Dp-状态压缩:玉米田
  4. Java后端使用Freemarker导出word文档的各种细节
  5. Cannot connect to the Maven process.Try again later.If the problem persists...
  6. 如何理解同震、震后、震间的含义
  7. T100学习笔记 - Genero FGL
  8. 电商数据分析--用户行为分析
  9. 威斯康星大学-深度学习和生成模型导论2021
  10. Macbook Pro(MBP)上固态硬盘SSD,光驱位装HDD