2016-05-14 5 views
-1
#Variables 
enemy=['Dummy','Ghost','Warrior','Zombie','Skeleton'] 
current_enemy=random.choice(enemy) 
enemy_health=randint(1,100) 
dmg=randint(0,50) 
current_enemy_health=enemy_health-dmg 

#Functions 

def enemy_stats(current_enemy_health): 
    if current_enemy_health<=0: 
     print(current_enemy,"died.") 
    if current_enemy_health>0: 
     dmg=randint(0,50) 
     current_enemy_health=enemy_health-dmg 
     print(current_enemy,"has",current_enemy_health,"health left.") 

#Meeting an enemy - Attack/Defend Option 
def encounter(current_enemy): 
    print(name,"encountered a",current_enemy,"with",current_enemy_health,"health.","What do you do?") 
    print("Attack? or Defend?") 

def battle(): 
    encounter(current_enemy) 
    #Attack Or Defend? 
    choice=input("What do you do?") 
    if choice!="Attack" or choice!="Defend": #If the choice isn't attack then ask again 
     print("Do you attack or defend?") 
     choice=input("What do you do?") 
    #Say correct sentence depending on what you do. 
    if choice=="Attack": #If the choice was attack then do a random number of dmg to it 
     print(name,choice+"s",current_enemy,".","You deal",dmg,"damage","to it.") 
     enemy_stats(current_enemy_health) 
    if choice=="Defend": #If ... to it 
     print(name,choice+"s.") 

    #Check to see if the enemy is still alive 
    while current_enemy_health>1: 
     #Attack Or Defend? 
     choice=input("What do you do?") 
     if choice!="Attack" or choice!="Defend": #If the choice isn't attack then ask again 
      print("Do you attack or defend?") 
      choice=input("What do you do?") 
     #Say correct sentence depending on what you do 
     if choice=="Attack": #If the choice was attack then do a random number of dmg to it 
      print(name,choice+"s",current_enemy,".","You deal",dmg,"damage","to it.") 
      enemy_stats(current_enemy_health) 
     if choice=="Defend": #If ... to it 
      print(name,choice+"s.") 

    #Checks to see if the enemy is dead 
    if current_enemy_health<=0: 
     print(name,"successfully killed a",current_enemy) 

battle(

)Variable Addieren und Subtrahieren/Randomisierung Probleme

So mache ich ein textbasiertes RPG-Spiel. Alles läuft gut, aber es gibt eine Sache, die ich nicht beheben kann, ich habe eine Menge Dinge ausprobiert, um das Problem zu beheben, im Grunde, wenn Sie begegnen und Feind es mit einer zufälligen Menge an Gesundheit hervorbringt. Sie treffen es dann für etwas Schaden. 'Zombie mit 20 Gesundheit spawned. Was wirst du machen?' Ich greife an und sage, dass ich 9 Schaden verursache. Was passiert ist, dass die Gesundheit nur zu einer zufälligen Zahl statt 20-9 geht. Oder sag ich habe 21 Schäden gemacht. Was diesmal passiert ist, dass die Gesundheit wieder auf eine zufällige Zahl statt 20-21 und sterben geht. Grundsätzlich, was ich nicht beheben kann, ist der Gesundheits-Teil. Ich habe es nicht geschafft zu sehen, ob die Gesundheit < 0 funktioniert, da ich den Feind niemals auf 0 Gesundheit bringen kann.

Jede Hilfe wäre willkommen.

+2

Nun, Sie berechnen 'current_enemy_health = enemy_health-dmg' und' dmg = randint (0,50) ', also kein Wunder, es ist eine zufällige Menge ... btw. Sie könnten einen [PEP 8] (https://www.python.org/dev/peps/pep-0008/) Formatierer auf Ihren Code anwenden, etwas wie [autopep8] (https://pypi.python.org/pypi/autopep8) vielleicht – miraculixx

Antwort

0

In Ihrer Funktion:

def enemy_stats(current_enemy_health): 
    if current_enemy_health<=0: 
     print(current_enemy,"died.") 
    if current_enemy_health>0: 
     dmg=randint(0,50) 
     current_enemy_health=enemy_health-dmg 
     print(current_enemy,"has",current_enemy_health,"health left.") 

Sie haben diese beiden Zeilen:

dmg=randint(0,50) 
current_enemy_health=enemy_health-dmg 

Was dies im Wesentlichen tut, ist eine Zufallszahl aus dem aktuellen Gesundheitszustand des Feindes subtrahieren, die in der Folge hätte Zufallszahl, die Sie gemeldet haben. Um dies zu beheben, muss jeder Waffe, die ein Spieler benutzt, ein "Schaden" zugewiesen werden, und zwar in der Funktion als Argument. Ihre neue Funktion würde wie folgt aussehen:

def enemy_stats(current_enemy_health, dmg): 
    if current_enemy_health<=0: 
     print(current_enemy,"died.") 
    elif current_enemy_health>0: 
     current_enemy_health=enemy_health-dmg 
     print(current_enemy,"has",current_enemy_health,"health left.") 

Und würde wie folgt umgesetzt werden:

enemy_stats(var_for_current_enemy_health, damage_of_weapon) 

Viel Glück und glücklich Codierung!

Verwandte Themen