python实现带界面的井字棋小游戏
作者:诗一样的代码 发布时间:2022-11-14 22:28:24
标签:python,井字棋
今天我们用python+tkinter
安装带界面的井字棋,效果如图所示。
Tkinter
是 Python
的标准 GUI 库。Python
使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter
是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter
库、而且 IDLE 也是用 Tkinter
编写而成、对于简单的图形界面 Tkinter
还是能应付自如。
pip install tkinter
1、首先安装tkinter
root= Tk()
root.title('井字棋')
digits = [1,2,3,4,5,6,7,8,9]
mark = '' “
count = 0
panels = ["panel"]*10
2、初始化窗口
Label(root,text="player1 : X",font="times 15").grid(row=0,column=1)
Label(root,text="player2 : O",font="times 15").grid(row=0,column=2)
button1=Button(root,width=15,font=('Times 16 bold'),height=7,command=lambda:checker(1))
button1.grid(row=1,column=1)
button2=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda:checker(2))
button2.grid(row=1,column=2)
button3=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(3))
button3.grid(row=1,column=3)
button4=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(4))
button4.grid(row=2,column=1)
button5=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(5))
button5.grid(row=2,column=2)
button6=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(6))
button6.grid(row=2,column=3)
button7=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(7))
button7.grid(row=3,column=1)
button8=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(8))
button8.grid(row=3,column=2)
button9=Button(root,width=15,height=7,font=('Times 16 bold'),command=lambda: checker(9))
button9.grid(row=3,column=3)
root.mainloop()
3、定义按钮
很明显上面的井字棋就是9个按钮。这里定义9个按钮。
def win(panels,sign):
return ((panels[1] == panels[2] == panels [3] == sign)
or (panels[1] == panels[4] == panels [7] == sign)
or (panels[1] == panels[5] == panels [9] == sign)
or (panels[2] == panels[5] == panels [8] == sign)
or (panels[3] == panels[6] == panels [9] == sign)
or (panels[3] == panels[5] == panels [7] == sign)
or (panels[4] == panels[5] == panels [6] == sign)
or (panels[7] == panels[8] == panels [9] == sign))
4、检查获胜的条件
检查获胜的条件,上面其中一种情况都是获胜的。
def checker(digit):
global count, mark, digits
if digit==1 and digit in digits:
digits.remove(digit)
if count%2==0:
mark ='X'
panels[digit]=mark
elif count%2!=0:
mark = 'O'
panels[digit]=mar
button1.config(text = mark)
count = count+1
sign = mark
if(win(panels,sign) and sign=='X'):
msg.showinfo("Result","Player1 wins")
root.destroy()
elif(win(panels,sign) and sign=='O'):
msg.showinfo("Result","Player2 wins")
root.destroy()
最后这里是点击下棋,然后用win
函数判断是否结束比赛赢得棋局。
来源:https://juejin.cn/post/7010574460176564238
0
投稿
猜你喜欢
- 1. 前言最近有点时间,就随便找点东西弄弄,倒也碰到了一些问题,在此记录下2. 环境Python3.11.3 + selenium4.9.1
- 守护进程1、守护子进程主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止其二:守护进程内无法再开启子进程,否则抛出异常:Ass
- 本文描述通过统计分析出医院信息系统需分区的表,对需分区的表选择分区键,即找出包括在你的分区键中的列(表的属性),对大型数据的管理比较有意义,
- python版本:python 3.9 mutagen版本:1.46.0mutagen是一个处理音频元数据的pytho
- 只添加了一些自己想到的常用的功能,欢迎大家补充添加自己的好的思路. 通用的正则和方法可以写在RegExpObj中,
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下#!/usr/bin/env python# -*- c
- 在炼丹时,数据的读取与预处理是关键一步。不同的模型所需要的数据以及预处理方式各不相同,如果每个轮子都我们自己写的话,是很浪费时间和精力的。P
- 一、 在数据库排序查询优化上的差异。在讲解这个内容之前,为了读者能够清楚我讲的内容,我要先谈一个概念。命中率,它是指从内存中取得数据而不从磁
- 在做语义分割项目时,标注的图片不合标准,而且类型是RGBA型,且是A的部分表示的类别,因此需要将该图片转化为RGB图片# -*- codin
- 有些时候我们需要从视频序列中均匀的随机采样,我们可以每隔x步进行一次采样,这就要求对一个list每隔x步进行一次截取,再从截取到的不同的子集
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 代码如下:function HTMLEncode(fString) fString=Replace(fString,&q
- 关于substr、substring和slice方法区别的文章,网上搜到了许多,文章内容也基本一致。而后,我将其中一篇文章中的代码挪到本地进
- 代码如下:ALTER proc [dbo].[sp_common_paypal_AddInfo] ( @paypalsql va
- ASP开发中有用的函数(function)集合,挺有用的,请大家保留!'******************************
- 1.URLError首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 &
- 翻译整理:Young.J;官方网站:http://jquery.comjQuery是一款同prototype一样优秀js开发库类,特别是对c
- 这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。>>> ra
- 1 类继承Python 是面向对象的编程语言,因此支持面向对象的三大特性之一:继承。继承是代码重用的一种途径,Python 中的继承就像现实
- 我们常见的RGB图像通常只有R、G、B三个通道,在图像处理的过程中会遇到往往需要向图像中添加透明度信息,如公司logo的设计,其输出图像文件