You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame躲避类游戏实现右侧生成4-6随机速度障碍物的方法

实现方案

1. 编写障碍物类 assets/trash.py

import pygame
import random

class Trash:
    def __init__(self, screen_width, screen_height):
        # 替换为你实际的障碍物图片路径
        self.img = pygame.image.load('images/trash/obstacle.png').convert_alpha()
        self.rect = self.img.get_rect()
        # 初始位置在屏幕右侧外
        self.rect.x = screen_width
        # Y轴位置随机,保证障碍物完全在屏幕范围内
        self.rect.y = random.randint(0, screen_height - self.rect.height)
        # 移动速度在4-6区间随机
        self.move_speed = random.randint(4, 6)
    
    def update(self, screen):
        # 向左移动
        self.rect.x -= self.move_speed
        # 渲染障碍物到屏幕
        screen.blit(self.img, self.rect)
        # 返回障碍物是否移出屏幕左侧,用于主程序清理无效对象
        return self.rect.right < 0

2. 修改主游戏脚本

新增导入

在主脚本顶部的导入区域添加:

from assets.trash import Trash

新增障碍物相关变量

在主脚本的Important Variables区域添加:

# 障碍物存储列表
obstacle_list = []
# 障碍物生成间隔,单位为毫秒,1500即1.5秒生成一个,可根据难度调整
SPAWN_INTERVAL = 1500
last_spawn_time = pygame.time.get_ticks()

主循环新增障碍物逻辑

在主循环的screen.blit(bg_game_surface, (0, 0))之后、player.update(screen)之前添加如下代码:

# 定时生成新障碍物
    current_time = pygame.time.get_ticks()
    if current_time - last_spawn_time >= SPAWN_INTERVAL:
        obstacle_list.append(Trash(SCREEN_WIDTH, SCREEN_HEIGHT))
        last_spawn_time = current_time

    # 更新所有障碍物,清理移出屏幕的对象
    for obstacle in obstacle_list[:]:
        off_screen = obstacle.update(screen)
        if off_screen:
            obstacle_list.remove(obstacle)
        # 可选:碰撞检测逻辑,碰到障碍物直接结束游戏,可替换为你自己的游戏结束逻辑
        if obstacle.rect.colliderect(player.rect):
            run = False

注意:请将Trash类中加载图片的路径替换为你实际存放障碍物图片的路径,确保文件存在即可正常运行。

内容的提问来源于stack exchange,提问作者JajasPer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:15:01