Aug-05-2022, 07:40 AM
I'm making a text adventure game as a beginner project and have already run into a problem. I'm making an encounter with an enemy (namely a 'boar') and the damage is doing some weird things.
Here's the code:
import random
You spawn in a cave and see a stick on the floor, pick it up? (yes or no): no
You see 2 paths branching of to the left and right,
do you go 'left' or 'right'?: right
You encounter a boar!
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 9 HP!
The boar attacks!
You now have 17 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 6 HP!
The boar attacks!
You now have 14 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 3 HP!
The boar attacks!
You now have 12 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 1 HP!
The boar attacks!
You now have 8 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has -3 HP!
The boar attacks!
You now have 4 HP.
You win!
As you can see, it does 1 damage at first but then it does 3 and 3 and 2 even though the weapon is "Fists" which only does 1 damage. Sorry if this is a really simple question but I'm a beginner and I can't figure it out.
Here's the code:
import random
def boarenc(weap):
bhp = 10
php = 20
dmg = 0
if weap == "Fists":
dmg = 1
elif weap == "Stick":
dmg = random.randint(1, 2)
elif weap == "Sword":
dmg = random.randint(2, 4)
elif weap == "Scythe":
dmg = random.randint(4, 7)
print("You encounter a boar!")
while True:
acti = str(input("Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: "))
if acti == "ATK":
bhp = bhp - dmg
print(f"The boar now has {bhp} HP!")
elif acti == "DFND":
dmg = random.randint(2, 4)
php = php - (dmg * 15/100)
print(f"You now have {php} HP!")
continue
print("The boar attacks!")
dmg = random.randint(2, 4)
php = php - dmg
print(f"You now have {php} HP.")
if bhp <= 0:
print("You win!")
break
elif php <= 0:
print("You lose!")
break
sti = str(input("""You spawn in a cave and see a stick on the floor, pick it up? (yes or no): """))
if sti == "yes":
weapon = "Stick"
elif sti == "no":
weapon = "Fists"
ca = str(input("""You see 2 paths branching of to the left and right,
do you go 'left' or 'right'?: """))
if ca == "right":
boarenc(weapon)and the output is this:You spawn in a cave and see a stick on the floor, pick it up? (yes or no): no
You see 2 paths branching of to the left and right,
do you go 'left' or 'right'?: right
You encounter a boar!
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 9 HP!
The boar attacks!
You now have 17 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 6 HP!
The boar attacks!
You now have 14 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 3 HP!
The boar attacks!
You now have 12 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has 1 HP!
The boar attacks!
You now have 8 HP.
Do you ATK or DFND (ATK does the amount of damage your weapon does and DFND reduces incoming damage by 15%: ATK
The boar now has -3 HP!
The boar attacks!
You now have 4 HP.
You win!
As you can see, it does 1 damage at first but then it does 3 and 3 and 2 even though the weapon is "Fists" which only does 1 damage. Sorry if this is a really simple question but I'm a beginner and I can't figure it out.
