Spukhaus

TeresaTeresa 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

Screenshot von Teresa's adventure1 Vorraussetzung: Teresa's Spiel(e) benötigen neben Python auch das Modul Easygui, welches im Download-File bereits enthalten ist.

Lizenz

Creative-commons LogoFotos 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

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")

de/games/spukhaus.txt · Zuletzt geändert: 2010/04/13 20:18 (Externe Bearbeitung)