pygame基本多关卡迷宫游戏核心代码

"""pygame基本多关卡迷宫游戏核心代码.py,运行本程序可以操作一个小方块从一个房间移到另一个房间,碰到了“墙壁”就不能前进。"""

import pygame
 
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
PURPLE = (255, 0, 255) 
 
class Wall(pygame.sprite.Sprite):
    """墙类,代表方块障碍物"""
 
    def __init__(self, x, y, width, height, color): 
 
        # 调用父类的初始方法
        super().__init__() 
        # 根据指定的宽高参数新建图层
        self.image = pygame.Surface([width, height])
        self.image.fill(color) 
        # 新建矩形对象,以左上角为它的坐标
        self.rect = self.image.get_rect()
        self.rect.y = y
        self.rect.x = x 
 
class Player(pygame.sprite.Sprite):
    """ 玩家通过方向箭头控制的角色 """ 
 
    def __init__(self, x, y):
        super().__init__()
 
        # 玩家控制的角色是个白色的小方块
        self.image = pygame.Surface([15, 15])
        self.image.fill(WHITE)
 
        # 新建矩形对象,以左上角为它的坐标.
        self.rect = self.image.get_rect()
        self.rect.y = y
        self.rect.x = x

        self.change_x = 0  # 水平速度
        self.change_y = 0  # 垂直速度
    def changespeed(self, x, y):
        """ 通过按键改变速度的值 """
        self.change_x += x
        self.change_y += y
 
    def move(self, walls):
        """ 改变角色的x,y坐标 """ 
        # 左右移动
        self.rect.x += self.change_x
 
        # 碰到墙的检测
        block_hit_list = pygame.sprite.spritecollide(self, walls, False)
        for block in block_hit_list:
            # 往右移,碰到了墙,那以把最右x坐标设为方块的最左x坐标
            if self.change_x > 0:
                self.rect.right = block.rect.left
            else:
                # 否则就是在往左移,把自己的最左x坐标设为方块的最右x坐标
                self.rect.left = block.rect.right
 
        # 上下移动
        self.rect.y += self.change_y
 

You must log in to read the rest of this article. Please log in or register as a user.