Informatikabitur - Projekt in Python

class Case

Eine Instanz von Case beschreibt ein Feld des Spielfeldes.

Case.pos Liste mit 2 Integer

Position des Feldes im Spielfeld. Liste mit 2 Integer.

Case.dpos Liste mit 2 Integer

Position des Feldes auf dem Bildschirm. Liste mit 2 Integer.

Case.npos Liste mit 2 Integer

Position des Feldes auf dem Bildschirm ohne der Korrektur. Liste mit 2 Integer.

Case.size Liste mit 2 Integer

Grösse des Gebäudes/Feldes in Spielfeldeinheiten. Felder haben die grösse [1,1]. Liste mit 2 Integer.

Case.typ Integer

Typ,ID des Gebäudes/Feldes. Integer. Siehe Liste der IDs.

Case.datei String

Dateipfad zur Bilddatei, relativ zum Hauptprogramm.

Case.bauen Integer

1: auf das Feld kann gebaut werden
0: auf das Feld kann nicht gebaut werden

Case.link Liste mit 2 Integer / None

Ist das Feld ein Link, so sind die Einzigen Attribute 'pos' und 'link' !!!
Liste: Koordinaten des Feldes auf das verwiesen wird. Ist zB. das Feld von einem Gebäude belegt, dessen linken oberen Ecke als referenz gilt.
None: gibt es kein Link

Case.korr Integer

Verschiebung (nach Oben) der dpos (position auf dem Bildschirm). Simuliert die 3. Dimension (Höhe der Gebäude). Berechnung: H - (h*s) , mit H= Höhe des Bildes, h= höhe des Bildes des einzelnen Feldes (diagonale der Raute) und s= Y-Wert des Case.size

Case.islink() Bool

True: Ist das Feld ein Link.
False: Ist das Feld kein Link

Class Monde

Monde.monde Liste

Die Welt, als Koordinatensystem von Feldern. Monde.monde ist eine 2D-Liste. Jedes Feld kann über dieses System direkt mit seinen Koordinaten angesprochen werden: Feld bei [2,1] --> Monde.monde[2][1]. Jedes einzelne Feld ist eine Instanz der Klasse Case.

Monde.draw Liste

Eindimensionale (!) Liste der Objeket aus Monde.monde, die auf den Bildschirm gezeichnet werden. So braucht man beim Bauen nicht die gesammte monde liste durchgehen (da ausserhalb des Bildschirmes wohl kaum gebaut werden kann). Die Liste wird duch Monde.scroll() erzeugt, und zwar jedes Mal, wenn die Endlosschleife abgearbeitet wird.

Monde.neu Dictionary von Dictionaries

Enthält Informationen über die verschiedenen Objekte. Wird ein neues gebaut, so werden die Attribute aus dem neu dict geholt. Die Keys sind die IDs des Objektes.
Die Keys und Inhalt der Dictionaries im Dictionary werden in der Datei bgruppen.txt festgelegt.

Monde.bauen Liste

Liste der Objekte die überbaut werden sollen. Wird nur von bauen() verändert. Wenn nicht gebaut wird ist die Liste leer. Wird ein Haus gebaut ist in der Liste nur ein Objekt.

Monde.zoom Integer: 0,1,2

Zoomstufe:
zoom1 Feld in px
0 26x15
1 52x30
2 104x60

Monde.champs Liste

Liste mit den IDs (Integer), die Felder sind:
[1,3]

Monde.batiments Liste

Liste mit den IDs (Integer), die Gebäude sind:
[10,11,15,20,21]

Monde.chemins Liste

Liste mit den IDs (Integer), die Wege sind:
[2]

Monde.Spielbrett(zoom)

Rechnet monde.dpos aus. Sorgt für die Perspektive (dass die Rauten sich aneinanderreihen). zoom ist die zoomstufe, für die dpos der Objekte berechnet werden soll.

Monde.scroll((width,height),speed)

Geht der Spieler mit seiner Maus an den Rand des Spielfeldes, scrollt die Karte. monde.draw wird geupdatet und dpos und npos der Objekte in monde werden verschoben. Speed ist die scrollgeschwindichkeit. (width,height) ist die grösse des Bildschirmes.

Monde.Bauen(typ)

Wird aufgerufen sobald menu.mode auf "bauen" gesetzt ist. Baut die Gebäude, Strassen und Felder. Typ ist der zu bauende typ (ID).

Class Menu

Menu.pos Liste mit 2 Integern

Position (linke obere Ecke) des Menus

Menu.mode Liste

Modus im menu:
IndextypeBemerkung
0 String modus: "bauen", "info" ,"conf"
1 Integer ID des Objektes, welches gebaut wird

Menu.background Dictionary

Definiert den Hintergrund des Menus.
keytypeBemerkung
datei String Dateinamen und rel Pfad zur Bilddatei
pos List position des Hintergrundes
img Pygame image Objekt
rect Pygame Rect Objekt

Menu.freearea Dictionary

Definiert den linken Bereich im Menu, da wo noch nichts ist.
keytypeBemerkung
pos List position: [0,0]
size List grösse: [200,200] px

Menu.tablist Liste von Button objekte

Definiert die Tab liste. Liste (von Oben nach Unten) der Buttonobjekte. button.action sind in diesem Fall die Strings "bauen", "info" und "conf". Es sind die gleichen, die auch für menu.mode benutzt werden.

Menu.infopannel Dictionary

Definiert die Tab liste. Liste (von Oben nach Unten) der Buttonobjekte. button.action sind in diesem Fall die Strings "bauen", "info" und "conf". Es sind die gleichen, die auch für menu.mode benutzt werden.
keytypeBemerkung
pos List position: [200,0]
bauen List Liste der Objekte, die erscheinen, wenn der bauen Modus aktiv ist: buttons, mit button.action = ID des Gebauten.
info List Liste der Objekte, die erscheinen, wenn der info Modus aktiv ist
conf List Liste der Objekte, die erscheinen, wenn der config Modus aktiv ist

Menu.update()

setzt menu.mode je nach angecklickter Tab. Im Baumodus werden die buttons pressed und unpressed.

Type IDs

Die Bilder sin in 3 verschiedenen grossen vorhanden: -z2 -z1 -z0
und in einer helleren version (in jeder grösse): -b
IDobjektdim. pxdimdatei
1Wiese104x601x1wiese-z2-n.png
2Steinweg104x601x1weg-h-z2-n.png
3Kornfeld104x711x1feld-korn-z2-n.png
4Baum104x1021x1baum1-z2-n.png oder baum2
10Haus lvl0312x2173x3haus-lvl0-z2-n.png
11Haus lvl1312x2683x3haus-lvl1-z2-n.png
15Kontor lvl1312x2723x3kontor-lvl1-z2-n.png
20Getreidefarm312x2463x3farm-korn-z2-n.png
21Mühle279x3792x2muele-z2-n.png
22Bäcker208x1702x2baecker-z2-n.png
23Forsthaus208x1632x2forsthaus-z2-n.png
40Bote (Mensch)-x--x-manh-z2-n.png
41Einwohner (Mensch)-x--x-manh-z2-n.png

Güter IDs

jedes Gut hat eine ID, angefangen wird bei 100, weil vorher die Gebäude numeriert werden
IDobjekt
110Korn
111Mehl
112Brot