tkinter华容道4x4教程一

本文是tkinter实现4x4华容道的教程,主要目标包括设计tkinter窗口界面跳转、创建按钮类以生成华容道布局。首先,建立600x600主界面窗口,包含开始按钮。点击开始按钮进入游戏界面,通过类函数生成每个具有独特位置和文本的按钮对象,用于构建华容道棋盘。后续内容将介绍如何控制按钮移动。
摘要由CSDN通过智能技术生成

tkinter华容道4x4教程一

目标:
1.完成tkinter窗口界面的跳转设计
2.设计类函数按钮,“生产”华容道按钮对象
3.游戏界面按钮排列程序设计
在这里插入图片描述主界面
在这里插入图片描述游戏界面

建立一个600x600大小的主界面窗口

import tkinter as t
wind=t.Tk()#主程序
wind.geometry("600x600")
wind.mainloop()

设计主界面的内容,我这边便于演示,设计了一个开始按钮,方便项目有一个好的框架结构,单独设计一个子函数作为项目的初始化,方便后面游戏重启时能再次进入这个函数进行重启,注意,子程序需要放在主程序的上方

import tkinter as t
def zjm():#主界面程序
    global number
    number={}
    zjm_canvas=t.Canvas(wind,width=600,height=600,bg="lightyellow")
    zjm_canvas.place(x=0,y=0)
    begin_btn=t.Button(zjm_canvas,text="开始挑战",font="kaiti 40 bold",command=fjm)
    begin_btn.place(x=180,y=200)
def fjm():#游戏界面
    pass
wind=t.Tk()#主程序
wind.geometry("600x600")
zjm()
wind.mainloop()

点击主界面开始按钮,跳转到游戏界面,接下来设计核心的华容道移动方块,利用tkinter的按钮控件设计,使用类函数的方法,此处详细讲解一下关于类函数的用法概念,类似一个生产的工厂,每次利用这个工厂生产出的一个按钮都是一个独立的对象,有自己的参数,坐标,文本内容。我们就可以利用单个对象的坐标对它进行点击的判定。
设计类函数时分析这个“工厂”的生产对象有哪些不一样的地方,这个项目中不一样的地方在每个数字按钮的位置坐标不一样,内容不一样

import tkinter as t
class btn:#类函数创建单独的华容道按钮
    def __init__(self,x,y,text,ca):
        global number,kong
        self.canvas=ca
        self.x=x
        self.y=y
        self.text=text
        self.btnname=t.Button(self.canvas,text=self.text,font="kaiti 50 bold",width=3,command=self.check)
        self.btnname.place(x=self.x,y=self.y)
    def check(self):
        pass
def zjm():#主界面程序
    global number
    number={}
    zjm_canvas=t.Canvas(wind,width=600,height=600,bg="lightyellow")
    zjm_canvas.place(x=0,y=0)
    begin_btn=t.Button(zjm_canvas,text="开始挑战",font="kaiti 40 bold",command=fjm)
    begin_btn.place(x=180,y=200)
def fjm():#游戏界面
    fjm_canvas = t.Canvas(wind, width=600, height=600, bg="lightyellow")#游戏界面画布
    fjm_canvas.place(x=0, y=0)
    numlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, " ", 15]#华容道按钮文本
wind=t.Tk()#主程序
wind.geometry("600x600")
zjm()
wind.mainloop()

然后再游戏界面的函数中利用循环调用类函数,创建华容道数字按钮

import tkinter as t
import random
from tkinter import messagebox
class btn:#类函数创建单独的华容道按钮
    def __init__(self,x,y,text,ca):
        global number,kong
        self.canvas=ca
        self.x=x
        self.y=y
        self.text=text
        self.btnname=t.Button(self.canvas,text=self.text,font="kaiti 50 bold",width=3,command=self.check)
        self.btnname.place(x=self.x,y=self.y)
    def check(self):#对象点击事件
        pass
def zjm():#主界面程序
    global number
    number={}
    zjm_canvas=t.Canvas(wind,width=600,height=600,bg="lightyellow")
    zjm_canvas.place(x=0,y=0)
    begin_btn=t.Button(zjm_canvas,text="开始挑战",font="kaiti 40 bold",command=fjm)
    begin_btn.place(x=180,y=200)
def fjm():#分界面程序与初始化设置
    global kongx,kongy,numlist,upset_num,fjm_canvas
    fjm_canvas = t.Canvas(wind, width=600, height=600, bg="lightyellow")
    fjm_canvas.place(x=0, y=0)
    numlist=[1,2,3,4,5,6,7,8,9,10,11,12,13,14," ",15]
    #random.shuffle(numlist)
    x=50#x坐标初始值
    y=50#y坐标初始值
    n=0#定义换行的变量
    for i in numlist:#遍历列表
        if i == " ":#如果等于空,提前记录关于空按钮的坐标信息
            kongx=x#空按钮的x坐标
            kongy=y#空按钮的y坐标
        btn(x,y,str(i),fjm_canvas)#调用类函数
        x+=120#每个按钮间隔为120
        n+=1
        if n == 4:#满足条件说明横向有四个按钮
            n=0#计数清零
            x=50#换行x坐标归零位
            y+=120#y坐标增加

wind=t.Tk()#主程序
wind.geometry("600x600")
zjm()
wind.mainloop()

下一部分进行按钮移动控制的讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mh_Python_learn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值