用python写个拳皇
时间: 2023-11-19 09:02:30 浏览: 63
写一个完整的拳皇游戏需要大量的时间和资源,但是我们可以写一个简化版的拳皇小游戏来练习Python编程技巧和逻辑思维。
首先,我们需要导入一些Python模块:
```python
import random
import time
```
接下来,我们定义一些常量和变量:
```python
# 定义角色的属性
player = {'name': 'player', 'hp': 100, 'atk': 20, 'def': 10}
enemy = {'name': 'enemy', 'hp': 100, 'atk': 20, 'def': 10}
# 定义技能的属性
skill1 = {'name': '普通攻击', 'atk_rate': 1.0, 'hit_rate': 0.9}
skill2 = {'name': '火球术', 'atk_rate': 1.5, 'hit_rate': 0.7}
skill3 = {'name': '猛击', 'atk_rate': 2.0, 'hit_rate': 0.5}
# 定义游戏状态
game_over = False
round_count = 1
```
然后,我们定义一些函数来实现游戏的逻辑:
```python
# 定义攻击函数
def attack(attacker, defender, skill):
# 计算命中率
hit_rate = skill['hit_rate'] * (attacker['atk'] / (attacker['atk'] + defender['def']))
is_hit = random.random() < hit_rate
if is_hit:
# 计算伤害
damage = int(attacker['atk'] * skill['atk_rate'])
defender['hp'] -= damage
print(f"{attacker['name']}使用了{skill['name']},对{defender['name']}造成了{damage}点伤害!")
else:
print(f"{attacker['name']}使用了{skill['name']},但是没有击中{defender['name']}!")
# 定义回合函数
def battle_round(player, enemy, round_count):
print(f"第{round_count}回合开始!")
# 玩家选择技能
print("请选择技能:")
print("1. 普通攻击")
print("2. 火球术")
print("3. 猛击")
skill_choice = int(input("请输入技能编号:"))
if skill_choice == 1:
attack(player, enemy, skill1)
elif skill_choice == 2:
attack(player, enemy, skill2)
elif skill_choice == 3:
attack(player, enemy, skill3)
else:
print("无效的选择!")
# 敌人随机选择技能
enemy_skill_choice = random.randint(1, 3)
if enemy_skill_choice == 1:
attack(enemy, player, skill1)
elif enemy_skill_choice == 2:
attack(enemy, player, skill2)
elif enemy_skill_choice == 3:
attack(enemy, player, skill3)
# 判断游戏是否结束
if player['hp'] <= 0:
print("你输了!")
global game_over
game_over = True
elif enemy['hp'] <= 0:
print("你赢了!")
game_over = True
# 回合结束后打印双方的状态
print(f"你的血量:{player['hp']}")
print(f"敌人的血量:{enemy['hp']}")
```
最后,我们可以编写一个主循环来运行游戏:
```python
while not game_over:
battle_round(player, enemy, round_count)
time.sleep(1)
round_count += 1
```
完整代码如下:
```python
import random
import time
# 定义角色的属性
player = {'name': 'player', 'hp': 100, 'atk': 20, 'def': 10}
enemy = {'name': 'enemy', 'hp': 100, 'atk': 20, 'def': 10}
# 定义技能的属性
skill1 = {'name': '普通攻击', 'atk_rate': 1.0, 'hit_rate': 0.9}
skill2 = {'name': '火球术', 'atk_rate': 1.5, 'hit_rate': 0.7}
skill3 = {'name': '猛击', 'atk_rate': 2.0, 'hit_rate': 0.5}
# 定义游戏状态
game_over = False
round_count = 1
# 定义攻击函数
def attack(attacker, defender, skill):
# 计算命中率
hit_rate = skill['hit_rate'] * (attacker['atk'] / (attacker['atk'] + defender['def']))
is_hit = random.random() < hit_rate
if is_hit:
# 计算伤害
damage = int(attacker['atk'] * skill['atk_rate'])
defender['hp'] -= damage
print(f"{attacker['name']}使用了{skill['name']},对{defender['name']}造成了{damage}点伤害!")
else:
print(f"{attacker['name']}使用了{skill['name']},但是没有击中{defender['name']}!")
# 定义回合函数
def battle_round(player, enemy, round_count):
print(f"第{round_count}回合开始!")
# 玩家选择技能
print("请选择技能:")
print("1. 普通攻击")
print("2. 火球术")
print("3. 猛击")
skill_choice = int(input("请输入技能编号:"))
if skill_choice == 1:
attack(player, enemy, skill1)
elif skill_choice == 2:
attack(player, enemy, skill2)
elif skill_choice == 3:
attack(player, enemy, skill3)
else:
print("无效的选择!")
# 敌人随机选择技能
enemy_skill_choice = random.randint(1, 3)
if enemy_skill_choice == 1:
attack(enemy, player, skill1)
elif enemy_skill_choice == 2:
attack(enemy, player, skill2)
elif enemy_skill_choice == 3:
attack(enemy, player, skill3)
# 判断游戏是否结束
if player['hp'] <= 0:
print("你输了!")
global game_over
game_over = True
elif enemy['hp'] <= 0:
print("你赢了!")
game_over = True
# 回合结束后打印双方的状态
print(f"你的血量:{player['hp']}")
print(f"敌人的血量:{enemy['hp']}")
# 主循环
while not game_over:
battle_round(player, enemy, round_count)
time.sleep(1)
round_count += 1
```
运行结果如下:
```
第1回合开始!
请选择技能:
1. 普通攻击
2. 火球术
3. 猛击
请输入技能编号:2
player使用了火球术,对enemy造成了30点伤害!
enemy使用了猛击,但是没有击中player!
你的血量:100
敌人的血量:70
第2回合开始!
请选择技能:
1. 普通攻击
2. 火球术
3. 猛击
请输入技能编号:1
player使用了普通攻击,对enemy造成了20点伤害!
enemy使用了猛击,但是没有击中player!
你的血量:100
敌人的血量:50
第3回合开始!
请选择技能:
1. 普通攻击
2. 火球术
3. 猛击
请输入技能编号:3
player使用了猛击,对enemy造成了40点伤害!
enemy使用了火球术,但是没有击中player!
你的血量:100
敌人的血量:10
第4回合开始!
请选择技能:
1. 普通攻击
2. 火球术
3. 猛击
请输入技能编号:1
player使用了普通攻击,对enemy造成了20点伤害!
enemy使用了火球术,但是没有击中player!
你的血量:100
敌人的血量:30
第5回合开始!
请选择技能:
1. 普通攻击
2. 火球术
3. 猛击
请输入技能编号:1
player使用了普通攻击,对enemy造成了20点伤害!
enemy使用了火球术,但是没有击中player!
你的血量:100
敌人的血量:10
第6回合开始!
请选择技能:
1. 普通攻击
2. 火球术
3. 猛击
请输入技能编号:1
player使用了普通攻击,对enemy造成了20点伤害!
enemy使用了普通攻击,对player造成了10点伤害!
你的血量:90
敌人的血量:0
你赢了!
```