Eine Frage zu einem Spiel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Vipaah
User
Beiträge: 10
Registriert: Dienstag 29. November 2016, 15:31

Hey,
Ich mache momentan ein Spiel mit meinen Freunden (Textspiel)
Ich wollte machen, dass wenn man "Info" eingibt, dass dort sofort kommt wieviel Schaden und Spielerhp mann hat.

Spielerhp = 100
Schaden = 10

Wie kann ich das machen?
Und wie kann ich machen, dass man später mehr Schaden bekommt?

Schaden = Schaden + 1?


LG,
Bin ein Anfänger, nur nebenbei
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@Vipaah: Aus Deiner Frage versteh ich nicht, was Du willst. Ganz generell: Eingaben fragt man mit input ab, vergleichen tut man mit if und ausgeben mit print.
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

Du erkundigst Dich hier nach Grundlagen - Basics, d. h. arbeite das Tutorial durch! Das Tutorial gibt es jetzt für Python 3.3 auch in Deutsch:

http://py-tutorial-de.readthedocs.io/de/python-3.3/

Zu Deiner Frage: Ich würde eine Klasse für die Spielerfiguren schreiben und dann dort Deine Werte reinpacken, die kann ich dann reduzieren oder durch einen Heiltrank wieder auffüllen. Das Abfragen ist dann sehr einfach machbar. Damit lässt sich m. E. auch ein Inventar erstellen usw. usf.

Konkret:

Code: Alles auswählen

class Held(object):

    def __init__(self, hp, schaden):
        self.hp = hp
        self.schaden = schaden


def main():

    spielerA = Held(100, 10)  # DU
    spielerB = Held(80, 5)    # möglicher Gegner

    while True:
        print("\nFIGHT - Kampf, INFO - HP u. Schaden, EXIT - Beenden")
        eingabe = input("Ihre Eingabe: ")

        if eingabe == "INFO":

            print("Spielerhp A = {}".format(spielerA.hp))
            print("Schaden A   = {}".format(spielerA.schaden))

        elif eingabe == "EXIT":

            print("Schade...")
            break

        elif eingabe == "FIGHT":

            while spielerA.hp > 0 and spielerB.hp > 0:
                spielerA.hp -= spielerB.schaden
                spielerB.hp -= spielerA.schaden

                print(spielerA.hp, spielerB.hp)

            if spielerA.hp <= 0:
                print("spielerA hat verloren.")
            else:
                print("spielerB hat verloren.")
        else:
            pass

if __name__ == "__main__":

    main()
Das sollte eine Idee davon geben, was denkbar/machbar ist. Falls es Dich weitergehend interessiert: pygame.org

Ich würde aber aktuell ein Tutorial durcharbeiten. Du stellst einfache Fragen, d. h. die Grundlagen sind nicht da.
BlackJack

@Vipaah: Man sollte bei Namen keine Abkürzungen verwenden. Was soll `Spielerhp` bedeuten? Steh `hp` für Homepage? Für Hitpoints? Falls Hitpoints, warum die Mischung aus Deutsch und Englisch innerhalb eines Namens?

Wenn es mehrere Werte gibt die den Zustand eines Spielers beschreiben, dann macht im Grunde objektorientierte Programmierung (OOP) Sinn. Oder von der anderen Seite betrachtet: ohne OOP wird das schnell unübersichtlich. An der Stelle auch gleich mal: keine Variablen auf Modulebene. Da gehört nur Code hin der Konstanten, Funktionen, und Klassen definiert.
Vipaah
User
Beiträge: 10
Registriert: Dienstag 29. November 2016, 15:31

Gut, danke für die Antworten.
Außerdem wollte ich fragen, ob PyCharm eine gude IDE ist.
Kann sie jemand empfehlen? Ist sie anders als die normale Python Shell?
LG
BlackJack

@Vipaah: PyCharm wird von einigen Leuten benutzt die sehr zufrieden damit sind. Wenn die IDE für Dich funktioniert, dann spricht da IMHO nichts dagegen.

Es gibt allerdings einen ganzen Haufen IDEs und Editoren die von Python-Programmierern verwendet werden. Wenn Dir PyCharm also nicht zusagt, gibt es noch einiges an Alternativen zum ausprobieren.

Natürlich ist PyCharm anders als die normale Python-Shell, das ist aber auch ein Vergleich zwischen Äpfeln und Birnen. In der Python-Shell entwickelt man ja keine Programme. Zumindest nicht mit der Shell alleine.
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

keine Variablen auf Modulebene. Da gehört nur Code hin der Konstanten, Funktionen, und Klassen definiert.
Könntest Du mal ein Beispiel machen, was man vermeidet und wie man das stattdessen macht? Was genau ist die Modulebene? Danke.
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

Frage ist geklärt. Danke
Ich bin hier fündig geworden und komme damit gut zurecht.
Antworten