用pygame写一个回合制战斗游戏
时间: 2023-11-15 07:06:31 浏览: 143
好的,下面是一个简单的回合制战斗游戏的示例代码:
```python
import pygame
import time
# 初始化pygame
pygame.init()
# 设置窗口大小
window_width = 640
window_height = 480
game_display = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('回合制战斗游戏')
# 定义颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
# 定义角色类
class Character:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
def attack(self, target):
target.hp -= self.damage
print(f'{self.name}对{target.name}造成了{self.damage}点伤害!')
if target.hp <= 0:
print(f'{target.name}已经死亡!')
# 定义主角和敌人
player = Character('主角', 100, 20)
enemy = Character('敌人', 80, 10)
# 定义游戏循环
def game_loop():
game_exit = False
while not game_exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_exit = True
# 显示角色状态
game_display.fill(white)
font = pygame.font.SysFont(None, 25)
text = font.render(f'{player.name}:HP {player.hp}', True, black)
game_display.blit(text, (10, 10))
text = font.render(f'{enemy.name}:HP {enemy.hp}', True, black)
game_display.blit(text, (window_width - 150, 10))
# 显示操作提示
font = pygame.font.SysFont(None, 30)
text = font.render('按空格键攻击!', True, red)
game_display.blit(text, (window_width/2 - 100, window_height/2))
pygame.display.update()
# 等待空格键按下
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
break
else:
continue
break
# 主角攻击敌人
player.attack(enemy)
time.sleep(1)
# 敌人攻击主角
enemy.attack(player)
time.sleep(1)
# 判断游戏是否结束
if player.hp <= 0 or enemy.hp <= 0:
game_exit = True
# 显示最终结果
game_display.fill(white)
font = pygame.font.SysFont(None, 50)
if player.hp <= 0:
text = font.render('游戏结束,你输了!', True, red)
else:
text = font.render('游戏结束,你赢了!', True, red)
game_display.blit(text, (window_width/2 - 200, window_height/2))
pygame.display.update()
time.sleep(3)
pygame.quit()
quit()
game_loop()
```
运行这段代码,你将看到一个窗口,提示你按空格键攻击敌人。当你按下空格键后,主角和敌人将轮流攻击,直到其中一方的HP降为0。最后,游戏将显示最终结果。这只是一个简单的示例游戏,你可以根据自己的需求进行扩展和改进。