Ich muss für den Info Unterricht bis Montag ein Textadventure schreiben und nunja, ich komme nicht so recht weiter
Hier mal Programm soweit ich es habe : (wir benutzen den PyScripter in der neusten Version
Code: Alles auswählen
#Verloren im Wald Version 6
#Schrift = Arial Uni Ms
# Version 6 03.09.2013
import tkinter
import tkinter.scrolledtext
# Klassendefinition
class TRaum(object):
def __init__(self, pBeschreibung, pBild):
#Button Weiter
self.__Weiter = None # Weiter im Intro
#Button Zurueck
self.__Zurueck = None # Zurueck im Intro
self.__Beschreibung = pBeschreibung
self.__Norden = None # ↑
self.__Osten = None # ←
self.__Sueden = None # ↓
self.__Westen= None # →
# Neue Richtungen -----------------------------------------------
self.__Nordwesten = None # ↑←
self.__Nordosten = None # ↑→
self.__Suedwesten = None # ↓←
self.__Suedosten = None # ↓→
self.__Bild = pBild # Erweiterung 1.2 Bilder
def gibBeschreibung(self):
return self.__Beschreibung
def gibBild(self):
return self.__Bild
#Setze Befehle
def setzeNorden(self, pNorden):
self.__Norden = pNorden
def setzeOsten(self, pOsten):
self.__Osten = pOsten
def setzeSueden(self, pSueden):
self.__Sueden = pSueden
def setzeWesten(self, pWesten):
self.__Westen = pWesten
#Neue Richtungen
def setzeNordwesten(self, pNordwesten):
self.__Nordwesten = pNordwesten
def setzeNordosten(self, pNordosten):
self.__Nordosten = pNordosten
def setzeSuedwesten(self, pSuedwesten):
self.__Suedwesten = pSuedwesten
def setzeSuedosten(self, pSuedosten):
self.__Suedosten = pSuedosten
#Weiter Button
def setzeWeiter(self, pWeiter):
self.__Weiter = pWeiter
#Zurueck Button
def setzeZurueck(self, pZurueck):
self.__Zurueck = pZurueck
#Gib Befehle
def gibNorden(self):
return self.__Norden
def gibNorden(self):
return self.__Norden
def gibOsten(self):
return self.__Osten
def gibOsten(self):
return self.__Osten
def gibSueden(self):
return self.__Sueden
def gibSueden(self):
return self.__Sueden
def gibWesten(self):
return self.__Westen
def gibWesten(self):
return self.__Westen
#Neue Richtungen Gib Befehle
def gibNordwesten(self):
return self.__Nordwesten
def gibNordwesten(self):
return self.__Nordwesten
def gibNordosten(self):
return self.__Nordosten
def gibNordosten(self):
return self.__Nordosten
def gibSuedwesten(self):
return self.__Suedwesten
def gibSuedwesten(self):
return self.__Suedwesten
def gibSuedosten(self):
return self.__Suedosten
def gibSuedosten(self):
return self.__Suedosten
#Button Weiter
def gibWeiter(self):
return self.__Weiter
#Button Zurueck
def gibZurueck(self):
return self.__Zurueck
# ButtonClick - Prozedur
def ButtonClick(Befehl):
TextBox.delete(1.0, 'end')
global aktuellerRaum
#Start Button
if Befehl == "Start":
aktuellerRaum = Intro1
#Weiter Button
elif Befehl == "Weiter" and aktuellerRaum.gibWeiter() != None :
aktuellerRaum = aktuellerRaum.gibWeiter()
#Zurueck Button
elif Befehl == "Zurueck" and aktuellerRaum.gibZurueck() != None :
aktuellerRaum = aktuellerRaum.gibZurueck()
#"Normale Buttons"
elif Befehl == "Norden" and aktuellerRaum.gibNorden() != None :
aktuellerRaum = aktuellerRaum.gibNorden()
elif Befehl == "Osten" and aktuellerRaum.gibOsten() != None:
aktuellerRaum = aktuellerRaum.gibOsten()
elif Befehl == "Sueden" and aktuellerRaum.gibSueden() != None:
aktuellerRaum = aktuellerRaum.gibSueden()
elif Befehl == "Westen" and aktuellerRaum.gibWesten() != None:
aktuellerRaum = aktuellerRaum.gibWesten()
#Neue Richtungen
elif Befehl == "Nordwesten" and aktuellerRaum.gibNordwesten() != None :
aktuellerRaum = aktuellerRaum.gibNordwesten()
elif Befehl == "Nordosten" and aktuellerRaum.gibNordosten() != None :
aktuellerRaum = aktuellerRaum.gibNordosten()
elif Befehl == "Suedwesten" and aktuellerRaum.gibSuedwesten() != None :
aktuellerRaum = aktuellerRaum.gibSuedwesten()
elif Befehl == "Suedosten" and aktuellerRaum.gibSuedosten() != None :
aktuellerRaum = aktuellerRaum.gibSuedosten()
TextBox.insert("end",aktuellerRaum.gibBeschreibung())
#Bilder Erweiterung
global im
im = tkinter.PhotoImage(file=aktuellerRaum.gibBild())
global canvas
canvas.create_image(0,0,image=im, anchor = 'nw')
#Ende - Erweiterung Bilder
TextBox.insert("end","\n---------- \n")
TextBox.insert("end","Folgende Ausgänge können genommen werden: \n")
#Button Weiter
if (aktuellerRaum.gibWeiter() != None):
TextBox.insert("end","--> Weiter\n")
#Button Zurueck
if (aktuellerRaum.gibZurueck() != None):
TextBox.insert("end","--> Zurueck\n")
#"Normale Buttons"
if (aktuellerRaum.gibNorden() != None):
TextBox.insert("end","--> Norden\n")
if (aktuellerRaum.gibOsten() != None):
TextBox.insert("end","--> Osten\n")
if (aktuellerRaum.gibSueden() != None):
TextBox.insert("end","--> Sueden\n")
if (aktuellerRaum.gibWesten() != None):
TextBox.insert("end","--> Westen\n")
#Neue Richtungen
if (aktuellerRaum.gibNordwesten() != None):
TextBox.insert("end","--> Nordwesten\n")
if (aktuellerRaum.gibNordosten() != None):
TextBox.insert("end","--> Nordosten\n")
if (aktuellerRaum.gibSuedwesten() != None):
TextBox.insert("end","--> Suedwesten\n")
if (aktuellerRaum.gibSuedosten() != None):
TextBox.insert("end","--> Suedosten\n")
TextBox.see("end") #TextBox ans Ende scrollen
# Erweiterung Richtungsbuttons
#Button Start
def ButtonClickStart():
ButtonClick("Start")
#Button weiter
def ButtonClickWeiter():
ButtonClick("Weiter")
#Button Zueruck
def ButtonClickZurueck():
ButtonClick("Zurueck")
#"Normale Buttons
def ButtonClickNorden():
ButtonClick("Norden")
def ButtonClickWesten():
ButtonClick("Westen")
def ButtonClickSueden():
ButtonClick("Sueden")
def ButtonClickOsten():
ButtonClick("Osten")
#Neue Richtungen
def ButtonClickNordwesten():
ButtonClick("Nordwesten")
def ButtonClickNordosten():
ButtonClick("Nordosten")
def ButtonClickSuedwesten():
ButtonClick("Suedewesten")
def ButtonClickSuedosten():
ButtonClick("Suedosten")
# Erzeugung der Räume
#Flur = TRaum('Du stehst in einem leeren Flur', "Bilder/Flur.gif")
Intro1 =TRaum('Du wachst alleine in einen dunklem Wald auf.\n \
Dein Hinterkopf schmerzt und du hast keine Erinnerung wer du bist oder wo du bist.', "Bilder/Intro/Intro1.gif")
Intro2 = TRaum('Du siehst an dir herunter und erkennst eine Nachricht auf deinem Unterarm', "Bilder/Intro/Intro2.gif")
Intro3 = TRaum('Du hast keine andere Wahl als der Karte zu folgen', "Bilder/Intro/Intro3.gif")
#Intro1N = TRaum('Intro 1', "Bilder/Intro/Intro1N")
aktuellerRaum = Intro1
##Flur = TRaum('Du stehst in einem leeren Flur', "Bilder/Flur.gif")
##Lehrerzimmer = TRaum('Du betrittst das Lehrerzimmer. \n \
##Dieses ist unheimlich und groß.', "Bilder/Lehrerzimmer.gif")
##Computerraum = TRaum('Du gehst in den Computerraum. \n \
##Alle Rechner laufen, der Raum ist leer.', "Bilder/Computerraum.gif")
##Abstellkammer = TRaum('Du öffnest eine Abstellkammer. \n \
##Die Kammer ist leer und dunkel.', "Bilder/Abstellkammer.gif")
##aktuellerRaum = Flur
# Attribute als Objektreferenzen initialisieren
#Intro
Intro1.setzeWeiter(Intro2)
Intro2.setzeZurueck(Intro1)
Intro2.setzeWeiter(Intro3)
Intro3.setzeZurueck(Intro2)
#Flur.setzeNorden(Intro1N)
##Flur.setzeOsten(Abstellkammer)
##Flur.setzeSueden(Computerraum)
##Lehrerzimmer.setzeSueden(Flur)
##Abstellkammer.setzeWesten(Flur)
##Computerraum.setzeNorden(Flur)
#GUI - Hauptfenster
main = tkinter.Tk()
main.title("Veloren im Wald")
TextBox = tkinter.scrolledtext.ScrolledText(main, width=50, height = 10,
font=('Arial, 14'))
TextBox.grid(row=2 , column = 1, columnspan=60)
TextBox.insert("end", "Verloren im Wald .\n \
\n \
\n \
Druecke auf Start um das Spiel zu beginnen \n")
# Buttonsteuerung Erweiterung 1.1
#Start Button
ButtonStart = tkinter.Button(main, text = "Start/Neustart", command = ButtonClickStart)
ButtonStart.grid(row=4, column = 10)
#Weiter Button
ButtonWeiter = tkinter.Button(main, text = "Weiter", command = ButtonClickWeiter)
ButtonWeiter.grid(row=4, column = 90)
#Button Zueruck
ButtonZurueck = tkinter.Button(main, text = "Zurueck", command = ButtonClickStart)
ButtonZurueck.grid(row=4, column = 70)
#Bewegung
ButtonNorden = tkinter.Button(main, text = "↑", command = ButtonClickNorden)
ButtonNorden.grid(row=3, column = 90)
ButtonSueden = tkinter.Button(main, text = "↓", command = ButtonClickSueden)
ButtonSueden.grid(row=5, column = 90)
ButtonWesten = tkinter.Button(main, text = "←", anchor = "e", command = ButtonClickWesten)
ButtonWesten.grid(row=4, column = 80)
ButtonOsten = tkinter.Button(main, text = "→", command = ButtonClickOsten)
ButtonOsten.grid(row=4, column = 100)
#Neue Richtungen
ButtonNordwesten = tkinter.Button(main, text = "NW", command = ButtonClickNordwesten)
ButtonNordwesten.grid(row=3, column = 80)
ButtonNordosten = tkinter.Button(main, text = "NO", anchor = "e", command = ButtonClickNordosten)
ButtonNordosten.grid(row=3, column = 100)
ButtonSuedwesten = tkinter.Button(main, text = "SW", command = ButtonClickSuedwesten)
ButtonSuedwesten.grid(row=5, column = 80)
ButtonSuedosten = tkinter.Button(main, text = "SO", command = ButtonClickSuedosten)
ButtonSuedosten.grid(row=5, column = 100)
# Erweiterung Bilder in der GUI
# (Angezeigt werden können nur "gif"-Bilder)
canvas = tkinter.Canvas(main, bg='white')
im = tkinter.PhotoImage(file="Startbild.gif")
canvas.create_image(0,0,image=im, anchor="nw")
canvas.grid(row=1, column = 1)
# Ende der Erweiterung
main.mainloop()
#anchor = ausrichtung
-Starten im Vollbildmodus und das die Schrift in einem Feld unter dem Bild ist (soweit ja kein Problem, aber ich weiß nicht wie ich eine Randlose Box erzeuge die bündig an das Bild anschließt.)
-Die Schrift Box, Ausgabe und die Buttons Farbig
-Ein Inventar in dem man Dinge die man findet einsammeln kann und später benutzen kann ( Schlüssel , Fakeln etc.) , habe mir da gedacht das man rechts wo gerade die Textbox ist vielleicht immer jeweils eine liste ausgeben könnte die dann den Namen des Gegenstandens trägt ,
also Z.bsp.
-Eine Karte Rechts oben auf der der eigene Standpunkt angezeigt wird ( Habe mir überlegt einfach eine Karte zeichen und dann für jeden Berreich den Punkt reinzumalen und dann für jeden Berreich zu aktualisieren)
Schlüssel 0
Fakeln 1
Brote 3
Wasser 0
Geplant ist weiterhin so eine Art "Schnitzeljagd" zu machen , wobei man sich von dem Akutellen Punkt(Raum) immer umschauen muss (in andere Räume) um einen Hinweis zu finden wie man weiter kommt.
Wie gesagt , ist erst der Rohbau da ich die Bilder noch schießen muss
Hoffe ihr könnt ihr mir helfen und dass ich mich nicht zu umständlich ausgedrückt hab ,
liebe grüße, Joe