找回密码
 中文实名注册
搜索
查看: 868|回复: 2

躲避陨石小游戏

[复制链接]

11

主题

13

回帖

847

积分

高级会员

积分
847
发表于 2025-7-4 16:22:34 | 显示全部楼层 |阅读模式
[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:

   


回复

使用道具 举报

11

主题

13

回帖

847

积分

高级会员

积分
847
 楼主| 发表于 2025-7-4 16:36:24 | 显示全部楼层
这一个有错误,玩另一个。
回复

使用道具 举报

1

主题

29

回帖

119

积分

注册会员

积分
119
发表于 2025-7-8 18:43:50 | 显示全部楼层
:@:@:@:@:@
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

快速回复 返回顶部 返回列表