Hallo Leute,
ich suche eine Lösung, wie ich in einer Liste innerhalb eines Strings einen einzelnen Buchstaben austauschen kann.
Ich will mir (nur zum lernen von Python) eine Boulder-Dash Version basteln - sieht auch schon cool aus. Ich hab die Levels
einfach mal als Liste mit je einem String pro Zeile gestaltet (auch das ist vielleicht nicht die beste Methode, aber is ja auch nur zum üben).
sieht in etwa so aus:
levelA1 = ["WWWWWWWWWWWWWWWWWWWW",
"W..........wd......W",
"W....rxr .w.d.....W",
"W.... d . w..d....W",
"W.... r ...w...d...W",
"W. d ..rdrrwwwwwW",
"W.... .r.rrrrr.....W",
"Wwww. ..d.........pW",
"W...rrrrd..d.......W",
"Wdd.....r......r...W",
"WWWWWWWWWWWWWWWWWWWW"]
Wie könnte ich im 3. String das "r" durch ein Leerzeichen tauschen und dafür eine Zeile drunter wieder einsetzen ? (ist dann ein Stein, der fällt.
Das Darstellen des Levels über eine schleife funktioniert eigentlich so ganz gut - nur für das Austauschen hab ich noch nix gefunden...
def erstdarstellung_Spielfeld():
for y in range (hoehe):
for x in range(breite):
#print (x, y)
string = levelA1[y]
if string[x] == "W":
put = wall
elif string[x] == ".":
put = mud
elif string[x] == "r":
put = boulder
elif string[x] == "d":
put = diamond
elif string[x] == "x":
put = rockford
elif string[x] == "p":
put = ausgang
elif string[x] == " ":
put = leer
elif string[x] == "w":
put = levelwall
llabel = Label(levelframe, image = put, padx = "0", pady = "0", borderwidth = "0").grid(row = y+1, column = x, sticky = "nsew")
Strings in Listen
Strings sind unveränderlich. Hier würde man statt dessen Listen verwenden.
Alles was eine Funktion braucht, muß sie auch über ihre Argumente bekommen. Bei erstdarstellung_spielfeld fehlen `breite`, `hoehe`, `levelA1`, `levelframe`, `wall`, `mud`, `boulder`, ...
Gerade für die ganzen Images würde sich ein Wörterbuch anbieten.
`llabel` hat immer den Wert None und wird nie benutzt, kann also weg.
Alles was eine Funktion braucht, muß sie auch über ihre Argumente bekommen. Bei erstdarstellung_spielfeld fehlen `breite`, `hoehe`, `levelA1`, `levelframe`, `wall`, `mud`, `boulder`, ...
Gerade für die ganzen Images würde sich ein Wörterbuch anbieten.
`llabel` hat immer den Wert None und wird nie benutzt, kann also weg.
Code: Alles auswählen
def erstdarstellung_spielfeld(level, levelframe, images):
for y, row in enumerate(level):
for x, cell in enumerate(row):
tk.Label(levelframe, image=images[cell], padx=0, pady=0, borderwidth=0).grid(row=y, column=x, sticky="NSEW")