tkinter推箱子小游戏源码

init.py

import tkinter
from BoxGame.Move import Move
from BoxGame.Map import Map
from BoxGame.init_paint import init_paint
def main():
    # 新建一个窗口windows
    windows = tkinter.Tk()
    # 框架长宽设置为500x500,表头设置为‘推箱子小游戏’
    # 箱子尺寸为64x64
    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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值