以下是五子棋小游戏的Python代码:

import tkinter as tk
from tkinter import messagebox

class Gobang:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("五子棋")
        self.root.geometry("500x500")
        self.canvas = tk.Canvas(self.root, bg="white", width=400, height=400)
        self.canvas.pack(padx=20, pady=20)
        self.canvas.bind("<Button-1>", self.play)
        self.board = [[0] * 15 for _ in range(15)]
        self.color = 1
        self.draw_board()
        self.root.mainloop()

    def draw_board(self):
        for i in range(15):
            self.canvas.create_line(20, 20 + i * 20, 380, 20 + i * 20)
            self.canvas.create_line(20 + i * 20, 20, 20 + i * 20, 380)

    def play(self, event):
        x, y = event.x, event.y
        if x < 10 or x > 390 or y < 10 or y > 390:
            return
        i, j = round((y - 20) / 20), round((x - 20) / 20)
        if self.board[i][j] == 0:
            self.board[i][j] = self.color
            if self.color == 1:
                self.canvas.create_oval(20 + j * 20 - 10, 20 + i * 20 - 10,
                                        20 + j * 20 + 10, 20 + i * 20 + 10, fill="black")
                if self.check_win(i, j):
                    messagebox.showinfo("游戏结束", "黑方获胜!")
                    self.root.destroy()
            else:
                self.canvas.create_oval(20 + j * 20 - 10, 20 + i * 20 - 10,
                                        20 + j * 20 + 10, 20 + i * 20 + 10, fill="white")
                if self.check_win(i, j):
                    messagebox.showinfo("游戏结束", "白方获胜!")
                    self.root.destroy()
            self.color = 3 - self.color

    def check_win(self, i, j):
        directions = [(0, 1), (1, 0), (1, 1), (-1, 1)] # 四个方向
        for d in directions:
            count = 1 # 连续棋子数
            for k in range(1, 5):
                x, y = i + k * d[0], j + k * d[1]
                if x < 0 or x > 14 or y < 0 or y > 14 or self.board[x][y] != self.color:
                    break
                count += 1
            for k in range(1, 5):
                x, y = i - k * d[0], j - k * d[1]
                if x < 0 or x > 14 or y < 0 or y > 14 or self.board[x][y] != self.color:
                    break
                count += 1
            if count >= 5:
                return True
        return False

if __name__ == "__main__":
    Gobang()

运行代码后会弹出一个窗口,点击窗口中的格子可以下棋,当有一方获得五个连续棋子时游戏结束

五子棋小游戏代码

原文地址: http://www.cveoy.top/t/topic/dxtG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录