介绍模块
本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个迷宫,迷宫可以自定义,出入口,通过移动来逃离迷宫,走到出口,看看这个是你小时候玩的游戏吗?
最小开发框架
详情请看此文章:
Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客
Pygame和sys模块
import pygame # 制作游戏时要使用的模块
import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块
random模块
需要在屏幕上随机生成食物的位置,通过随机一个位置来表示食物的位置
from random import randint
详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客
相关功能
【童年游戏】求解迷宫
定义迷宫
定义玩家需要走的迷宫,其中I表示入口,O表示出口
maze = [
"############",
"#I #",
"# ## ### #",
"# # #",
"# # ## # #",
"# # #",
"# ### ## # #",
"# ## #",
"# # # # #",
"## # ## #",
"# # #O # ###",
"############"
]
绘制迷宫
将迷宫进行显示,画出出入口和边界
def draw_maze():
for y in range(len(maze)):
for x in range(len(maze[y])):
if maze[y][x] == "#":
pygame.draw.line(win, BLACK, (x*cell_size, y*cell_size), (x*cell_size+cell_size, y*cell_size), 2) # 上边界
pygame.draw.line(win, BLACK, (x*cell_size, y*cell_size+cell_size), (x*cell_size+cell_size, y*cell_size+cell_size), 2) # 下边界
pygame.draw.line(win, BLACK, (x*cell_size, y*cell_size), (x*cell_size, y*cell_size+cell_size), 2) # 左边界
pygame.draw.line(win, BLACK, (x*cell_size+cell_size, y*cell_size), (x*cell_size+cell_size, y*cell_size+cell_size), 2) # 右边界
# 绘制入口和出口
for y in range(len(maze)):
for x in range(len(maze[y])):
if maze[y][x] == "I":
pygame.draw.rect(win, GREEN, (x*cell_size, y*cell_size, cell_size, cell_size))
font = pygame.font.Font(None, int(cell_size*0.6))
text = font.render('IN', True, (255, 255, 255))
win.blit(text, (x*cell_size+int(cell_size*0.2), y*cell_size+int(cell_size*0.2)))
elif maze[y][x] == "O":
pygame.draw.rect(win, GREEN, (x*cell_size, y*cell_size, cell_size, cell_size))
font = pygame.font.Font(None, int(cell_size*0.6))
text = font.render('OUT', True, (255, 255, 255))
win.blit(text, (x*cell_size+int(cell_size*0.1), y*cell_size+int(cell_size*0.2)))
键盘移动
使用键盘来控制移动方向
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
if maze[player_pos[1]][player_pos[0]-1] != "#":
player_pos[0] -= 1
elif event.key == pygame.K_RIGHT:
if maze[player_pos[1]][player_pos[0]+1] != "#":
player_pos[0] += 1
elif event.key == pygame.K_UP:
if maze[player_pos[1]-1][player_pos[0]] != "#":
player_pos[1] -= 1
elif event.key == pygame.K_DOWN:
if maze[player_pos[1]+1][player_pos[0]] != "#":
player_pos[1] += 1
图片界面
扩展可添加功能
1.修改墙壁(边界)样式
2.增加更加复杂的迷宫
3.增加关卡
4.增加音效
5.增加背景
源码获取
PyGame/求解迷宫 at main · mzc421/PyGame (github.com)
欢迎关注我的公众号:@AI算法与电子竞赛
硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!