Python :: Aufgabe #271

2 Lösungen Lösungen öffentlich

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

Lösungen:

vote_ok
von thunderbird (820 Punkte) - 27.04.2020 um 09:07 Uhr
Quellcode ausblenden Python-Code
from os import system
from time import perf_counter

#Spielereingaben
print(30*"-"+"\nSpiel: Hot or Cold\n"+30*"-")
player1 = input("Name Spieler 1: ")
player2 = input("Name Spieler 2: ")
print(f"\n{player2} bitte schliessen Sie die Augen, oder schauen weg bis {player1} seine Eingabe getaetigt hat.")
zahl = int(input(f"{player1} Bitte geben Sie Ihre Zahl ein: "))

system("cls")
print("Es wurde eine Zahl eingegeben.\n")

check = False
sw = 10
ver = 0

#Spielbeginn
while not check:
    guessNum = int(input(f"{player2} Erraten Sie die Zahl: "))

    if ver == 0:
        if guessNum == zahl:
            print("\nGlückwunsch, das war die richtige Zahl")
            print(f"Es wurden {ver} Versuche und {perf_counter()}sek benoetigt.")
            check = True
        elif guessNum < zahl or guessNum > zahl:
            if (abs(zahl-guessNum))<sw:
                print("Heiss")
                ver += 1
            else:
                print("Kalt")
                ver += 1
        guessNumOld = guessNum
    else:
        if guessNum == zahl:
            print("\nGlückwunsch, das war die richtige Zahl")
            print(f"Es wurden {ver} Versuche und {perf_counter()}sek benoetigt.")
            check = True
        elif abs(guessNum-zahl) == abs(guessNumOld-zahl):
            print("Gleiche Entfernung")
            ver += 1
        elif guessNum < zahl or guessNum > zahl:
            if abs(zahl-guessNum)<sw:
                print("Heiss")
                ver += 1
            elif (abs(zahl-guessNum))<abs((zahl-guessNumOld)):
                print("Waermer")
                ver += 1
            else:
                print("Kaelter")
                ver += 1
    guessNumOld=guessNum
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
1994596

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.