Python写一个双人赛车小游戏
时间: 2024-02-16 09:52:28 浏览: 27
好的,这里提供一个简单的双人赛车小游戏的示例代码:
```python
import pygame
import random
# 初始化游戏
pygame.init()
# 设置游戏窗口大小和标题
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("双人赛车")
# 加载赛车和障碍物图片
car_img = pygame.image.load("car.png")
obstacle_img = pygame.image.load("obstacle.png")
# 定义赛车和障碍物的类
class Car:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 0
def update(self):
# 根据速度更新赛车位置
self.y -= self.speed
# 碰到窗口边缘时,弹回去
if self.x < 0:
self.x = 0
elif self.x > screen_width - car_img.get_width():
self.x = screen_width - car_img.get_width()
# 显示赛车
screen.blit(car_img, (self.x, self.y))
def move_left(self):
self.x -= 20
def move_right(self):
self.x += 20
class Obstacle:
def __init__(self, x, y):
self.x = x
self.y = y
def update(self):
# 根据速度更新障碍物位置
self.y += 10
# 显示障碍物
screen.blit(obstacle_img, (self.x, self.y))
def collide(self, car):
# 判断赛车是否与障碍物相撞
car_rect = pygame.Rect(car.x, car.y, car_img.get_width(), car_img.get_height())
obstacle_rect = pygame.Rect(self.x, self.y, obstacle_img.get_width(), obstacle_img.get_height())
return car_rect.colliderect(obstacle_rect)
# 定义游戏循环
clock = pygame.time.Clock()
car1 = Car(screen_width//4 - car_img.get_width()//2, screen_height - car_img.get_height() - 50)
car2 = Car(screen_width//4*3 - car_img.get_width()//2, screen_height - car_img.get_height() - 50)
obstacles = []
score1 = 0
score2 = 0
font = pygame.font.SysFont(None, 48)
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
car1.move_left()
elif event.key == pygame.K_RIGHT:
car1.move_right()
elif event.key == pygame.K_a:
car2.move_left()
elif event.key == pygame.K_d:
car2.move_right()
# 渲染背景
screen.fill((255, 255, 255))
pygame.draw.line(screen, (0, 0, 0), (screen_width//2, 0), (screen_width//2, screen_height), 5)
# 更新赛车和障碍物
car1.update()
car2.update()
for obstacle in obstacles:
obstacle.update()
# 添加障碍物
if random.randint(0, 50) == 0:
obstacles.append(Obstacle(random.randint(0, screen_width - obstacle_img.get_width()), 0))
# 判断赛车是否与障碍物相撞
for obstacle in obstacles:
if obstacle.collide(car1):
score2 += 1
obstacles.remove(obstacle)
elif obstacle.collide(car2):
score1 += 1
obstacles.remove(obstacle)
# 显示分数
score_text = font.render(f"{score1} : {score2}", True, (0, 0, 0))
screen.blit(score_text, (screen_width//2 - score_text.get_width()//2, 20))
# 更新屏幕
pygame.display.update()
# 控制游戏帧率
clock.tick(60)
```
在运行游戏前,需要先准备好 `car.png` 和 `obstacle.png` 两张图片,放在与代码同一目录下。
运行代码后,可以使用键盘上的方向键和字母键 A、D 来控制两辆赛车移动。两个玩家的分数会显示在游戏窗口上方。如果一辆赛车撞到了障碍物,对应的玩家分数将增加。