Python :: Aufgabe #271
2 Lösungen
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
- 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:
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
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