【Pygame小游戏】Python版有迷宫嘛?原来藏在个地方呀~

本文介绍如何使用Python的Pygame模块制作简易和复杂的迷宫游戏,包括环境准备、关键代码展示及游戏效果,带领读者体验编程的乐趣。
摘要由CSDN通过智能技术生成

💦前言

图片

大家好,是我:

一大早高清无码好东西刚到手

就给大家安排推文的栗子同学上线·放牛小编——一切随缘更新+慢更新的我!

决心痛改前非,每周争取能多写几篇。(这个flag立在这里,完不成......那就算了!)

大家有时候会和朋友聊聊孩子,说起能让孩子心无旁骛的制胜法宝,我想大家应该一致认为“迷宫”

必须当选其一👏。迷宫类游戏也是大家闲暇实践之中消磨时间的法宝。

嘿!boys  and   girs——今天栗子给大家带来一波有趣好玩的走迷宫小程序。

图片

💦 正文

图片

游戏规则:顾名思义,玩家出现在迷宫的外面,进入之后要在很多不同的路中间找到一条可以抵达

终点的路,可以发反复的尝试,能走到终点就是胜利,当人你如果在迷宫中迷路了,就走不出来会

失败。迷宫游戏则倾向于吸引那些更有兴趣解决谜题和迎接挑战的人群。

1)需要做哪些准备呢?

本文的游戏迷宫是2个单独的迷宫组合而成的,一个简单的迷宫,一个难的迷宫。

环境安装的话:Python3、Pycharm、Pygame模块。

模块安装:pip  install  pygame

2)代码(仅部分)

简易版主程序:


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


# 设置屏幕宽度和高度为全局变量
global screen_width
screen_width = 800
global screen_height
screen_height = 800
room_size = 15 # 每个房间的大小
steps = 0


# 输出文本信息
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))


# 存储迷宫
r_list = mapp.map_list


# 游戏开始
if __name__ == '__main__':
    # 初始化 Pygame
    pygame.init()
    screen = pygame.display.set_mode([screen_width, screen_height])
    pygame.display.set_caption('Maze_AI——by Wonz')
    global font1, font2, font3

    clock = pygame.time.Clock()
    fps = 20
    screen.fill(color.White)


    # 加载角色照片
    user = pygame.image.load("user.png").convert_alpha()
    width, height = user.get_size()
    user = pygame.transform.smoothscale(user, (8, 8))
    # draw the user
    width, height = user.get_size()
    x = 25 + 42 * room_size
    y = 25 + 9 * room_size
    roomx = 42
    roomy = 9
    screen.blit(user, (x, y))


    # 画迷宫
    for i in range(43):
        for j in range(42):
            if (r_list[j][i] == 3):
                pygame.draw.circle(screen, color.Red, [30 + i * room_size, 30 + j * room_size], 5, 0)
                pygame.display.flip()
                r_list[j][i] = 0
            elif (r_list[j][i] == 1):
                # 画10*10的矩形,线宽为1,这里不能是0,因为10*10无空白区域
                pygame.draw.rect(screen, color.Black, [25 + i * room_size, 25 + j * room_size, 10, 10], 0)
                pygame.display.flip()
            elif (r_list[j][i] == 0):
                pygame.draw.rect(screen, color.White, [25 + i * room_size, 25 + j * room_size, 10, 10], 1)
                pygame.display.flip()


    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            # 走到终点
            elif(roomx == 0 and roomy == 9):
                font3 = pygame.font.Font(None, 32)
                print_text(font3, 350, 350, "Win", color.Red)
                break
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    # 右边无墙
                    if(0 <= roomx < 42 and 0 <= roomy <= 41 and r_list[roomy][roomx+1] == 0):
                        x += room_size
                        roomx += 1 # 计房间数
                        steps += 1 # 计步
                        font1 = pygame.font.Font(None, 32)
                        screen.fill(color.White, (25, 0, 200, 25)) # x:25 y:0 width:200 height:25
                        screen.fill(color.White, (300, 0, 200, 25))  # x:300 y:0 width:200 height:25
                        print_text(font1, 25, 0, "Steps:" + str(steps), color.Black)
                        pygame.display.flip()
                        screen.fill(color.White, (x-room_size, y, 10, 10))
                        screen.blit(user, (x, y))
                    # 右
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值