Kleines Text-Spiel zum Zahlenraten
Verfasst: Freitag 25. Januar 2008, 13:34
Hi, hier ist meine neuste Kreation! Leider ist sie wieder auf Modulbasis und nicht in Funktionen eingeteilt, da ich es dann doch sinnvoler fand, das ganze in einem Modul zu schreiben. Wenn jemand einen Vorschlag hat, wie ich es mit Funtkionen besser machen koennte, ist sehr wilkommen!
PS) diesmal habe ich mich an die PEP8 gehalten
PS) diesmal habe ich mich an die PEP8 gehalten
Code: Alles auswählen
#Spiel, wo mann das Doppelte oder Dreifache einer Zahl raten muss
#Regeln werden in den Linien 7-18 beschrieben.
from random import randrange
counter = 15 #counter =anzahl der Fragen die beansweret werden muessen,
joker = 2 #joker=siehe unten
flag2 = flag3 = flag4 = flag5 = False #fuer flags siehe wieter unten
print "***********************************************************"
print "Hallo, hier ist das interaktive Spiel namens Rate das Doppelte"
print "Du must 15 mal das Doppelte rausfinden, wobei es in jedem level etwas"
print "schwieriger wird, die richtige Zahl zu finden"
print "Du faengst mit 2 Joker an, die dir weiterhelfen wenn du einmal falsch"
print "raetst."
print "Allerdings musst du fuer jeden benutzten Joker 3 mal zusaetzlich raten"
print "Du kriegst einen weiteren joker in jeder ersten betretung eines Levels"
print "Wenn die Joker zu ende sind, verlierst du."
print "Es gibt 4 Schwierigkeitsgrade mit jeweils 4 Schwierigkeitslevel plus"
print "ein 5es schwereres end-level"
print "***********************************************************"
#Schwieriegkeitsgrad-check
difficulty = raw_input("bitte Schwierigkeitsgrad eingeben(1,2,3 oder 9) ")
difficulty = int(difficulty)
if difficulty == 1 or difficulty > 3: #>3:fuer num-exception und extrem modus
limit_small, limit_big = 100, 999 # limit anfang und ende fuer die
# generierte Zahl
if difficulty == 2:
limit_small, limit_big = 1000, 9999 # bei groesseren Schwierigkeitsgraden
# fangen die Zahlen groesser an
elif difficulty == 3:
limit_small, limit_big = 10000, 99999
if difficulty == 9 :
multiplicator = 3 #multiplikatioren fuer die random zahlen
else:
multiplicator = 2
while counter != 0: #15 wiederholungen
#///////levelcheck start/////////////////
if counter == 15:
print "++++++++++++++++++++++++++++++++++++++"
print "Level 1 "
print "++++++++++++++++++++++++++++++++++++++"
if counter > 12:
new_limit_small = limit_small
new_limit_big = limit_big
# dieser Schritt muss separat sein, sonnst bleiben die Zahlen so hoch wie
# beim zuletzt besuchten Level, auch nach einem Fall in tiefere Level.
# Darum auch die Indizes new_limit_small, new_limit_big
elif counter == 12:
print "++++++++++++++++++++++++++++++++++++++"
print "Level 2"
print "++++++++++++++++++++++++++++++++++++++"
if flag2 == False: #flag-check. Flags sind da damit man einen Joker pro
flag2 = True #level nur einmal erhaelt. Andernfalls, wenn mann aus
joker += 1 #nem level rauskommt und wieder reinkommt kriegt mann
print "+1 Joker" #jedesmal wieder einen Joker, und das Spiel wird
#zu leicht.
if counter <= 12 and counter > 8:
new_limit_small = limit_small * 10
new_limit_big = limit_big * 10
#bei jedem level werden die Zahlen um eine Stelle groesser
elif counter == 8:
print "++++++++++++++++++++++++++++++++++++++"
print "Level 3"
print "++++++++++++++++++++++++++++++++++++++"
if flag3 == False: #jedes level hat sein eigenen flag und flag-check
flag3 = True
joker += 1
print "+1 Joker"
if counter <= 8 and counter > 4:
new_limit_small = limit_small * 100
new_limit_big = limit_big * 100
elif counter == 4:
print "++++++++++++++++++++++++++++++++++++++"
print "Level 4"
print "++++++++++++++++++++++++++++++++++++++"
if flag4 == False:
flag4 = True
joker += 1
print "+1 Joker!"
if counter <= 4 and counter != 1:
new_limit_small = limit_small * 1000
new_limit_big = limit_big * 1000
elif counter == 1:
print "++++++++++++++++++++++++++++++++++++++"
print "Level 5"
print "++++++++++++++++++++++++++++++++++++++"
new_limit_small = limit_small * 10000000
new_limit_big = limit_big * 100000000
#fuer die einzige level-5 frage hat die Zahl viel mehr Stellen
if flag5 == False:
flag5 = True
joker += 1
print "+1 Joker!"
#/////level-check ende/////////
print "" #ein kleiner Abschnitt im neuem Level
counter -= 1 #mal-counter geht zurueck
generated_number = randrange(new_limit_small, new_limit_big)
#generated_number ist die zu verdopplende bzw verdreifachende Zahl
#multiplicator-check, bzw ob mann das zwei- oder dreifache rechnen muss
if multiplicator == 2:
print "Das doppelte von: " ,generated_number, " ist?"
else:
print "Das dreifache von: ", generated_number, " ist?"
answer = int(raw_input())
# /////answer check anfang////////////
# Fall 1:cheat-Wort "0" Wenn man 0 tippt zaehlt es als richtige Antwort
# und gibt die tatsaechliche Antwort aus (fuer testzwecke eingebaut)
if answer == 0:
if multiplicator == 2: print 2 * generated_number
else: print 3 * generated_number
continue
#Fall 2:falsche Antwort in leveln 1,2 und 3
elif answer != 2 * generated_number and multiplicator == 2:
joker = joker-1
counter = counter + 3
print "falsch!"
print "die richtige answer waere", 2 * generated_number
#Fall3: falsche Antwort im extrem modus
elif answer != 3 * generated_number and multiplicator == 3:
joker = joker - 1
counter = counter + 3
print "falsch!"
print "die richtige answer waere", 3 * generated_number
#Fall4:richtige Antwort (kein exception-catch vorhanden)
elif counter != 0: # if-check ist dafuer da damit bei der letzten richtigen
# Antwort nicht nochmal dieser Text steht
print "sehr gut, noch ", counter, " Mal raten!"
print "Du hast noch ", joker, " Joker"
#game-over-check
if joker == -1: #Joker muss auf -1 gehen, da man mit 0 Jokern immer noch
print " + + + + + + + + + + +" # spielen kann
print "Du hast keinen Joker mehr um dich zu retten! Du hast verloren!"
print " + + + + + + + + + + +"
break
else:
print "Du verlierst einen und hast noch ", joker, " Joker"
print "noch ", counter, " Mal raten!"
# //////////answer-check ende///////////////
# Gewonnen check und Auswertung
if counter == 0: # gewonnen-check notwendig, damit beim verlieren keine
# Auswertung auftaucht
wrong_answers = 6-joker #Bei jeden Spiel kriegt man 6 Joker und bei jeder
#falschen Antwort verliert man einen, daher die Formel
print "Sehr gut! Du hast gewonnen!"
print "Du hast insgesammt ",15 + (6 - joker) * 3, " mal geraten"
# Formel: male die geraten wurden = anfangs counter +(insgesammts
# joker minus die uebriggebliebene joker) * (anzahl der schritte,
# die man verliert wenn mann falsch answeret plus 1)
print "und dabei", wrong_answers, " Fehler gemacht"
#rankings
if multiplicator == 3: print "wow!!!! Extrem modus geschafft!!! Super!"
elif wrong_answers == 0: print "perfekt! Deine Note: 1.0!"
elif wrong_answers <=2 : print "gut! Deine Note: 2.0"
elif wrong_answers ==5 : print "ganz knapp... aber du hast es geschafft! 4.0"
else: print "nicht perfekt, aber auch nicht schlecht. 3.0"