在这个示例中,我们使用了 Pygame 库来创建游戏窗口、处理游戏事件、绘制游游戏画面等。具体来说,我们定义了 Car
和 Obstacle
两个类来表示游戏中的车辆和障碍物,这两个类都继承自 Pygame 中的 Sprite
类,这样我们就可以很方便地使用 Pygame 提供的碰撞检测等功能。在 Car
类中,我们定义了 move_left
、move_right
和 stop
方法来控制车辆的移动,而在 Obstacle
类中,我们定义了 update
方法来更新障碍物的位置。
以下是一个简单的 Python 赛车游戏代码示例:
import pygame import random # 初始化 pygame pygame.init() # 设置游戏窗口大小 WIDTH, HEIGHT = 640, 480 WINDOW_SIZE = (WIDTH, HEIGHT) # 创建游戏窗口 screen = pygame.display.set_mode(WINDOW_SIZE) # 设置游戏标题 pygame.display.set_caption("赛车游戏") # 设置游戏时钟 clock = pygame.time.Clock() # 定义车辆类 class Car(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.image.load("car.png").convert_alpha() self.rect = self.image.get_rect() self.rect.center = (WIDTH // 2, HEIGHT - 50) self.speed = 0 def update(self): self.rect.x += self.speed if self.rect.left < 0: self.rect.left = 0 elif self.rect.right > WIDTH: self.rect.right = WIDTH def move_left(self): self.speed = -5 def move_right(self): self.speed = 5 def stop(self): self.speed = 0 # 定义障碍物类 class Obstacle(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.image.load("obstacle.png").convert_alpha() self.rect = self.image.get_rect() self.rect.center = (random.randint(0, WIDTH), random.randint(-100, 0)) def update(self): self.rect.y += 5 if self.rect.top > HEIGHT: self.rect.center = (random.randint(0, WIDTH), random.randint(-100, 0)) # 加载游戏资源 car_image = pygame.image.load("car.png").convert_alpha() obstacle_image = pygame.image.load("obstacle.png").convert_alpha() # 创建车辆对象 car = Car() # 创建障碍物组 obstacles = pygame.sprite.Group() for i in range(10): obstacle = 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: car.move_left() elif event.key == pygame.K_RIGHT: car.move_right() elif event.type == pygame.KEYUP: if event.key == pygame.K_LEFT and car.speed < 0: car.stop() elif event.key == pygame.K_RIGHT and car.speed > 0: car.stop() # 更新游戏状态 car.update() obstacles.update() # 绘制游戏画面 screen.fill((255, 255, 255)) screen.blit(car.image, car.rect) for obstacle in obstacles: screen.blit(obstacle.image, obstacle.rect) pygame.display.update() # 检测碰撞 if pygame.sprite.spritecollide(car, obstacles, False): running = False # 控制游戏帧率 clock.tick(60) # 退出游戏 pygame.quit()
在游戏循环中,我们首先处理游戏事件,包括退出事件和键盘事件。如果玩家按下左箭头键或右箭头键,就调用车辆对象的 move_left
或 move_right
方法来移动车辆;如果玩家松开键盘,则调用车辆对象的 stop
方法停止车辆。接着,我们更新车辆和障碍物的位置,并绘制游戏画面。在绘制游戏画面时,我们先用白色填充整个游戏窗口,然后分别绘制车辆和障碍物。最后,我们使用 Pygame 提供的碰撞检测功能来检测车辆是否与障碍物碰撞,如果有碰撞,则退出游戏循环。
需要注意的是,在游戏循环中我们使用了 clock.tick(60)
来控制游戏帧率,这样可以让游戏在不同的设备上都以相同的速度运行。
以上是一个简单的 Python 赛车游戏代码示例,你可以在此基础上进行修改和扩展,实现更加丰富的游戏玩法和特效。
评论