开发回合制战斗系统的问题



我最近开始编写代码,我正在开发一款小型回合制RPG,但我在战斗系统中遇到了一些真正的问题。我还在学习,我从来没有想过在这里提问。无论如何,在正确完成许多事情之后,我遇到了这个问题,即使用防御命令会出于某种原因提高玩家的hp。下面是代码:

import random
import sys
import os
class Entity():
def __init__(self, hp, atk, dif):
self.hp = hp
self.atk = atk
self.dif = dif
class Battle():
def Attack(self, attacker, defender):
damage = attacker.atk - defender.dif
defender.hp -= damage
def Combat(self, player, enemy):
turns = []
while True:
while len(turns) < 5:
turn = random.randint(1, 2)
if turn == 1:
turns.append("player")
else:
turns.append("enemy")
for current_turn in turns:
print(player.hp, enemy.hp)
if current_turn == "player":
print(f"TURNS: n{current_turn}n{turns[turns.index(current_turn)+ 1:]}")
choice = input("1. Attackn2. Defendn")
if choice == "1":
self.Attack(player, enemy)
player.dif = 20
elif choice == "2":
player.dif *= 2
else:
print("Lost your chance!")
elif current_turn == "enemy":
print("Enemy turn!")
print(f"Next turns are: {turns}")
enemy_choice = random.randint(1, 2)
if enemy_choice == 2:
print("He attacks you!")
self.Attack(enemy, player)
enemy.dif = 0
else:
print("He defends himself.")
enemy.dif = 10
os.system("clear")
turns.pop(0)
if player.hp <= 0:
print("You died!")
sys.exit(0)
elif enemy.hp <= 0:
print("YOU WON!")
sys.exit(0)
break


charachter = Entity(100, 15, 15)
boss = Entity(300, 40, 0)
testbattle = Battle()
testbattle.Combat(charachter, boss)

在您的Battle.Attack方法中:

def Attack(self, attacker, defender):
damage = attacker.atk - defender.dif
defender.hp -= damage

如果attacker.atk - defender.dif是一个负数,那么你将从defender.hp中减去一个负数,增加它。

如果我是玩家,我的防守开始是15,然后我防守,因为player.dif *= 2,我的防守将变成30。如果我在下一回合再次防御,我的防御将是60,这比40的boss攻击更大。所以,如果boss在Battle.Attack攻击我,我们就会得到damage = 40 - 60,也就是damage = -20,有效治疗玩家20点。

当攻击者的攻击值小于防御者的防御值时,该实体将被治愈。也许你可以使用防御除数/乘数

而不是减去这两个值。

最新更新