from Tkinter import * def displaylist(li,can): # in : li = 900 bytes-list (30*30 level), can = canvas # out: displays list in canvas pass def leveltolist(level): s2=level.replace('\n',',').split(',') return [ s.replace('db','').replace(';','').strip() for s in s2] def enemiestolist(enemies): e2=enemies.replace('\n',',').split(',') e3 = [ substring.replace('db','').replace('dw','').replace(';','').strip() for substring in e2] return [ element for element in e3 if (element!='')] lvl="""; db 0,0,0,1,1,0,0,1,1,15,0,4,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,0,0,0,0,0,0,0,0,4,4,2,2,14,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 14,0,0,1,1,0,0,1,1,0,0,0,0,0,0,14,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,0,0,0,0,1,0,0,0,0,15,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,1,1,0,0,15,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 14,0,4,0,0,0,0,0,0,0,0,0,0,15,1,0,4,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 2,2,0,0,0,15,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,14,0,14,0,5,1,14,2,0,15,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,12,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,14,0,14,0,0,1,0,0,0,0,0,0,0,0,14,14,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 1,0,0,1,1,1,1,0,0,0,4,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; db 0,0,0,0,15,1,0,0,0,1,1,0,0,15,15,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 ; db 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,1,1,0,0,0,0,0,1,1,1,1,1 ; db 1,0,0,0,2,1,1,0,0,0,0,0,0,0,0,0,0,2,1,1,0,1,1,1,0,1,1,1,1,1 ; db 0,0,0,0,4,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,1,1,1,1,1 ; db 0,0,1,1,1,1,1,14,0,0,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1 ; db 0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1 ; db 0,0,0,0,14,1,1,0,0,0,0,0,0,0,0,0,0,15,1,1,1,1,1,1,1,1,1,0,1,1 ; db 15,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1 ; db 0,0,0,0,0,0,0,0,0,0,1,1,2,4,8,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1 ; db 0,0,0,0,0,1,1,4,0,15,1,1,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 """ enm=""" db 20 dw $0D10,$0410 db 0 db 0 dw $0510,$0610 db 0 db 0 dw $0E10,$0710 db 0 db 0 dw $0110,$0910 db 0 db 0 dw $0810,$0A10 db 0 db 0 dw $0210,$0B10 db 0 db 0 dw $0810,$1210 db 0 db 0 dw $1210,$1210 db 0 db 0 dw $0210,$1310 db 0 db 0 dw $0F10,$1310 db 0 db 0 dw $0A10,$1610 db 0 db 0 dw $0110,$1810 db 0 db 0 dw $1010,$1810 db 0 db 0 dw $0110,$1910 db 0 db 0 dw $0B10,$1B10 db 0 db 0 dw $0A10,$1C10 db 0 db 0 dw $0510,$1E10 db 0 db 0 dw $1110,$1D10 db 0 db 0 dw $1110,$1E10 db 0 db 0 dw $1910,$1810 db 0 db 0 """ class Application(Frame): def createWidgets(self): self.lvlcanvas = Canvas (self, width=320+2, height=320+2, background='#FFFFFF') self.lvlcanvas.pack({"side": "left"}) def fillcanvas(self,lvllist,enmlist): # outer border for y in range(32): self.lvlcanvas.create_bitmap(2,2+y*10,anchor=NW, bitmap="@tile_wall.xbm") self.lvlcanvas.create_bitmap(2+31*10,2+y*10,anchor=NW, bitmap="@tile_wall.xbm") for x in range(32): self.lvlcanvas.create_bitmap(2+x*10,2,anchor=NW, bitmap="@tile_wall.xbm") self.lvlcanvas.create_bitmap(2+x*10,2+31*10,anchor=NW, bitmap="@tile_wall.xbm") # inner walls BITMAPLIST=['@tile_nothing.xbm','@tile_wall.xbm','@tile_health.xbm','@tile_fullhealth.xbm', \ '@tile_gunammo.xbm', '@tile_mgammo.xbm','@tile_sgammo.xbm','@tile_fullammo.xbm', \ '@tile_machinegun.xbm','@tile_shotgun.xbm','@tile_chainsaw.xbm','@tile_berserk.xbm', \ '@tile_end.xbm','@tile_respawn.xbm','@tile_column.xbm','@tile_barrel.xbm'] for y in range(30): for x in range(30): selected_bitmap=BITMAPLIST[int(lvllist[y*30+x])] self.lvlcanvas.create_bitmap (2+(x+1)*10,2+(y+1)*10, anchor=NW, bitmap=selected_bitmap) # enemies cursor=1 for enm_count in range(int(enmlist[0])): eposX,eposY,eorient,etype = enmlist[cursor:cursor+4] cursor+=4 # display enemy on canvas etileX = int(eposX.replace('$','')[0:2],16) etileY = int(eposY.replace('$','')[0:2],16) self.lvlcanvas.create_rectangle(2+etileX*10+2,2+etileY*10+2,2+etileX*10+6,2+etileY*10+6 ,fill="#AA1111") def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.createWidgets() lvllist = leveltolist(lvl) enmlist = enemiestolist(enm) root = Tk() app = Application(master=root) app.fillcanvas(lvllist,enmlist) app.mainloop()