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:
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###########################################################################################
# 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