以下是五子棋小游戏的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()

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

Python 五子棋小游戏代码 - 简单易懂

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

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