init.py
import tkinter
from BoxGame.Move import Move
from BoxGame.Map import Map
from BoxGame.init_paint import init_paint
def main():
windows = tkinter.Tk()
s = 64
pa = init_paint(windows,"640x640","推箱子小游戏",s)
pa.paint_windows()
windows.mainloop()
if __name__ == '__main__':
main()
init_paint.py
import tkinter
from BoxGame.Move import Move
from BoxGame.Map import Map
from BoxGame.Role import Role
import tkinter.font as tkFont
class init_paint:
"""
窗口绘制
1.窗口的绘制-paint_windows
i,选择关卡-nextPass
2.地图的绘制-paint_canvas
3.人物的绘制
4.人物的移动-init_move
"""
cvs,image_role,image_role_file,image_file1,lb,bt,s = None,None,None,None,None,None,0
image_bg,image_bt = None,None
def __init__(self,windows,size,title,s):
self.windows = windows
self.size = size
self.title = title
self.map = Map.map1[0]
self.s = s
def paint_windows(self):
global lb,bt,image_bg,image_bt
self.windows.geometry(self.size)
self.windows.title(string=self.title)
menubase = tkinter.Menu(self.windows)
menubar = tkinter.Menu(menubase)
menulist_cs = ["游戏开始", "第一关", "第二关","退出游戏"]
for x in menulist_cs:
menubar.add_separator()
if x == "第二关":
menubar.add_command(label=x,command=self.nextPass)
else:
menubar.add_command(label=x)
menubase.add_cascade(label="游戏", menu=menubar)
menubase.add_cascade(label="帮助")
self.windows["menu"] = menubase
image_bg = tkinter.PhotoImage(file='image/bg1.png')
image_bt = tkinter.PhotoImage(file='image/begin.png')
cvs_bg = tkinter.Canvas(self.windows, width=640, heigh=640)
cvs_bg.create_image(0, 0, anchor='nw', image=image_bg)
ft = tkFont.Font(family='宋体', size=40, weight=tkFont.BOLD)
cvs_bg.create_text(320,200,anchor='center',text="推箱子小游戏",font=ft,fill="orangered")
bt = tkinter.Button(self.windows,image=image_bt,text="游戏开始",cursor="hand2",command=self.paint_canvas)
cvs_bg.pack()
bt.place(relx=0.5, rely=0.5, anchor="center")
self.cvs_bg = cvs_bg
self.bt = bt
def paint_canvas(self):
"""
初始化地图信息:
1、清空游戏开始界面
2、画墙、箱子
:return: None
"""
if self.cvs_bg != None:
self.cvs_bg.pack_forget()
if self.bt != None:
self.bt.place_forget()
global cvs,image_role_file,image_role,image_file1
cvs = tkinter.Canvas(self.windows, width=640, heigh=640, bg="gray")
gamemap = Map(cvs, self.map)
gamemap.setBoxGrade()
gamemap.draw()
place_x = self.s+(self.s-37)/2
place_y = self.s*9
role = Role(place_x,place_y,"image/role.png")
role.setImage(cvs)
image_role = role.getImage()
cvs.pack()
Move(self.s, self.s*9, self.map, cvs,self.windows,image_role)
def nextPass(self):
self.map = Map.map1[1]
Role.py
import tkinter
class Role:
"""
类属性:
image_role_file:tkinter.PhotoImage对象
image_role:canvas.create_image对象,用于角色的移动move
"""
image_role_file,image_role = None,None
def __init__(self,place_x,place_y,image_file):
"""
构造函数:实例初始化
:param place_x:初始化位置-横坐标
:param place_y:初始化位置-纵坐标
:param image_file:游戏角色的图片路径
"""
self.place_x = place_x
self.place_y = place_y
self.image_file = image_file
def setImage(self,cvs):
"""
设置create_image游戏角色实例对象
:param cvs:canvas画布
:return:
"""
global image_role_file,image_role
image_role_file = tkinter.PhotoImage(file=self.image_file)
image_role = cvs.create_image(self.place_x, self.place_y, anchor='nw', image=image_role_file, tag="role")
def getImage(self)