Spukhaus
Teresa hat mit Hilfe von Easygui ein Grafikadventure geschrieben. Aufgabe ist es, eine Zeit lang in einem Spukhaus zu überleben ohne vor Angst oder Hunger zu sterben.
Screenshot
Vorraussetzung: Teresa's Spiel(e) benötigen neben Python auch das Modul Easygui, welches im Download-File bereits enthalten ist.
Lizenz
Fotos von Wikipedia oder selbst erstellt (Gesichter).
Selbst erstellte Fotos stehen unter folgender Lizenz:
http://creativecommons.org/licenses/by-nc-sa/2.0/at/
Videos
| Video Serie auf www.showmedo.com | |
| Teresa erklärt hier in einem Screencast das adventure1 | und hier die Verbesserungen der Version adventure2.py |
Sonstiges
Teresa's Schwester Mira hat eine englische Version dieses Spiels gemacht und Teresa spielt im 2. Video der englischen Version eine bedeutende Rolle.
Download
- Download: teresa-adventure.tar.gz (enthält adventure1.py und adventure2.py)
Source Code
adventure2.py
Der Sourcecode von Teresa's adventure2.py - wie man sieht werden die Räume in einem Dictionary {} verwaltet was den Code sehr übersichtlich macht. Damit das Spiel funktioniert muss Python2.x (z.B. Python2.6 von www.python.org korrekt installiert sein. Das Spiel braucht noch Grafikfiles und Zusatzmodule; alles zusammen befindet sich in der Zip-Datei (siehe Download)
- adventure2.py
# -*- coding: utf-8 -*- from __future__ import division # adventure game import easygui as e import random as r # Variablen definieren: Zufallszahl zwischen Minimalwert und Maximalwert angst_max = r.randint(80,120) leben_max = r.randint(80,120) hunger_max = r.randint(80,120) zeit_max = 60 # Spieler muss eine Stunde überleben # Spieler wird geboren (player character) angst = 0 # habe keine Angst leben = leben_max # viel leben ist gut, 0 leben bedeutet tot hunger = 0 # bin satt zeit = 0 # es sind 0 Minuten vergangen def status(): """berechnet den status für die titelzeile der msgbox""" angstp = angst/angst_max * 100 lebenp = leben/leben_max * 100 hungerp = hunger/hunger_max * 100 return "Gesundheit: %i%% Angst: %i%% Hunger: %i%% Zeit: %i Minuten" % (lebenp, angstp, hungerp, zeit) def eigenschaft(delta): """ gibt eine zufallszahl zwischen delta und delta halbe zurück""" if delta != 0: if delta == 1 or delta == -1: return delta else: return r.randint(min(delta, delta//2), max(delta, delta//2)) else: return 0 meldung = {} auswahl = {} effekt = {} bild = {} #----- Korridor -------- meldung["Korridor"]="""Du bist in einem Spuk-Haus im Korridor. Du musst noch %i Minute(n) überleben. Wohin gehtst Du?""" % (zeit_max - zeit) bild["Korridor"]="terese1.gif" auswahl["Korridor"]={} # wohin, angst, leben, hunger, zeit auswahl["Korridor"]["in das Computerzimmer"]=["Computerzimmer", 0, 0, 1, 2] auswahl["Korridor"]["in die Speisekammer"] =["Speisekammer", 0, 0, 2, 1] auswahl["Korridor"]["in das Labor"] =["Labor" , 0, 0, 1, 1] auswahl["Korridor"]["in den Garten"] =["Garten" , -2, 0, -2, 4] #--computer meldung["Computerzimmer"]="""lauter computerfreaks fürchten sich vor dir Was sagst Du ?""" bild["Computerzimmer"]= "marvinmonster.gif" auswahl["Computerzimmer"]={} # wohin, angst, leben, hunger, zeit auswahl["Computerzimmer"]["010101000111001!"] =["freaks lustig", -5, 0, 5, 1] auswahl["Computerzimmer"]["ich brauche Frischluft und Sonnenschein"] =["freaks panik", 20, -10, 1, 4] #------ freaks lustig ------- meldung["freaks lustig"]="""Die Computerfreaks glauben du kannst in Binärcode reden und hast einen Witz gemacht. alle sind fröhlich und du entspannst dich ein wenig und denkst an Essen. Wohin willst Du jetzt gehen ?""" bild["freaks lustig"]="flolacht.gif" auswahl["freaks lustig"]={} # wohin, angst, leben, hunger, zeit auswahl["freaks lustig"]["zurück in den Korridor"] =["Korridor", 0, 0, 1, 2] auswahl["freaks lustig"]["im Computerzimmer bleiben"]=["Computerzimmer", 0, 0, 1, 2] #-------- freaks panik ------------- meldung["freaks panik"]="""Die Computerfreaks zucken alleine beim Gedanken an Frischluft und Sonnenschein total aus, geraten in Panik und verstecken sich unter den Tischen. Einige Computer stürzen ab und fangen wild an zu piepsen. Die Panik erfasst auch Dich und du rennst zurück in den Korridor, wobei Du über ein Mauskabel stoperst und Dich verletzt.""" bild["freaks panik"]="miraangst.gif" auswahl["freaks panik"]={} # wohin, angst, leben, hunger, zeit auswahl["freaks panik"]["in den Korridor"] =["Korridor", 0, 0, 1, 2] # -------- Speisekammer meldung["Speisekammer"]="""Du siehst verschiedene Nahrungsmittel. Was willst Du tun essen bzw tun ?""" bild["Speisekammer"]="tereselacht.gif" auswahl["Speisekammer"]={} # wohin, angst, leben, hunger, zeit auswahl["Speisekammer"]["zurück in den Korridor"] = ["Korridor", 0, 0, 2, 1] auswahl["Speisekammer"]["Belladonna-Kirschmarmelade"]= ["tollkirsche", 30, -30, -4, 1] auswahl["Speisekammer"]["Birne"] = ["mampf", 0, 0, -10, 1] auswahl["Speisekammer"]["Apfel"] = ["mampf", 0, 0, - 7, 1] # ---------- tollkirsche -------- meldung["tollkirsche"]="""Belladonna ist der Name für Tollkirsche ! Du bekommst gr0ße Pupillen und hast Dich vergiftet ! Da Du nicht weisst wieviel Gift Du verträgst fürchtest Du Dich. Wenigstens hast Du etwas weniger Hunger. Wohin gehst Du ?""" bild["tollkirsche"]="teresestaunt.gif" auswahl["tollkirsche"]={} # wohin, angst, leben, hunger, zeit auswahl["tollkirsche"]["bleibe in Speisekammer"] = ["Speisekammer", 0, 0, 0, 1] auswahl["tollkirsche"]["zurück zum Korridor"] = ["Korridor" , 0, 0, 1, 1] # ---------- mampf --------------- meldung["mampf"]="""mampf. mampf. mampf. Hmmmmm, das hat gut geschmeckt. Was jetzt ?""" bild["mampf"]="tereselacht.gif" auswahl["mampf"] = {} # wohin, angst, leben, hunger, zeit auswahl["mampf"]["bleibe in Speisekammer"] = ["Speisekammer", 0, 0, 0, 1] auswahl["mampf"]["zurück zum Korridor"] = ["Korridor" , 0, 0, 1, 1] # --------- Labor ------------- meldung["Labor"]="""das Labor ist leer. Was nun ?""" bild["Labor"] = "horstmonster.gif" auswahl["Labor"] = {} # wohin, angst, leben, hunger, zeit auswahl["Labor"]["zurück zum Korridor"] = ["Korridor" , 0, 0, 1, 1] # ----------Garten------- meldung["Garten"]="""Im Garten findest du 3 verschiedene Sträüche, von welchem isst du?""" bild["Garten"]="garten.gif" auswahl["Garten"]={} #wohin", angst, leben, hunger, zeit auswahl["Garten"]["vogelbeerstrauch"]= ["vogelbeere", 5, -40, -3, 3] auswahl["Garten"]["himbeerstrauch"] = ["himbeere", -5, 3, -5, 5] auswahl["Garten"]["zurück zu Korridor"]=["korridor", 0, 0, 1, 1] #--- meldung["vogelbeere"]="""du Fergifftest dich an der Vogelbeere, hast angst um dein Leben, doch überlebst dann doch""" bild["vogelbeere"]="kirsche.gif" auswahl["vogelbeere"]={} #wohin", angst, leben, hunger, zeit auswahl["vogelbeere"]["im Garten bleiben"]= ["Garten", 0, 0, 1, 2] auswahl["vogelbeere"]["zu Korridor" ]= ["Korridor", 1, 1, 2, 3] meldung["himbeere"]="""du isst dich satt, ruhst dich aus und vertreibst viel zeit, bravo""" bild["himbeere"]="himbeeren.gif" auswahl["himbeere"]={} #wohin", angst, leben, hunger, zeit auswahl["himbeere"]["im Garten bleiben" ]=["Garten", 0, 0, 1, 2] auswahl["himbeere"]["zu Korridor" ]=["Korridor", 1, 1, 2, 3] #---- Hautschleife Anfang -------- raum ="Korridor" # da bin ich jetzt while (angst<angst_max) and (leben>0) and (hunger<hunger_max) and (zeit < zeit_max): # button-liste erstellen: auswahl[raum].keys() und Notausgang dazu buttonliste = auswahl[raum].keys() # buttonliste wird neu berechnet buttonliste.append("Spiel verlassen") # wird jedes mal an die buttonliste drangehängt antwort = e.buttonbox(meldung[raum], status(), buttonliste, image=bild[raum] ) if antwort == "Spiel verlassen": e.msgbox("Schade, dass Du nicht mehr spielen willst...Du Feigling", status(), image = "miradunkel1.gif") break # das verlässt die Hauptschleife # Spieler Variablen ändern sich angst += eigenschaft(auswahl[raum][antwort][1]) if angst < 0: angst = 0 leben += eigenschaft(auswahl[raum][antwort][2]) if leben > leben_max: leben = leben_max hunger+= eigenschaft(auswahl[raum][antwort][3]) if hunger < 0: hunger = 0 zeit += eigenschaft(auswahl[raum][antwort][4]) if zeit < 0: zeit = 0 # nur für Zeitmaschinen wichtig raum = auswahl[raum][antwort][0] # wo geht es weiter # was ist passiert ? if (zeit >= zeit_max) and (hunger < hunger_max) and (angst < angst_max) and (leben > 0): e.msgbox("Nach über einer Stunde im Spukhaus findest Du den Ausgang. Bravo ! Du hast gewonnen", status(), image="mirafreundlich.gif") meldung = "Game Over \n" # das \n macht einen Zeilenumbruch if hunger > hunger_max: meldung += "Du bist verhungert. \n" if angst > angst_max: meldung += "Du hast Dich zu Tode gefürchtet. \n" if leben <= 0: meldung += "Du bist an Deinen Verletzungen gestorben" e.msgbox(meldung, status(), image="mirawuetend.gif")


