[Python] 纯文本查看 复制代码 import pygame
import random
import time
# 初始化 Pygame
pygame.init()
# 屏幕尺寸
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("躲避陨石")
# 颜色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0) # 定义红色
# 玩家
player_size = 50
player_x = screen_width // 2 - player_size // 2
player_y = screen_height - player_size - 10
player_speed = 2 # 进一步降低玩家速度
# 陨石
meteor_size = 30
meteor_speed = 1 # 进一步降低陨石速度
meteors = []
# 分数和时间
score = 0
font = pygame.font.Font(None, 36)
start_time = time.time()
game_duration = 300 # 5 分钟 = 300 秒
# 游戏主循环
running = True
win = False
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 玩家移动
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < screen_width - player_size:
player_x += player_speed
# 陨石移动和生成
for i in range(len(meteors) - 1, -1, -1):
meteors[i][1] += meteor_speed
if meteors[i][1] > screen_height:
meteors.pop(i)
score += 1
if random.randint(0, 75) == 0:
meteor_x = random.randint(0, screen_width - meteor_size)
meteors.append([meteor_x, -meteor_size])
# 碰撞检测
for meteor in meteors:
if (
player_x < meteor[0] + meteor_size
and player_x + player_size > meteor[0]
and player_y < meteor[1] + meteor_size
and player_y + player_size > meteor[1]
):
running = False
# 时间和胜利条件
elapsed_time = int(time.time() - start_time)
remaining_time = game_duration - elapsed_time
if remaining_time <= 0:
running = False
win = True
# 绘制
screen.fill(black)
pygame.draw.rect(screen, white, (player_x, player_y, player_size, player_size))
for meteor in meteors:
|