这段代码创建了一个简单的灵魂斗罗游戏,玩家通过方向键控制角色移动,角色不能移出屏幕边界。游戏结束时,按下关闭按钮或者窗口的关闭按钮,游戏将结束,并且清理pygame资源。
import pygame
import sys
# 初始化pygame
pygame.init()
# 设置窗口大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置窗口标题
pygame.display.set_caption('灵魂斗罗')
# 定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# 定义角色类
class Player(pygame.sprite.Sprite):
def __init__(self, color, width, height):
super().__init__()
self.image = pygame.Surface((width, height))
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.center = (screen_width / 2, screen_height / 2)
self.speed = 5
def update(self):
# 通过按键状态移动角色
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
self.rect.centery -= self.speed
elif keys[pygame.K_DOWN]:
self.rect.centery += self.speed
if keys[pygame.K_LEFT]:
self.rect.centerx -= self.speed
elif keys[pygame.K_RIGHT]:
self.rect.centerx += self.speed
# 保持角色在屏幕内
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > screen_width:
self.rect.right = screen_width
if self.rect.top < 0:
self.rect.top = 0
if self.rect.bottom > screen_height:
self.rect.bottom = screen_height
# 创建玩家
player = Player(RED, 20, 20)
# 游戏主循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 更新玩家状态
player.update()
# 清除屏幕
screen.fill(BLACK)
# 绘制玩家
screen.blit(player.image, player.rect)
# 更新屏幕显示
pygame.display.flip()
# 游戏结束,关闭pygame
pygame.quit()
sys.exit()