Hallo zusammen,
ich möchte eine Funktion innerhalb eines Spiels zeitlich begrenzen.
Kurz, der Spieler soll ein Wort erraten und das innerhalb von 20 Sekunden. Sollte die Eingabe nach 20 Sekunden nicht geschehen oder falsch sein wird die Funktion erneut durchlaufen.
Leider funktioniert mein Code nicht so wie ich mir das vorstelle. kann mir jemand weiterhelfen?
Vielen Dank schonmal!:)
... anderer Code
import time
start_time = time.monotonic()
end_time = time.monotonic()
if answer == correct_word and "d" and end_time - start_time > 20:
print("Pünktlich")
else:
print("Zu spät")
find_the_word()
Funktionen eines Spiels zeitlich beschränken
@pythonist87: das funktioniert nicht, weil `answer` und `currect_word` nicht definiert werden. `find_the_word` existiert auch nicht.
`start_time` und `end_time` sind fast identisch, jedenfalls wäre es sehr überraschend, wenn dazwischen 20 Sekunden liegen würden.
Bitte zeige den gesamten relevanten Code.
Das `and "d"` in der if-Bedingung ist überflüssig, das "d" immer zu wahr evaluiert wird.
Rekursion ist kein Ersatz für eine Schleife, wenn also die Funktion erneut durchlaufen werden soll, brauchst Du eine while-Schleife.
`start_time` und `end_time` sind fast identisch, jedenfalls wäre es sehr überraschend, wenn dazwischen 20 Sekunden liegen würden.
Bitte zeige den gesamten relevanten Code.
Das `and "d"` in der if-Bedingung ist überflüssig, das "d" immer zu wahr evaluiert wird.
Rekursion ist kein Ersatz für eine Schleife, wenn also die Funktion erneut durchlaufen werden soll, brauchst Du eine while-Schleife.
@pythonist87,
das was du hier zeigst, kann auch nicht funktionieren, denn "start_time" und "end_time" werden ja direkt nacheinander ermittelt. Der Zeitabstand dürfte nahe null sein.
Damit wird immer "Zu spät" ausgegeben.
Um das zu berichtigen muss man die "start_time" ermitteln bevor auf die Eingabe des Benutzers gewartet wird und die "end_time" muss ermittelt werden, nachdem der Benutzer eine Antwort gegeben hat.
Erst dann kann man die Fallunterscheidung "Pünktlich" oder "Zu spät" machen.
Wenn du es nicht hinbekommst, solltest du mal den gesamten Code zeigen. Dann kann man dir besser helfen.
das was du hier zeigst, kann auch nicht funktionieren, denn "start_time" und "end_time" werden ja direkt nacheinander ermittelt. Der Zeitabstand dürfte nahe null sein.
Damit wird immer "Zu spät" ausgegeben.
Um das zu berichtigen muss man die "start_time" ermitteln bevor auf die Eingabe des Benutzers gewartet wird und die "end_time" muss ermittelt werden, nachdem der Benutzer eine Antwort gegeben hat.
Erst dann kann man die Fallunterscheidung "Pünktlich" oder "Zu spät" machen.
Wenn du es nicht hinbekommst, solltest du mal den gesamten Code zeigen. Dann kann man dir besser helfen.
-
- User
- Beiträge: 3
- Registriert: Mittwoch 22. September 2021, 10:58
@ Sirius3
Der Code ist recht komplex und greift auch auf externe Dateien zu.
Der Einfachheit halber ein anderer Kontext. Ich hoffe das ist auch okay.
print("Wie viele Tage hat das Jahr?")
print("a) 14 b) 30 c) 1 d) 365")
answer = input(">")
def Tage_Jahr():
if answer == "365":
print("Richtig") # wenn diese Antwort innerhalb von 20 Sekunden geschehen ist geht es in die Funktion game_over(), ansonsten von vorn
else:
print("Falsch") # Funktion startet erneut
Der Code ist recht komplex und greift auch auf externe Dateien zu.
Der Einfachheit halber ein anderer Kontext. Ich hoffe das ist auch okay.
print("Wie viele Tage hat das Jahr?")
print("a) 14 b) 30 c) 1 d) 365")
answer = input(">")
def Tage_Jahr():
if answer == "365":
print("Richtig") # wenn diese Antwort innerhalb von 20 Sekunden geschehen ist geht es in die Funktion game_over(), ansonsten von vorn
else:
print("Falsch") # Funktion startet erneut
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@pythonist87: Das sieht falsch aus eine Funktion pro beantworteter Frage zu schreiben.
Die Beschreibung in welcher Reihenfolge die Funktionen aufgerufen werden lässt böses ahnen, zusammen mit der begründeten Vermutung von Sirius3, dass Rekursion als Schleifenersatz missbraucht wird. Funktionen sind nicht einfach Namen für ein Stück Code der mit dem Aufruf wie mit GOTO in BASIC oder ähnlichen Sprachen angesprungen wird. Eine Funktion wird aufgerufen, macht etwas, und kehrt dann zum Aufrufer zurück. Möglicherweise mit einem Rückgabewert. Funktionen rufen nicht endlos immer weiter Funktionen auf.
Funktionen bekommen alles was sie ausser Konstanten benötigen, als Argument(e) übergeben. `answer` wäre hier also ein Argument.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassennamen (PascalCase). Funktionsnamen werden üblicherweise nach der Tätigkeit benannt, die sie durchführen. `tage_jahr` ist keine Tätigkeit.
Die Beschreibung in welcher Reihenfolge die Funktionen aufgerufen werden lässt böses ahnen, zusammen mit der begründeten Vermutung von Sirius3, dass Rekursion als Schleifenersatz missbraucht wird. Funktionen sind nicht einfach Namen für ein Stück Code der mit dem Aufruf wie mit GOTO in BASIC oder ähnlichen Sprachen angesprungen wird. Eine Funktion wird aufgerufen, macht etwas, und kehrt dann zum Aufrufer zurück. Möglicherweise mit einem Rückgabewert. Funktionen rufen nicht endlos immer weiter Funktionen auf.
Funktionen bekommen alles was sie ausser Konstanten benötigen, als Argument(e) übergeben. `answer` wäre hier also ein Argument.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassennamen (PascalCase). Funktionsnamen werden üblicherweise nach der Tätigkeit benannt, die sie durchführen. `tage_jahr` ist keine Tätigkeit.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman