Python实用:简易五子棋(Gobang)-下篇(内部逻辑的实现)

本文是Python五子棋游戏的下篇,主要介绍游戏逻辑的实现,包括判断输赢的算法和棋子落位逻辑。通过分析棋盘上横纵轴及两个斜边同色棋子数量,当某处达到5或更多时,确定赢家并结束游戏。此外,还讨论了如何在坐标点击后找到最近的棋位进行落子。最后,提出可以进一步开发自动对弈的逻辑。完整代码可在作者的GitHub仓库中获取。
摘要由CSDN通过智能技术生成

#问题情景:
接上篇,此篇完成五子棋的逻辑部分。
#思路:

  • 分析:需要一个判断输赢的逻辑、一个将棋子落在目标位置的逻辑、标签和按钮对应的方法
  • 判断输赢:
    • 分别对落子位置的横纵轴位置和两个斜边位置的同色棋子进行计数
    • 如果任意一处同色棋子数量达到5或5以上,则判断赢家和游戏结束
    • 每次棋子落下,都要调用一次判断输赢的逻辑
  • 落子:
    • 每次坐标点击会捕获一个坐标位置,找出离这个坐标最近的棋位
    • 落子
      #实现:
# -*- coding: utf-8 -*-
"""
Created on Fri Feb  2 20:04:38 2018

@author: 23755
"""

import tkinter as tk

PIECE_SIZE = 10

click_x = 0
click_y = 0

pieces_x = [i for i in range(32, 523, 35)]
pieces_y = [i for i in range(38, 529, 35)]

coor_black = []
coor_white = []

person_flag = 1
piece_color = "black"

#右上方的棋子提示(工具)
def showChange(color):
    global piece_color
    piece_color = color
    side_canvas.delete("show_piece")
    side_canvas.create_oval(110 - PIECE_SIZE, 25 - PIECE_SIZE,
                        110 + PIECE_SIZE, 25 + PIECE_SIZE,
                        fill = piece_color, tags = ("show_piece"))

#输赢的提示、游戏结束的提示(工具)
def pushMessage():
    if person_flag == -1:
        var1.set("白棋赢")
    elif person_flag == 1:
        var1.set("黑棋赢")
    var2.set("游戏结束")

#棋子的计数(工具)
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值