Seite 2 von 2
Re: Pacman MapEditor
Verfasst: Samstag 27. August 2011, 19:39
von Py-Prog
Ich hoffe das ist jetzt kein Spagetti Code:
Code: Alles auswählen
import tkinter
class Map_Editor(object):
def __init__(self, x, y):
self.editorwindow = tkinter.Tk()
self.editorwindow.title('Pacman MapEditor')
self.entrys = {}
for y_coord in range(y):
for x_coord in range(x):
name = ''.join(('y', str(y_coord), 'x', str(x_coord)))
self.entrys[name] = tkinter.Entry(self.editorwindow, width=1)
self.entrys[name].grid(row=y_coord, column=x_coord)
editor = Map_Editor(21, 7)
tkinter.mainloop()
Re: Pacman MapEditor
Verfasst: Samstag 27. August 2011, 19:59
von gkuhl
Als Schlüssel sich eine Zeichenkette aus X und Y zu basteln ist ziemlich unnötig, da man als Schlüssel auch folgendes Tupel (X,Y) nehmen kann. Darauf kann man später auch einfacher drauf zugreifen ohne jedes Mal die Zeichenkette zu basteln.
Re: Pacman MapEditor
Verfasst: Sonntag 28. August 2011, 20:03
von Py-Prog
Gut, ich hoffe ihr habt nichts dagegen wenn ich diese Änderung nicht poste.
Ich schreib es in den nächsten Tagen fertig. Blöder weise muss ich noch eine Funktion schreiben die einen Exel Ausschnitt einlesen kann, copy&paste.
Re: Pacman MapEditor
Verfasst: Montag 5. September 2011, 19:15
von Py-Prog
Ich hab's jetzt doch geschafft, bin vorher an einer Stelle Hängen geblieben.
Code: Alles auswählen
import tkinter
import tkinter.messagebox as messagebox
import tkinter.simpledialog as simpledialog
class Map_Editor(object):
def __init__(self, x, y):
self.x = x
self.y = y
self.MAP_CHARS = {'': '1', ' ': '1', '#': '2', 'X': '2', 'K': '3', 'D': '4'}
self.editorwindow = tkinter.Tk()
self.editorwindow.title('Pacman MapEditor')
self.arrow_up = tkinter.PhotoImage(file='pfeil_rauf.gif')
self.arrow_down = tkinter.PhotoImage(file='pfeil_runter.gif')
self.entrys = {}
for y_coord in range(y):
for x_coord in range(x):
self.entrys[(x_coord,y_coord)] = tkinter.Entry(self.editorwindow, width=1)
self.entrys[(x_coord,y_coord)].grid(row=y_coord, column=x_coord)
tkinter.Button(self.editorwindow, image=self.arrow_down, command=self.generate_mapcode).grid(row=y+1, column=0, \
columnspan=x//2, rowspan=2, sticky='nesw')
tkinter.Button(self.editorwindow, image=self.arrow_up, command=self.regenerate_mapcode).grid(row=y+1, column=(x//2)+1, \
columnspan=x//2, rowspan=2, sticky='nesw')
self.mapcodeentry = tkinter.Entry(self.editorwindow)
self.mapcodeentry.grid(row=y+3, column=0, columnspan=x, sticky='nesw')
tkinter.Button(self.editorwindow, text='Löschen', command=self.delete_map).grid(row=y+4, column=0, columnspan=x, sticky='nesw')
def generate_mapcode(self):
listnumber = simpledialog.askstring('MapEditor', 'Bitte die Listen nummer eingeben:')
mapcode = '{'
for y_coord in range(self.y):
for x_coord in range(self.x):
try:
field_content = self.entrys[(x_coord,y_coord)].get().upper()
if len(field_content) != 0:
field_content = field_content[0]
mapcode += ''.join((self.MAP_CHARS[field_content], ','))
except KeyError:
mapcode += '1,'
mapcode = mapcode[:-1] #Löscht das überflüssige Komma
mapcode += ''.join(('}->List ', listnumber))
self.mapcodeentry.delete(0, 'end')
self.mapcodeentry.insert(0, mapcode)
def regenerate_mapcode(self):
pass
def delete_map(self):
for entry in self.entrys:
self.entrys[entry].delete(0, 'end')
editor = Map_Editor(21, 7)
tkinter.mainloop()
Sieht dann so aus:
(Der Löschbutton fehlt noch.)

Und das Beste, jetzt sind die Größeren Maps sogar noch schneller als vorher die kleinste. Aber leider auf kosten der Render Geschwindigkeit. Aber das kann man verschmerzen bei einem Taschenrechner...
Aber jetzt würde mich interessieren wie ihr den Style bewertet.
Re: Pacman MapEditor
Verfasst: Montag 5. September 2011, 19:59
von Py-Prog
Sch****, bei liste 7 geht der RAM aus...