五子棋游戏:Python Tkinter 实现
导入 tkinter 模块
import tkinter as tk
定义全局变量
_al = [] # 已经落下的棋子坐标 _black = [] # 黑子的坐标 _white = [] # 白子的坐标 black = True # 黑子先手 stop = 0 # 判断是否结束游戏
定义回调函数
def callback(event): global _al, stop x = (event.x + 20) // 40 # 计算棋子在棋盘上的列数 y = (event.y + 10) // 40 + 1 # 计算棋子在棋盘上的行数 if event.x >= 40 and event.x <= 615 and event.y >= 20 and event.y <= 585 and stop == 0: # 判断落子是否在棋盘内 if [x, y] not in _al: # 判断该位置是否已经有棋子 _al.append([x, y]) # 记录该位置已经落子 if black == True: # 如果是黑子落子 black = False # 改为白子落子 victory = tk.Label(window, text='白子落子', bg='white', font=('Arial', 15), width=15, height=5) victory.place(x=650, y=100, anchor='nw') # 在界面上显示白子落子 _black.append([x, y]) # 记录黑子的位置 oval = canvas.create_oval((event.x + 20) // 40 * 40 - 15, (event.y + 8) // 40 * 40 + 5, (event.x + 20) // 40 * 40 + 15, (event.y + 8) // 40 * 40 + 35, fill='black') # 在界面上显示黑子 canvas.pack() else: # 如果是白子落子 black = True # 改为黑子落子 victory = tk.Label(window, text='黑子落子', bg='white', font=('Arial', 15), width=15, height=5) victory.place(x=650, y=100, anchor='nw') # 在界面上显示黑子落子 _white.append([x, y]) # 记录白子的位置 oval = canvas.create_oval((event.x + 20) // 40 * 40 - 15, (event.y + 8) // 40 * 40 + 5, (event.x + 20) // 40 * 40 + 15, (event.y + 8) // 40 * 40 + 35, fill='white') # 在界面上显示白子 canvas.pack() winner = win() # 判断是否有人获胜 if stop == 1: # 如果已经结束游戏 victory = tk.Label(window, text=winner + '获胜', bg='white', font=('Arial', 15), width=15, height=5) victory.place(x=650, y=100, anchor='nw') # 在界面上显示获胜者
游戏主程序
while (boss):
init() # 初始化游戏
im = get_image('1675775510278.gif', 850, 600) # 加载游戏背景图
canvas.create_image(428, 300, image=im) # 在界面上显示游戏背景图
stop = 0 # 初始化游戏状态
_start = True
if black == True: # 如果是黑子先手
victory = tk.Label(window, text='黑子落子', bg='white', font=('Arial', 15), width=15, height=5)
victory.place(x=650, y=100, anchor='nw') # 在界面上显示黑子落子
else: # 如果是白子先手
victory = tk.Label(window, text='白子落子', bg='white', font=('Arial', 15), width=15, height=5)
victory.place(x=650, y=100, anchor='nw') # 在界面上显示白子落子
while (_start):
for i in range(1, 16):
line = canvas.create_line(i * 40, 20, i * 40, 580) # 绘制棋盘的竖线
line = canvas.create_line(40, i * 40 - 20, 600, i * 40 - 20) # 绘制棋盘的横线
rect = canvas.create_rectangle(35, 15, 605, 585) # 绘制棋盘的边框
rect = canvas.create_rectangle(34, 14, 606, 586) # 绘制棋盘的加粗边框
oval = canvas.create_oval(157, 137, 163, 143, fill='black') # 绘制棋盘的四个星位
oval = canvas.create_oval(157, 457, 163, 463, fill='black')
oval = canvas.create_oval(477, 137, 483, 143, fill='black')
oval = canvas.create_oval(477, 457, 483, 463, fill='black')
oval = canvas.create_oval(315, 296, 325, 304, fill='black')
for i in _black:
oval = canvas.create_oval(i[0] * 40 - 15, i[1] * 40 - 35, i[0] * 40 + 15, i[1] * 40 - 5, fill='black') # 在界面上显示黑子
canvas.pack()
for i in _white:
oval = canvas.create_oval(i[0] * 40 - 15, i[1] * 40 - 35, i[0] * 40 + 15, i[1] * 40 - 5, fill='white') # 在界面上显示白子
canvas.pack()
canvas.bind('
原文地址: http://www.cveoy.top/t/topic/ojGp 著作权归作者所有。请勿转载和采集!