写个开车小游戏代码
以下是一个简单的开车小游戏代码示例:
import pygame
import random
# 初始化pygame
pygame.init()
# 游戏窗口大小
WINDOW_WIDTH = 500
WINDOW_HEIGHT = 600
# 颜色定义
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# 创建游戏窗口
game_window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("开车小游戏")
# 加载图片
car_image = pygame.image.load("car.png")
car_width = car_image.get_width()
car_height = car_image.get_height()
# 设置游戏字体
font = pygame.font.SysFont(None, 40)
# 定义函数:显示文字
def show_text(text, color, x, y):
text_surface = font.render(text, True, color)
game_window.blit(text_surface, (x, y))
# 定义函数:随机生成障碍物位置
def get_obstacle_pos():
x = random.randint(50, WINDOW_WIDTH - 50)
y = -50
return x, y
# 定义函数:游戏主循环
def game_loop():
# 车辆初始位置
car_x = WINDOW_WIDTH / 2 - car_width / 2
car_y = WINDOW_HEIGHT - car_height - 20
# 障碍物列表
obstacles = []
# 游戏分数
score = 0
# 游戏结束标志
game_over = False
# 游戏主循环
while not game_over:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
# 获取键盘输入
keys = pygame.key.get_pressed()
# 车辆移动
if keys[pygame.K_LEFT] and car_x > 0:
car_x -= 5
if keys[pygame.K_RIGHT] and car_x < WINDOW_WIDTH - car_width:
car_x += 5
# 更新障碍物位置
for i, obstacle in enumerate(obstacles):
obstacle[1] += 5
if obstacle[1] > WINDOW_HEIGHT:
# 删除已经超出屏幕的障碍物
obstacles.pop(i)
score += 1
# 添加新障碍物
if len(obstacles) < 5:
obstacle_x, obstacle_y = get_obstacle_pos()
obstacles.append([obstacle_x, obstacle_y])
# 碰撞检测
for obstacle in obstacles:
if car_x < obstacle[0] + 50 and car_x + car_width > obstacle[0] and car_y < obstacle[1] + 50 and car_y + car_height > obstacle[1]:
game_over = True
# 绘制游戏窗口
game_window.fill(WHITE)
game_window.blit(car_image, (car_x, car_y))
for obstacle in obstacles:
pygame.draw.rect(game_window, RED, (obstacle[0], obstacle[1], 50, 50))
show_text("Score: " + str(score), BLACK, 10, 10)
pygame.display.update()
# 退出游戏
pygame.quit()
quit()
# 启动游戏
game_loop()
该小游戏包含以下功能:
- 通过左右箭头键控制车辆移动;
- 随机生成障碍物并在屏幕上滚动;
- 当车辆与障碍物碰撞时游戏结束;
- 显示游戏分数。
原文地址: http://www.cveoy.top/t/topic/bxSm 著作权归作者所有。请勿转载和采集!