请用pygame写一个类似天天酷跑的小游戏,要求:地图不断刷新三个障碍物,和金币,越过障碍物并且累计吃到时隔金币游戏获胜,玩家只能在游戏窗口内活动
时间: 2024-01-24 12:05:25 浏览: 221
好的,下面是一个简单的类似天天酷跑的小游戏,你可以在Python中运行并进行体验。
```python
import pygame
import random
# 初始化pygame模块
pygame.init()
# 游戏窗口的宽度和高度
WIDTH = 800
HEIGHT = 600
# 设置游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("天天酷跑")
# 玩家的图片
player_img = pygame.image.load("player.png").convert_alpha()
# 障碍物的图片
obstacle_img = pygame.image.load("obstacle.png").convert_alpha()
# 金币的图片
coin_img = pygame.image.load("coin.png").convert_alpha()
# 玩家的初始位置和速度
player_x = 100
player_y = HEIGHT - player_img.get_height() - 50
player_speed = 5
# 障碍物列表和速度
obstacles = []
obstacle_speed = 10
# 金币列表
coins = []
# 计分板
score = 0
font = pygame.font.Font(None, 36)
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 添加障碍物和金币
if len(obstacles) < 3:
obstacle_x = WIDTH + random.randint(100, 500)
obstacle_y = HEIGHT - obstacle_img.get_height() - 50
obstacles.append(pygame.Rect(obstacle_x, obstacle_y, obstacle_img.get_width(), obstacle_img.get_height()))
coin_x = WIDTH + random.randint(100, 500)
coin_y = random.randint(50, HEIGHT - coin_img.get_height() - 50)
coins.append(pygame.Rect(coin_x, coin_y, coin_img.get_width(), coin_img.get_height()))
# 移动障碍物和金币
for i in range(len(obstacles)):
obstacles[i].x -= obstacle_speed
coins[i].x -= obstacle_speed
# 如果障碍物移出了屏幕,从列表中删除它
if obstacles[0].x < -obstacle_img.get_width():
obstacles.pop(0)
coins.pop(0)
# 检测碰撞
player_rect = pygame.Rect(player_x, player_y, player_img.get_width(), player_img.get_height())
for i in range(len(obstacles)):
obstacle_rect = obstacles[i]
if player_rect.colliderect(obstacle_rect):
pygame.quit()
sys.exit()
coin_rect = coins[i]
if player_rect.colliderect(coin_rect):
coins.pop(i)
score += 1
# 移动玩家
keys = pygame.key.get_pressed()
if keys[pygame.K_UP]:
player_y -= player_speed
if player_y < 0:
player_y = 0
elif keys[pygame.K_DOWN]:
player_y += player_speed
if player_y > HEIGHT - player_img.get_height():
player_y = HEIGHT - player_img.get_height()
# 绘制游戏场景
screen.fill((255, 255, 255))
screen.blit(player_img, (player_x, player_y))
for i in range(len(obstacles)):
screen.blit(obstacle_img, (obstacles[i].x, obstacles[i].y))
screen.blit(coin_img, (coins[i].x, coins[i].y))
score_text = font.render("得分:" + str(score), True, (0, 0, 0))
screen.blit(score_text, (10, 10))
pygame.display.update()
```
要运行这个游戏,你需要准备三张图片(player.png、obstacle.png、coin.png),并将它们放在与python文件相同的目录下。你可以在互联网上找到这些图片。
你可以使用WASD或方向键来移动玩家。障碍物和金币会从右侧向左侧移动,并在移出屏幕后重新生成。如果玩家撞到了障碍物,游戏将会结束,你可以通过关闭游戏窗口来退出游戏。如果玩家吃到了金币,得分就会加1。当得分达到3分时,游戏将会获胜。
希望这个例子对你有所帮助!
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)