Version 2.1
update version 2.1
Monde wird nicht mehr in eine text datei geschrieben, sondern in eine sqlite3 Datenbank --> Überarbeitung der speichern und laden Funktion.
weitere gründliche Überarbeitung der speicher-, lade- und map2.py Einheiten. Jetzt befinden sich 3 Tabellen in map.sql: monde, players und gebaude. Letztere ist für die ganze Produktion der Gµüter und eigenschaften der Gebäude zuständig.
Im player dict ist jetzt pro player ein dict namens geb eingebaut. In dieseem dict werden die produktionsdaten und Gebaudeinfos gespeichert.
neues Gebäude: Weizenfarm
Weg bauen ist nun korrekt implementiert
TO DO: Die Weiznfarm muss gezeichnet werden, un es muss ein menubutton angelegt werden.
TO DO: bilder neu und schöner, vor allem gui (Dauertodo)
Bug: beim laden von gebauden (in players hinein) wird in das dict auch die position und der typ eingetragen, das ist aber unnötig, da sie die keys der dicts sind
Bug: scroll wird bei zoom immer wieder auf null gesetzt, d.h. scroll muss erhalten bleiben (dpos? draw?)
Bug: haus bauen schaut nicht nach ob monde zu ende ist, Häuser, die in den Rand der map gebaut werden --> index out of range
Variabeln
monde
in grün die Felder, die in die Level-Datei gespeichert werden.key | type | Bem. |
---|---|---|
pos | array | spielkoordinaten |
datei | string | Pfad zu Bilddatei |
img | Pygame | Image object |
rect | Pygame | Rect object |
dpos | array | Position auf dem Bildschirm |
type | string | Typ des objekts siehe Tabelle, soll in integer konvertiert werden |
npos | array | dpos ohne korrektur in z richtung |
korr | int | korrektur zur höhe der gebauede (in z richtung) |
bauen | int | ob das Feld bebaubar ist: 0 False , 1 True |
size | array | grösse des Objektes, in feldern |
(prop) | dict | (Eigenschaften des Objektes) |
players
players ist ein dict mit der player id als index. Jeder player hat folgende Strukturkey | type | Bem. |
---|---|---|
name | string | name des players |
cash | int | vermögen des players |
pop | int | population im gesamten |
ausg | int | ausgaben des Spielers |
eing | int | einahmen des Spielers |
geb | dict | gebäudeinfos |
players[n]["geb"] Gebäudeinfos pro player
n ist die playerID, typ ist der gebäudeTyp und pos ist das Positionsarray players[n]["geb"][typ][str(pos)] ist der volle Pfadkey | type | Bem. |
---|---|---|
prod | int | güterID des produziertem gut |
prodv | int | geschwindichkeit in der produziert wird, in einheiten pro minute, Wert muss austariert werden und ist in bgruppen.dat einzutragen |
spe | int | speicherstand des Gebäudes |
bauen
in grün Felder. in rot häuser. in blau wege.key | type | Bem. |
---|---|---|
type | integer | Typ ID des Objekts |
begin | array | koordinaten des Begins des zu bauenden Feldes |
end | array | koordinaten des Ende des zu bauenden Feldes |
inhalt von monde | dict | inhalt des monde eintrages, der später in monde geschrieben wird |
begin | array | koordinaten des Begins des zu bauenden Feldes |
end | array | koordinaten des Ende des zu bauenden Feldes |
weg | array | inhalt von monde der zu bauenden wegelemente als array |
menu
key | type | Bem. |
---|---|---|
bauen | array | bau-menu, enthält dicts |
oben | dict | obere haelfte des menus |
conf | dict | config tab |
show | string | welcher tab angezeigt wird (bauen,info) |
pos | dict | position des menus: w:breite , h:höhe , x,y |
menu["bauen"]
key | type | Bem. |
---|---|---|
datei | string | icon datei |
pos | array | relative position, absolute wird in for schleife ausgerechnet |
size | array | size in px des icons |
type | int | welcher type id gebaut werden soll |
menu["oben"]
key | type | Bem. |
---|---|---|
tabs | dict | tabs (bauen,info) ähnlich wie menu["bauen"] aufgebaut, nur dass type der menu dict index des tabs ist |
menu["conf"]
key | type | Bem. |
---|---|---|
save | array | momentan nur "lock" als key, schalter um doppling beim klick zu vermeiden |
sonstige vars
key | type | Bem. |
---|---|---|
zoomf | int | zoomfaktor , 0 klein , 1 mittel , 2 gross |
mode | string | modus: b bauen , i, info |
sel | array | koordinaten der auswahl im infomodus |
Type IDs
Die Bilder sin in 3 verschiedenen grossen vorhanden: -z2 -z1 -z0und in einer helleren version (in jeder grösse): -b
ID | objekt | dim. px | dim | datei | prop |
---|---|---|---|---|---|
1 | Wiese | 104x60 | 1x1 | wiese-z2-n.png | |
2 | Steinweg | 104x60 | 1x1 | weg-h-z2-n.png | |
3 | Kornfeld | 104x71 | 1x1 | feld-korn-z2-n.png | |
10 | Haus lvl0 | 312x217 | 3x3 | haus-lvl0-z2-n.png | hab:bewohner |
11 | Haus lvl1 | 312x268 | 3x3 | haus-lvl1-z2-n.png | |
15 | Kontor lvl1 | 312x272 | 3x3 | kontor-lvl1-z2-n.png | gueter |
Güter IDs
jedes Gut hat eine ID, angefangen wird bei 100, weil vorger die Gebäude numeriert werdenID | objekt |
---|---|
110 | Korn |
Dateien und Funktionen
main2.py
- scroll(int speed) --> draw
- menu_update(array mouse)
- init_monde(monde,zoomf) --> monde
- zoom(monde,zoomf,neu) --> {monde,neu}
- main infinite loop (not a function)
bauenf.py
- bauen_weg(monde,draw,mouse, neu, bauen,players,pla) --> {monde,bauen,players}
- bauen_feld(monde,draw,mouse, neu, bauen,players,pla) --> {monde,bauen,players}
- bauen_haus(monde,draw,mouse, neu, bauen,players,pla) --> {monde,bauen,players}
load.py
- load(datei) --> dict{array monde , dict players}
- load_neu() --> dict neu
- load_menu_bauen() --> array menu bauen buttons
- save(datei,monde,players)
bilder.py
- hell(liste)
- size(liste)
Screenshot
![]() |
![]() |
![]() |
source code 27.11.11
1,2k lines on 27.11.11
this file 250 lines