Python弹窗围棋游戏:简单易懂的代码示例
要编写一个弹窗围棋游戏,需要使用Python的图形界面库,例如Tkinter。下面是一个简单的示例代码,展示了一个基本的弹窗围棋游戏:
import tkinter as tk
class GobangGame:
def __init__(self, root):
self.root = root
self.canvas = tk.Canvas(root, width=600, height=600)
self.canvas.pack()
self.canvas.bind('<Button-1>', self.on_click)
self.board = [[0] * 15 for _ in range(15)]
self.current_player = 1
def draw_board(self):
self.canvas.create_rectangle(0, 0, 600, 600, fill='saddle brown', outline='')
for i in range(15):
self.canvas.create_line(20 + 40 * i, 20, 20 + 40 * i, 580, fill='black')
self.canvas.create_line(20, 20 + 40 * i, 580, 20 + 40 * i, fill='black')
def draw_piece(self, row, col, player):
x = 20 + 40 * col
y = 20 + 40 * row
if player == 1:
color = 'black'
else:
color = 'white'
self.canvas.create_oval(x - 18, y - 18, x + 18, y + 18, fill=color)
def on_click(self, event):
if 20 <= event.x <= 580 and 20 <= event.y <= 580:
col = (event.x - 20) // 40
row = (event.y - 20) // 40
if self.board[row][col] == 0:
self.board[row][col] = self.current_player
self.draw_piece(row, col, self.current_player)
self.check_win(row, col)
self.current_player = 3 - self.current_player
def check_win(self, row, col):
directions = [(1, 0), (0, 1), (1, 1), (1, -1)]
for dx, dy in directions:
count = 1
r, c = row, col
while 0 <= r + dx < 15 and 0 <= c + dy < 15 and self.board[r + dx][c + dy] == self.current_player:
count += 1
r += dx
c += dy
r, c = row, col
while 0 <= r - dx < 15 and 0 <= c - dy < 15 and self.board[r - dx][c - dy] == self.current_player:
count += 1
r -= dx
c -= dy
if count >= 5:
self.show_message('Player {} wins!'.format(self.current_player))
def show_message(self, message):
self.canvas.create_text(300, 300, text=message, font=('Arial', 24, 'bold'), fill='white')
root = tk.Tk()
root.title('Gobang')
game = GobangGame(root)
game.draw_board()
root.mainloop()
这个程序使用了Tkinter库创建了一个窗口,然后在窗口上绘制了一个棋盘。玩家可以点击棋盘上的空白位置下棋,黑白两方轮流下棋。当有一方连成五个棋子时,弹出一个消息框显示该玩家获胜。
原文地址: https://www.cveoy.top/t/topic/qd5E 著作权归作者所有。请勿转载和采集!