用python写一个有着10人角色的程序
时间: 2023-06-11 12:06:43 浏览: 49
好的,我来帮你写一个Python程序,实现一个有10个角色的小游戏吧。
首先,我们需要定义这10个角色。这里我定义了一个字典,包含了每个角色的名字、血量、攻击力等属性:
```python
roles = {
"勇者": {"hp": 100, "atk": 30},
"法师": {"hp": 50, "atk": 50},
"盗贼": {"hp": 70, "atk": 20},
"战士": {"hp": 120, "atk": 40},
"刺客": {"hp": 60, "atk": 30},
"骑士": {"hp": 150, "atk": 50},
"牧师": {"hp": 80, "atk": 10},
"猎人": {"hp": 90, "atk": 20},
"术士": {"hp": 60, "atk": 60},
"巫师": {"hp": 70, "atk": 50},
}
```
接下来,我们可以定义一些游戏中可能会用到的函数。这里我定义了一个 `attack()` 函数,模拟角色攻击的过程:
```python
def attack(attacker, defender):
damage = attacker["atk"]
defender["hp"] -= damage
print("{} 对 {} 造成了 {} 点伤害".format(attacker["name"], defender["name"], damage))
if defender["hp"] <= 0:
print("{} 被 {} 击败了!".format(defender["name"], attacker["name"]))
```
然后,我们可以让玩家选择一个角色来控制。这里我定义了一个 `choose_role()` 函数,让玩家从角色列表中选择一个角色:
```python
def choose_role():
while True:
print("请选择一个角色:")
for i, r in enumerate(roles):
print("{}. {} (血量:{} 攻击力:{})".format(i+1, r, roles[r]["hp"], roles[r]["atk"]))
choice = input("请选择:")
if choice.isdigit() and int(choice) in range(1, len(roles)+1):
return list(roles.keys())[int(choice)-1]
else:
print("请选择一个有效的选项!")
```
接下来,我们可以让玩家选择一个敌人来攻击。这里我定义了一个 `choose_enemy()` 函数,让玩家从角色列表中选择一个敌人:
```python
def choose_enemy():
while True:
print("请选择一个敌人:")
for i, r in enumerate(roles):
print("{}. {} (血量:{} 攻击力:{})".format(i+1, r, roles[r]["hp"], roles[r]["atk"]))
choice = input("请选择:")
if choice.isdigit() and int(choice) in range(1, len(roles)+1):
enemy = roles[list(roles.keys())[int(choice)-1]]
if enemy["name"] != player["name"]:
return enemy
else:
print("不能攻击自己!")
else:
print("请选择一个有效的选项!")
```
最后,我们可以开始游戏了。这里我定义了一个 `main()` 函数,让玩家和敌人轮流攻击,直到其中一方死亡为止:
```python
def main():
global player
player_name = choose_role()
player = {"name": player_name, "hp": roles[player_name]["hp"], "atk": roles[player_name]["atk"]}
print("你选择了 {} 作为你的角色。开始游戏!".format(player_name))
while True:
enemy = choose_enemy()
attack(player, enemy)
if enemy["hp"] <= 0:
break
for name in roles:
if name != player_name and roles[name]["hp"] > 0:
attack(roles[name], player)
if player["hp"] <= 0:
break
if player["hp"] <= 0:
print("你被 {} 击败了!游戏结束。".format(name))
break
elif enemy["hp"] <= 0:
print("{} 被你击败了!继续游戏。".format(enemy["name"]))
```
现在,我们可以在命令行中运行这个程序,来体验一下这个小游戏了:
```python
if __name__ == "__main__":
main()
```
希望这个小程序能让你开心!