Ich habe mit Pygame einen kleinen Kartengenerator programmiert. Dieser lädt ein Tileset aus 4 Tiles und baut anhand vo den eingegebenen Wegpunkt-Koordinaten (z.Bsp. karte1 = [(0, 0), (1, 3), etc etc ] eine Strasse. Dieser tut's eigentlich ganz gut so weit, man kann die Tilesets zeichnen und reinladen und auch verschiedene Karten natürlich. Das ganze sieht dann z.Bsp. so aus:
...knuffig.
Dann habe ich in der Funktion, die die ganze Karte baut, baue_karte(), noch hinzugefügt, dass jedes Mal, wenn ein Tile gebaut wird, Pygame das ganze anzeigen soll (pygame.display.flip()) und dann wollte ich noch eine Pause (pygame.time.wait(500)), damit man dem Generator schön zuschauen kann, wie die Karte gebaut wird. Und das funzte super-prächtig
Aber nun habe ich mir langsam gedacht, dass es positiv wäre, etwas Code auslagern zu können, und JETZT habe ich ein echt doofes Problem:
Habe probehalber ein Modul namens tilesets ausgelagert, dass die Grafiken des gewählten Tilesets lädt und ihnen globale Variablen zuweist:
Code: Alles auswählen
# -*- coding: cp1252 -*-
import os
import pygame
def tileset_waehlen(tileset):
global vertikal
global horizontal
global ecke1
global ecke3
global ecke7
global ecke9
global kreuzung
global t
tile_pfad = "C:\\users\\Killa\\Game Shizzle Dizzle\\Graphics\\Tiles\\" # Dateiordner
if tileset == "strasse_61":
strasse_bild = os.path.join(tile_pfad, "strasse_61.png")
strasse_ecke_bild = os.path.join(tile_pfad, "strasse_61_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "strasse_61_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "strasse_61_t.png")
if tileset == "eis_61":
strasse_bild = os.path.join(tile_pfad, "eis_61.png")
strasse_ecke_bild = os.path.join(tile_pfad, "eis_61_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "eis_61_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "eis_61_t.png")
if tileset == "jungle_56":
strasse_bild = os.path.join(tile_pfad, "jungle_56.png")
strasse_ecke_bild = os.path.join(tile_pfad, "jungle_56_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "jungle_56_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "jungle_56_t.png")
if tileset == "strasse_48":
strasse_bild = os.path.join(tile_pfad, "strasse_48.png")
strasse_ecke_bild = os.path.join(tile_pfad, "strasse_48_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "strasse_48_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "strasse_48_t.png")
if tileset == "schnee_48":
strasse_bild = os.path.join(tile_pfad, "schnee_48.png")
strasse_ecke_bild = os.path.join(tile_pfad, "schnee_48_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "schnee_48_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "schnee_48_t.png")
if tileset == "jungle_48":
strasse_bild = os.path.join(tile_pfad, "jungle_48.png")
strasse_ecke_bild = os.path.join(tile_pfad, "jungle_48_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "jungle_48_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "jungle_48_t.png")
if tileset == "test_48":
strasse_bild = os.path.join(tile_pfad, "test_48.png")
strasse_ecke_bild = os.path.join(tile_pfad, "test_48_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "test_48_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "test_48_t.png")
if tileset == "felsweg_40":
strasse_bild = os.path.join(tile_pfad, "felsweg_40.png")
strasse_ecke_bild = os.path.join(tile_pfad, "felsweg_40_ecke.png")
strasse_kreuzung_bild = os.path.join(tile_pfad, "felsweg_40_kreuzung.png")
strasse_t_bild = os.path.join(tile_pfad, "felsweg_40_t.png")
vertikal = pygame.image.load(strasse_bild).convert()
horizontal = pygame.transform.rotate(vertikal, -90)
ecke1 = pygame.image.load(strasse_ecke_bild).convert()
ecke3 = pygame.transform.rotate(ecke1, 90)
ecke7 = pygame.transform.rotate(ecke1, -90)
ecke9 = pygame.transform.rotate(ecke1, 180)
kreuzung = pygame.image.load(strasse_kreuzung_bild).convert()
t = pygame.image.load(strasse_t_bild).convert()
tilesets.tileset_waehlen("strasse_48")
Erst jetzt lade ich die im Modul definierten globalen Variablen ins Script:
from tilesets import *
Das wäre dann eigentlich alles. Ich habe also im Progi nicht viel geändert, nur etwas Code ausgelagert. Und jetzt der Hammer: Der Map-Generator tut's zwar noch, aber leidet unter Performanceproblemen... Die Strasse zeichnet sich ein Stück weit, dann (nach 7, 8 Tiles oder so, zeigt der Cursor keine Rückmeldung an und das Programm ist weg, solange, bis es alle Tiles gebaut hat. Dann ploppt die ganze Strasse auf und das Progi ist wieder stabil... Was ich damit sagen - oder besser fragen - will, ist: Warum macht das erst jetzt Probleme, wo ich mit diesem Modul arbeite? Zuvor hat das gegeigt...
Kann mir jemand helfen? Wäre echt toll; ich schnall's echt nicht mehr.
Danke bestens,
Henry Jones Jr.