【围棋游戏——使用Python实现(纯tkinter gui)】

代码


#!/usr/bin/python3

使用Python内置GUI模块tkinter

from tkinter import *

ttk覆盖tkinter部分对象,ttk对tkinter进行了优化

from tkinter.ttk import *

深拷贝时需要用到copy模块

import copy

import tkinter.messagebox

围棋应用对象定义

class Application(Tk):

初始化棋盘,默认九路棋盘

def init(self,my_mode_num=9):

Tk.init(self)

模式,九路棋:9,十三路棋:13,十九路棋:19

self.mode_num=my_mode_num

窗口尺寸设置,默认:1.8

self.size=1.8

棋盘每格的边长

self.dd=360*self.size/(self.mode_num-1)

相对九路棋盘的矫正比例

self.p=1 if self.mode_num9 else (2/3 if self.mode_num13 else 4/9)

定义棋盘阵列,超过边界:-1,无子:0,黑棋:1,白棋:2

self.positions=[[0 for i in range(self.mode_num+2)] for i in range(self.mode_num+2)]

初始化棋盘,所有超过边界的值置-1

for m in range(self.mode_num+2):

for n in range(self.mode_num+2):

if (m*n0 or mself.mode_num+1 or n==self.mode_num+1):

self.positions[m][n]=-1

拷贝三份棋盘“快照”,悔棋和判断“打劫”时需要作参考

self.last_3_positions=copy.deepcopy(self.positions)

self.last_2_positions=copy.deepcopy(self.positions)

self.last_1_positions=copy.deepcopy(self.positions)

记录鼠标经过的地方,用于显示shadow时

self.cross_last=None

当前轮到的玩家,黑:0,白:1,执黑先行

self.present=0

初始停止运行,点击“开始游戏”运行游戏

self.stop=True

悔棋次数,次数大于0才可悔棋,初始置0(初始不能悔棋),悔棋后置0,下棋或弃手时恢复为1,以禁止连续悔棋

self.regretchance=0

图片资源,存放在当前目录下的/Pictures/中

self.photoW=PhotoImage(file = “./Pictures/W.png”)

self.photoB=PhotoImage(file = “./Pictures/B.png”)

self.photoBD=PhotoImage(file = “./Pictures/”+“BD”+“-”+str(self.mode_num)+“.png”)

self.photoWD=PhotoImage(file = “./Pictures/”+“WD”+“-”+str(self.mode_num)+“.png”)

self.photoBU=PhotoImage(file = “./Pictures/”+“BU”+“-”+str(self.mode_num)+“.png”)

self.photoWU=PhotoImage(file = “./Pictures/”+“WU”+“-”+str(self.mode_num)+“.png”)

用于黑白棋子图片切换的列表

self.photoWBU_list=[self.photoBU,self.photoWU]

self.photoWBD_list=[self.photoBD,self.photoWD]

窗口大小

self.geometry(str(int(600self.size))+‘x’+str(int(400self.size)))

画布控件,作为容器

self.canvas_bottom=Canvas(self,bg=‘#369’,bd=0,width=600s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值