python滑雪小游戏代码
时间: 2023-07-22 09:40:45 浏览: 232
以下是一个简单的 Python 滑雪小游戏代码,可以供您参考:
```python
import pygame
import random
# 初始化 Pygame
pygame.init()
# 游戏屏幕大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
SCREEN_SIZE = (SCREEN_WIDTH, SCREEN_HEIGHT)
# 设置游戏屏幕
screen = pygame.display.set_mode(SCREEN_SIZE)
pygame.display.set_caption("滑雪小游戏")
# 加载游戏背景图片
bg_img = pygame.image.load("bg.jpg").convert()
# 加载滑雪者图片
skier_img = pygame.image.load("skier.png").convert_alpha()
skier_rect = skier_img.get_rect()
# 初始位置
skier_rect.left = SCREEN_WIDTH // 2
skier_rect.top = SCREEN_HEIGHT // 2
# 加载树和旗子图片
tree_img = pygame.image.load("tree.png").convert_alpha()
flag_img = pygame.image.load("flag.png").convert_alpha()
# 创建障碍物列表
obstacle_list = []
# 加载障碍物图片
obstacle_img_list = []
obstacle_img_list.append(tree_img)
obstacle_img_list.append(flag_img)
# 障碍物出现的 x 坐标范围
obstacle_x_range = [20, SCREEN_WIDTH - 20]
# 游戏主循环
clock = pygame.time.Clock()
score = 0
while True:
# 处理游戏事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 退出游戏
pygame.quit()
exit()
# 获取键盘输入
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_LEFT]:
skier_rect.left -= 5
elif key_pressed[pygame.K_RIGHT]:
skier_rect.left += 5
# 边界判断
if skier_rect.left < 0:
skier_rect.left = 0
elif skier_rect.right > SCREEN_WIDTH:
skier_rect.right = SCREEN_WIDTH
# 随机创建障碍物
if len(obstacle_list) < 10:
obstacle_img = random.choice(obstacle_img_list)
obstacle_rect = obstacle_img.get_rect()
obstacle_rect.left = random.randint(obstacle_x_range[0], obstacle_x_range[1])
obstacle_rect.top = -obstacle_rect.height
obstacle_list.append(obstacle_rect)
# 移动障碍物
for obstacle_rect in obstacle_list:
obstacle_rect.top += 5
if obstacle_rect.top > SCREEN_HEIGHT:
obstacle_list.remove(obstacle_rect)
# 绘制游戏画面
screen.blit(bg_img, (0, 0))
screen.blit(skier_img, skier_rect)
for obstacle_rect in obstacle_list:
screen.blit(obstacle_img, obstacle_rect)
# 绘制得分
font = pygame.font.Font(None, 36)
text = font.render("得分:" + str(score), True, (255, 255, 255))
screen.blit(text, (10, 10))
score += 1
# 更新屏幕
pygame.display.update()
# 控制游戏帧率
clock.tick(30)
```
请注意,此代码仅供参考,并不是最完整或最优化的实现。您可以根据自己的需求修改代码,并添加更多游戏元素和功能。