返回
萌兔跳跃向前冲,踏上像素化冒险之旅
见解分享
2023-09-22 17:49:37
跳跳兔六:游戏结束与玩家图片化
在跳跳兔五中,我们实现了积分机制、玩家死亡逻辑以及游戏开始界面逻辑。本节将继续完善游戏,实现游戏结束逻辑以及玩家图片化,不再使用方块。
游戏结束逻辑
当玩家死亡时,需要显示游戏结束界面,并展示玩家的分数。为了实现这一点,我们需要在game_over
函数中添加以下代码:
def show_gameover():
# 绘制游戏结束界面
screen.fill((0, 0, 0))
font = pygame.font.SysFont(None, 30)
text = font.render("游戏结束", True, (255, 255, 255))
text_rect = text.get_rect()
text_rect.center = (width / 2, height / 2)
screen.blit(text, text_rect)
# 展示玩家的分数
score_text = font.render("得分: " + str(score), True, (255, 255, 255))
score_text_rect = score_text.get_rect()
score_text_rect.center = (width / 2, height / 2 + 50)
screen.blit(score_text, score_text_rect)
# 更新屏幕
pygame.display.update()
# 等待玩家按任意键退出游戏
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
pygame.quit()
sys.exit()
玩家图片化
目前,玩家仍然是一个方块。为了让游戏更加生动有趣,我们需要将玩家图片化。首先,我们需要创建一个玩家图片。可以使用任何图像编辑软件,比如Photoshop或GIMP,创建一个32x32像素的图片。图片的内容可以是任何东西,比如一个兔子、一个外星人,或者任何你喜欢的东西。
创建好玩家图片后,需要将其保存为PNG格式。然后,在Pygame中,可以使用以下代码加载玩家图片:
player_image = pygame.image.load("player.png")
现在,我们需要在游戏主循环中,使用player_image
绘制玩家。可以使用以下代码:
# 绘制玩家
screen.blit(player_image, (player_x, player_y))
这样,玩家就会变成图片了。
完整代码
以下是完整的代码,包括游戏结束逻辑和玩家图片化:
import pygame
import sys
# 初始化Pygame
pygame.init()
# 设置屏幕大小
width = 800
height = 600
screen = pygame.display.set_mode((width, height))
# 设置游戏标题
pygame.display.set_caption("跳跳兔")
# 设置玩家初始位置
player_x = width / 2
player_y = height - 50
# 设置玩家速度
player_speed_x = 0
player_speed_y = 0
# 设置重力
gravity = 0.5
# 设置平台列表
platforms = []
for i in range(10):
platform = pygame.Rect(100 * i, height - 100, 100, 20)
platforms.append(platform)
# 设置积分
score = 0
# 设置游戏是否结束
game_over = False
# 游戏主循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player_speed_x = -5
elif event.key == pygame.K_RIGHT:
player_speed_x = 5
elif event.key == pygame.K_SPACE:
if player_y == height - 50:
player_speed_y = -10
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
player_speed_x = 0
# 更新玩家位置
player_x += player_speed_x
player_y += player_speed_y
# 检测玩家是否与平台碰撞
for platform in platforms:
if player_y + 32 >= platform.y and player_y + 32 <= platform.y + 20 and player_x + 32 >= platform.x and player_x + 32 <= platform.x + 100:
player_speed_y = 0
player_y = platform.y - 32
# 检测玩家是否掉出屏幕
if player_y > height:
game_over = True
# 更新积分
if player_y + 32 <= 0:
score += 1
# 绘制屏幕
screen.fill((0, 0, 0))
# 绘制平台
for platform in platforms:
pygame.draw.rect(screen, (255, 255, 255), platform)
# 绘制玩家
screen.blit(player_image, (player_x, player_y))
# 显示分数
font = pygame.font.SysFont(None, 30)
text = font.render("得分: " + str(score), True, (255, 255, 255))
text_rect = text.get_rect()
text_rect.center = (width / 2, 30)
screen.blit(text, text_rect)
# 检测游戏是否结束
if game_over:
show_gameover()
# 更新屏幕
pygame.display.update()
# 游戏结束函数
def show_gameover():
# 绘制游戏结束界面
screen.fill((0, 0, 0))
font = pygame.font.SysFont(None, 30)
text = font.render("游戏结束", True, (255, 255, 255))
text_rect = text.get_rect()
text_rect.center = (width / 2, height / 2)
screen.blit(text, text_rect)
# 展示玩家的分数
score_text = font.render("得分: " + str(score), True, (255, 255, 255))
score_text_rect = score_text.get_rect()
score_text_rect.center = (width / 2, height / 2 + 50)
screen.blit(score_text, score_text_rect)
# 更新屏幕
pygame.display.update()
# 等待玩家按任意键退出游戏
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
pygame.quit()
sys.exit()
# 加载玩家图片
player_image = pygame.image.load("player.png")
运行游戏
将上述代码保存为一个文件,比如jump_bunny.py
。然后,在命令行中运行以下命令:
python jump_bunny.py
游戏