简单跳跃障碍物游戏

import pygame
import random

初始化pygame

pygame.init()

设置屏幕大小

screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

设置颜色

black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)

设置游戏标题

pygame.display.set_caption("简单平台跳跃游戏")

设置帧率

clock = pygame.time.Clock()
fps = 30

玩家类

class Player(pygame.sprite.Sprite):
def init(self):
super().init()
self.image = pygame.Surface((40, 60))
self.image.fill(green)
self.rect = self.image.get_rect()
self.rect.x = 100
self.rect.y = screen_height - 60
self.change_x = 0
self.change_y = 0
self.gravity = 1
self.jump_height = -15

def update(self):
    self.rect.x += self.change_x
    self.rect.y += self.change_y
    self.change_y += self.gravity

    # 碰到地面停止下落
    if self.rect.y >= screen_height - 60:
        self.rect.y = screen_height - 60
        self.change_y = 0

def jump(self):
    if self.rect.y == screen_height - 60:
        self.change_y = self.jump_height

平台类

class Platform(pygame.sprite.Sprite):
def init(self, width, height, x, y):
super().init()
self.image = pygame.Surface((width, height))
self.image.fill(black)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y

障碍物类

class Obstacle(pygame.sprite.Sprite):
def init(self, width, height, x, y):
super().init()
self.image = pygame.Surface((width, height))
self.image.fill(red)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y

创建精灵组

all_sprites = pygame.sprite.Group()
platforms = pygame.sprite.Group()
obstacles = pygame.sprite.Group()

创建玩家

player = Player()
all_sprites.add(player)

创建地面

ground = Platform(screen_width, 60, 0, screen_height - 60)
all_sprites.add(ground)
platforms.add(ground)

创建障碍物

for _ in range(5):
obstacle = Obstacle(40, 60, random.randint(100, screen_width - 100), screen_height - 60)
all_sprites.add(obstacle)
obstacles.add(obstacle)

游戏主循环

running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.change_x = -5
elif event.key == pygame.K_RIGHT:
player.change_x = 5
elif event.key == pygame.K_SPACE:
player.jump()
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
player.change_x = 0

# 更新精灵
all_sprites.update()

# 检测碰撞
if pygame.sprite.spritecollide(player, obstacles, False):
    print("游戏结束!")
    running = False

# 绘制屏幕
screen.fill(white)
all_sprites.draw(screen)

       # 更新屏幕
pygame.display.flip()

# 控制帧率
clock.tick(fps)

退出游戏

pygame.quit()

posted @ 2025-06-21 10:49  不要命的蛋  阅读(37)  评论(0)    收藏  举报