你可以使用Python的GUI库(如Tkinter)创建一个窗口,然后在窗口中绘制棋盘。当鼠标左键被按下时,你可以在鼠标点击的位置绘制一个黑棋子;当鼠标右键被按下时,你可以在鼠标点击的位置绘制一个白棋子。以下是一个简单的示例代码:
```python
import tkinter as tk
# 棋盘大小
BOARD_SIZE = 19
# 棋子大小
STONE_SIZE = 20
class Board(tk.Canvas):
def __init__(self, master=None, **kwargs):
tk.Canvas.__init__(self, master, **kwargs)
self.master = master
self.stones = [[None] * BOARD_SIZE for i in range(BOARD_SIZE)]
self.bind("<Button-1>", self.place_black_stone)
self.bind("<Button-3>", self.place_white_stone)
def draw_board(self):
for i in range(BOARD_SIZE):
x0, y0, x1, y1 = self.get_cross_point(i, 0), self.get_cross_point(i, BOARD_SIZE - 1)
self.create_line(x0, y0, x1, y1)
x0, y0, x1, y1 = self.get_cross_point(0, i), self.get_cross_point(BOARD_SIZE - 1, i)
self.create_line(x0, y0, x1, y1)
for i in [3, 9, 15]:
for j in [3, 9, 15]:
x, y = self.get_cross_point(i, j)
self.create_oval(x - 2, y - 2, x + 2, y + 2, fill="black")
def get_cross_point(self, i, j):
x = (i + 1) * self.master.winfo_width() // (BOARD_SIZE + 1)
y = (j + 1) * self.master.winfo_height() // (BOARD_SIZE + 1)
return x, y
def place_black_stone(self, event):
i, j = self.get_clicked_cross_point(event)
if self.stones[i][j] is None:
x, y = self.get_cross_point(i, j)
self.create_oval(x - STONE_SIZE, y - STONE_SIZE, x + STONE_SIZE, y + STONE_SIZE, fill="black")
self.stones[i][j] = "black"
def place_white_stone(self, event):
i, j = self.get_clicked_cross_point(event)
if self.stones[i][j] is None:
x, y = self.get_cross_point(i, j)
self.create_oval(x - STONE_SIZE, y - STONE_SIZE, x + STONE_SIZE, y + STONE_SIZE, fill="white")
self.stones[i][j] = "white"
def get_clicked_cross_point(self, event):
x, y = event.x, event.y
i = round(x / self.master.winfo_width() * (BOARD_SIZE - 1))
j = round(y / self.master.winfo_height() * (BOARD_SIZE - 1))
return i, j
if __name__ == "__main__":
root = tk.Tk()
board = Board(root, width=400, height=400)
board.draw_board()
board.pack()
root.mainloop()
```
这个示例代码使用了Tkinter库创建了一个窗口,并在窗口中绘制了一个大小为19的棋盘。当鼠标左键被按下时,会在鼠标点击的位置绘制一个黑棋子;当鼠标右键被按下时,会在鼠标点击的位置绘制一个白棋子。你可以根据自己的需要修改代码来实现更复杂的功能。