Python+Tkinter实现经典井字棋小游戏

目录

  • 演示
  • 介绍
    • 官方文档
    • tkinter.messagebox
  • 源码

    演示 Python+Tkinter实现经典井字棋小游戏
    文章图片


    介绍 首先来介绍一下GUI库Tkinter
    Python+Tkinter实现经典井字棋小游戏
    文章图片

    主要模块:
    tkinterMain Tkinter module.

    tkinter.colorchooser 让用户选择颜色的对话框。
    tkinter.commondialog 本文其他模块定义的对话框的基类。
    tkinter.filedialog 允许用户指定文件的通用对话框,用于打开或保存文件。
    tkinter.font 帮助操作字体的工具。
    tkinter.messagebox 访问标准的 Tk 对话框。
    tkinter.scrolledtext 内置纵向滚动条的文本组件。
    tkinter.simpledialog 基础对话框和一些便捷功能。
    tkinter.ttkThemed widget set introduced in Tk 8.5, providing modern alternatives for many of the classic widgets in the main tkinter module.

    一个小demo大家熟悉一下
    from tkinter import *from tkinter import ttkroot = Tk()frm = ttk.Frame(root, padding=10)frm.grid()ttk.Label(frm, text="Hello World!").grid(column=0, row=0)ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)root.mainloop()


    官方文档
    我说的再好也不如去看看文档,有什么不明白的可以下方留言。嘿嘿嘿传送门

    tkinter.messagebox
    这部分其实我就是直接拿来用了没怎么了解,我把经常用的给大家说说
    Python+Tkinter实现经典井字棋小游戏
    文章图片

    class tkinter.messagebox.Message(master=None, **options)创建一个默认信息消息框。信息消息框tkinter.messagebox.showinfo(title=None, message=None, **options)警告消息框tkinter.messagebox.showwarning(title=None, message=None, **options)tkinter.messagebox.showerror(title=None, message=None, **options)疑问消息框tkinter.messagebox.askquestion(title=None, message=None, **options)tkinter.messagebox.askokcancel(title=None, message=None, **options)tkinter.messagebox.askretrycancel(title=None, message=None, **options)tkinter.messagebox.askyesno(title=None, message=None, **options)tkinter.messagebox.askyesnocancel(title=None, message=None, **options)

    【Python+Tkinter实现经典井字棋小游戏】
    源码 Python+Tkinter实现经典井字棋小游戏
    文章图片

    from tkinter import *import tkinter.messagebox as msgroot = Tk()root.title('TIC-TAC-TOE---Project Gurukul')# labelsLabel(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)digits = [1, 2, 3, 4, 5, 6, 7, 8, 9]# for player1 sign = X and for player2 sign= Ymark = ''# counting the no. of clickcount = 0panels = ["panel"] * 10def 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))def checker(digit):# 检查按键if digit == 1 and digit in digits:digits.remove(digit)##player1 will play if the value of count is even and for odd player2 will playif count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton1.config(text=mark)count = count + 1sign = markif (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()if digit == 2 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton2.config(text=mark)count = count + 1sign = markif (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()if digit == 3 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton3.config(text=mark)count = count + 1sign = markif (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()if digit == 4 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton4.config(text=mark)count = count + 1sign = markif (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()if digit == 5 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton5.config(text=mark)count = count + 1sign = markif (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()if digit == 6 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton6.config(text=mark)count = count + 1sign = markif (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()if digit == 7 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton7.config(text=mark)count = count + 1sign = markif (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()if digit == 8 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton8.config(text=mark)count = count + 1sign = markif (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()if digit == 9 and digit in digits:digits.remove(digit)if count % 2 == 0:mark = 'X'panels[digit] = markelif count % 2 != 0:mark = 'O'panels[digit] = markbutton9.config(text=mark)count = count + 1sign = markif (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()###if count is greater then 8 then the match has been tiedif (count > 8 and win(panels, 'X') == False and win(panels, 'O') == False):msg.showinfo("Result", "Match Tied")root.destroy()####定义每个格子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)

    以上就是Python+Tkinter实现经典井字棋小游戏的详细内容,更多关于Python Tkinter井字棋的资料请关注脚本之家其它相关文章!

      推荐阅读