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
相关产品推荐
相关产品推荐

