Pygame游戏实战七:求解迷宫

介绍模块

本游戏使用的是由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算法与电子竞赛    

​​​

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

猜你喜欢

转载自blog.csdn.net/qq_48764574/article/details/134631220