habe da ein Problem mit einem Dictionary wie es scheint... Bastele gerade an einem Kartengenrator, der Karten zeichnet mit Pygame. Nun habe ich eine Methode, die die Bilder des Tileset als Dictionary zurückgibt. Wenn ich dies printe:
Code: Alles auswählen
{'ecke9': <Surface(48x48x32 SW)>, 'ecke7': <Surface(48x48x32 SW)>, 'ecke3': <Surface(48x48x32 SW)>, 'eckel': <Surface(48x48x32 SW)>, 'kreuzung': <Surface(48x48x32 SW)>, 'horizontal': <Surface(48x48x32 SW)>, 'vertikal': <Surface(48x48x32 SW)>}
...ist also alles da wie es scheint. Nun habe ich eine Funktion, die mit 3 anderen Funktionen die ganze Karte baut, so dass man zuschauen kann:
Code: Alles auswählen
def karte_bauen():
"Zeichnet die gesamte Karte mit start_und_ziel_bauen, verbinden und ecke_bauen. "
start_und_ziel_bauen()
ecken_zu_bauen = len(wegpos) - 2
ecken_gebaut = 0
while ecken_gebaut < ecken_zu_bauen:
ecke_bauen(wegpos[ecken_gebaut], wegpos[ecken_gebaut + 1], wegpos[ecken_gebaut + 2])
ecken_gebaut += 1
wegpunkte_zu_verbinden = len(wegpos) - 1
wegpunkte_verbunden = 0
while wegpunkte_verbunden < wegpunkte_zu_verbinden:
verbinden(wegpos[wegpunkte_verbunden], wegpos[wegpunkte_verbunden + 1])
wegpunkte_verbunden += 1
Code: Alles auswählen
{'ecke9': <Surface(48x48x32 SW)>, 'ecke7': <Surface(48x48x32 SW)>, 'ecke3': <Surface(48x48x32 SW)>, 'eckel': <Surface(48x48x32 SW)>, 'kreuzung': <Surface(48x48x32 SW)>, 'horizontal': <Surface(48x48x32 SW)>, 'vertikal': <Surface(48x48x32 SW)>}
Traceback (most recent call last):
File "C:\Python25\My Progs\pygames\td_map_generator_nih.py", line 291, in <module>
karte_bauen()
File "C:\Python25\My Progs\pygames\td_map_generator_nih.py", line 275, in karte_bauen
ecke_bauen(wegpos[ecken_gebaut], wegpos[ecken_gebaut + 1], wegpos[ecken_gebaut + 2])
File "C:\Python25\My Progs\pygames\td_map_generator_nih.py", line 236, in ecke_bauen
ecke = tileset["ecke1"]
KeyError: 'ecke1'
Code: Alles auswählen
def ecke_bauen(pos_a, pos_b, pos_c):
"Ermittelt den Ecken-Typ (int) der Ecke zwischen tile_a und tile_c und baut die Ecke an der Position tile_b"
global pos_verbaut
if pos_a[0] > pos_c[0] and pos_a[1] > pos_c[1]:
if pos_a[1] > pos_b[1]:
ecke = tileset["ecke9"]
else:
ecke = tileset["ecke1"]
elif pos_a[0] > pos_c[0] and pos_a[1] < pos_c[1]:
if pos_a[0] > pos_b[0]:
ecke = tileset["ecke7"]
else:
ecke = tileset["ecke3"]
elif pos_a[0] < pos_c[0] and pos_a[1] > pos_c[1]:
if pos_a[0] < pos_b[0]:
ecke = tileset["ecke3"]
else:
ecke = tileset["ecke7"]
elif pos_a[0] < pos_c[0] and pos_a[1] < pos_c[1]:
if pos_a[1] < pos_b[1]:
ecke = tileset["ecke1"]
else:
ecke = tileset["ecke9"]
else:
print "Eckentyp nicht vorhanden! tile_a / tile_b - Pos ist falsch!"
bildschirm.blit(ecke, pos_b)
pygame.display.flip()
pygame.time.delay(500)
pos_verbaut.append(pos_b)
Weiss jemand Rat? Hab' ich was übersehen..?
Vielen Dank für Eure Hilfe,
Henry