Python :: Aufgabe #271 :: Lösung #2

2 Lösungen Lösungen öffentlich
#271

Game - Heiß oder Kalt

Anfänger - Python von DavidDev024 - 20.04.2020 um 19:36 Uhr
Das Spiel läuft folgender Maßen ab:

- Spieler 1 denkt sich eine Zahl aus
- Spieler 2 versucht nun die Zahl zu erraten, indem er eine Zahl eingibt
- nun wird der vorherige Versuch (falls einer vorhanden) mit dem jetzigen verglichen und wärmer oder kälter ausgegeben (je nachdem ob man der geheimen Zahl von Spieler 1 näher kommt oder nicht)
-Erratet Spieler 2 die Zahl sollen die benötigten Versuche und die benötigte Zeit ausgegeben werden.

Have Fun
#2
vote_ok
von daVinci (320 Punkte) - 15.05.2020 um 17:12 Uhr
Quellcode ausblenden Python-Code
###########################################################################################
# Aufgabe #271 - Kälter und Wärmer -- GAME
###########################################################################################
#     ___________________________________
#____|  A u f g a b e n s t e l l u n g  |_________________________________________________
#
#      - Spieler 1 denkt sich eine Zahl aus
#      - Spieler 2 versucht nun die Zahl zu erraten, indem er eine Zahl eingibt
#      - nun wird der vorherige Versuch (falls einer vorhanden) mit dem jetzigen verglichen
#        und wärmer oder kälter ausgegeben (je nachdem ob man der geheimen Zahl von Spieler
#        1 näher kommt oder nicht)
#      - Erratet Spieler 2 die Zahl sollen die benötigten Versuche und die benötigte Zeit
#        ausgegeben werden.
#     _____________________________
#____|  I n f o r m a t i o n e n  |_______________________________________________________
#
#       -/-
#
###########################################################################################
#=========================================================================| code by daVinci
###########################################################################################
#------------------------------------------------------------------------------------------
# p.s. ich bin noch ein absoluter Neuling in diesem Gebiet und freue mich für jeden
# unterstützdenen Tipp zur zukünfig besseren/optimierten Umsetzung :)
#------------------------------------------------------------------------------------------
# Import aus Standartbibliothek für versteckte Eingabe von "ZIELZAHL"
from getpass import getpass
# Import für Anzeige von verstrichener Zeit
import datetime as dt
#------------------------------------------------------------------------------------------
# Zähler Startwert
vben = 1
#------------------------------------------------------------------------------------------
# Funktion für ersten Versuch (keine Vergleichszahl, deshalb wird geprüft ob Zahl mehr als
# doppelt so groß oder mehr als doppelt so klein ist)
def ersterversuch (zahlx, zielzahl):
    if zahlx == zielzahl:
        return 1
    elif (zahlx >= (zielzahl + zielzahl) or zahlx <= (zielzahl - zielzahl)):
        return "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n K  A  L  T\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n"
    else:
        return "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n W  A  R  M\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n"
#------------------------------------------------------------------------------------------
# Funktion zum Vergleich mit der vorherigen Eingabe
def versuche(zahlx, zahlx2, zielzahl):
    if zahlx2 == zielzahl:
        return 1
    else:
        if (zahlx2 > zielzahl):
            jetziger = zahlx2 - zielzahl

            if (zahlx > zielzahl):
                vorheriger = zahlx - zielzahl
            elif (zahlx < zielzahl):
                vorheriger = zielzahl - zahlx

        elif (zahlx2 < zielzahl):
            jetziger = zielzahl - zahlx2

            if (zahlx > zielzahl):
                vorheriger = zahlx - zielzahl
            elif (zahlx < zielzahl):
                vorheriger = zielzahl - zahlx

    if (jetziger < vorheriger):
        return "\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n W  Ä  R  M  E  R\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n"
    else:
        return "\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n K  Ä  L  T  E  R\n#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#\n"
#------------------------------------------------------------------------------------------
# Startmeldung
print ("\n===============================================================================")
print ("                              HEISS - KALT  -- GAME")
print ("===============================================================================\n")
print ("SPIELER_01 gibt eine Zahl ein die SPIELER_02 dann erraten muss. Nach jedem")
print ("Versuch von SPIELER_02 die Zahl zu erraten, wird eine Meldung ausgegeben die")
print ('mit "WÄRMER" oder "WÄLTER" den Hinweis liefert ob sich der letze Versuch näher')
print ("oder ferner von der Ziel_Zahl befindet.")
print ("===============================================================================\n")
#------------------------------------------------------------------------------------------
# Eingabe der zu erratenden Zahl
zielzahl = eval(getpass("SPIELER_01, geben Sie jetzt bitte Ihre Zahl ein: "))
print ("SPIELER_01 hat die zu erratende Zahl festgelegt!")
print ("===============================================================================\n")
#------------------------------------------------------------------------------------------
# Starte Timer
n1=dt.datetime.now()
#------------------------------------------------------------------------------------------
# Erster Versuch (Eingabe)
print ("-------------------------------------------------------------------------------")
zahlx = eval(input("SPIELER_02, geben Sie jetzt Ihre Zahl ein: "))
print ("-------------------------------------------------------------------------------\n")
#------------------------------------------------------------------------------------------
# Erster Versuch (Prüfung)
if ersterversuch(zahlx, zielzahl) == 1:
    # Stoppe Timer
    n2=dt.datetime.now()
    zeit = (n2-n1).seconds

    print ("\n===============================================================================")
    print ("HERZLICHEN GLÜCKWUNSCH !")
    print ("WOW! Sie haben die Zahl von SPIELER_01 beim 1. VERSUCH ERRATEN!")
    print ("Sie haben für  1  Versuch ", zeit, " Sekunden benötigt.")
    print ("===============================================================================\n")
    exit()
else:
    print (ersterversuch(zahlx, zielzahl))
#------------------------------------------------------------------------------------------
# Weitere versuche (Schleifenanfang für Wdl. der Rateversuche von SPIELER_02)
while True:
    # Zähler - Anzahl von Versuchen
    vben += 1
    #--------------------------------------------------------------------------------------
    zahlx2 = eval(input("SPIELER_02, um weiter zu raten geben Sie jetzt eine weitere Zahl ein: "))
    #--------------------------------------------------------------------------------------
    if versuche(zahlx, zahlx2, zielzahl) == 1:
        # Stoppe Timer
        n2=dt.datetime.now()
        zeit = (n2-n1).seconds

        print ("\n===============================================================================")
        print ("HERZLICHEN GLÜCKWUNSCH !")
        print ("Sie haben die Zahl von SPIELER_01 beim ", vben,". VERSUCH ERRATEN!")
        print ("Sie haben für ", vben, " Versuche ", zeit, " Sekunden benötigt.")
        print ("===============================================================================\n")
        break
    else:
        print (versuche(zahlx, zahlx2, zielzahl))
        zahlx = zahlx2
        continue

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1996441

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.