编写一个简易的“战斗模拟小游戏”,游戏规则如下:
1.每个人有这些属性:生命值、攻击力、暴击率、闪避率。
2.两个人轮流向对方发动攻击,正常时造成对方生命值减少量等于自身攻击力。
3.发动攻击方有一定的概率产生暴击,暴击时造成对方生命值减少量等于自身攻击力的2倍。
4.受到攻击方有一定的概率躲闪掉,躲闪掉时则此次攻击不造成生命值减少。
5.当其中一方生命值降低到0或负数则失败,游戏结束。
具体要求
编写程序的要求如下:
1.定义一个类,代表一位参战选手,可以通过__init.__构造函数设置他的名字和所有属性值。其中生命力、攻击力皆整数,暴击率、闪避率为0~1之间的实数。
2.给这个类实现一个attack方法,接受一个参数,该参数代表攻击的对象(另一个此类的实例)。按照上述规则计算利判断,如果对方失败,则返回True,否则返回False 。
3.需要在上述attack方法中输出相关信息,例如:
- A向B发动了XXX点攻击。
- B躲开了。
- B的生命值降低到XXX。
- B失败了。
4.写一段主程序,创建上述类的两个实例,分别赋予他们不同的名字和属性值。然后使用循环,让二者轮流攻击对方,到结束。
示例代码
下面是一个用Python编写的简易战斗模拟小游戏的示例代码:
import random
class Fighter:
def __init__(self, name, health, attack, crit_rate, dodge_rate):
self.name = name
self.health = health
self.attack = attack
self.crit_rate = crit_rate
self.dodge_rate = dodge_rate
def attack_enemy(self, enemy):
print(f"{self.name}向{enemy.name}发动了{self.attack}点攻击。")
if random.random() < enemy.dodge_rate:
print(f"{enemy.name}躲开了攻击。")
else:
damage = self.attack
if random.random() < self.crit_rate:
damage *= 2
enemy.health -= damage
print(f"{enemy.name}的生命值降低到{enemy.health}。")
if enemy.health <= 0:
print(f"{enemy.name}失败了。")
return True
return False
# 创建两个选手实例
fighter1 = Fighter("A", 100, 20, 0.3, 0.2)
fighter2 = Fighter("B", 100, 18, 0.2, 0.3)
# 游戏主循环
while True:
if fighter1.attack_enemy(fighter2):
break
if fighter2.attack_enemy(fighter1):
break
这个程序首先定义了一个Fighter
类,代表一位参战选手。该类具有生命值、攻击力、暴击率和闪避率等属性。其中,__init__
方法用于初始化选手的属性。
类中还有一个attack_enemy
方法,用于攻击敌人。在该方法中,根据规则进行攻击判断,并根据不同的情况输出相应的信息。
在主程序中,创建了两个选手实例fighter1
和fighter2
,并通过循环让它们轮流攻击对方,直到一方失败为止。
请注意,在这个示例代码中,暴击率和闪避率的概率是随机生成的,可以根据实际需要进行调整。同时,这只是一个简单的示例,你可以根据自己的需求对代码进行修改和扩展。