Python+PYQT简单五子棋小游戏
废话不多说直接上代码
安装几个简单的依赖直接运行
代码
import tkinter as tk
from tkinter import messagebox
class FiveInARowGame:
def __init__(self):
self.current_player = "X"
self.board = [[" " for _ in range(15)] for _ in range(15)]
self.window = tk.Tk()
self.window.title("五子棋游戏")
# 设置棋盘背景为木头样式黄色
self.board_frame = tk.Frame(self.window, bg="#DDB88C")
self.board_frame.pack(padx=10, pady=10)
self.buttons = [[None for _ in range(15)] for _ in range(15)]
for i in range(15):
for j in range(15):
# 将棋子更改为黑白的圆形
self.buttons[i][j] = tk.Button(self.board_frame, text=" ", width=2, height=1, relief=tk.FLAT,
font=("Arial", 14, "bold"), bg="#ECECEC", fg="#333333",
command=lambda row=i, col=j: self.make_move(row, col))
self.buttons[i][j].grid(row=i, column=j, padx=2, pady=2)
def make_move(self, row, col):
if self.board[row][col] == " ":
self.board[row][col] = self.current_player
self.buttons[row][col].configure(text=self.current_player, state=tk.DISABLED)
if self.check_winner(row, col):
messagebox.showinfo("胜利", f"恭喜玩家 {self.current_player} 获胜!")
self.window.quit()
self.switch_player()
def switch_player(self):
if self.current_player == "X":
self.current_player = "O"
else:
self.current_player = "X"
def check_winner(self, row, col):
directions = [(1, 0), (0, 1), (1, 1), (1, -1)] # 检查的四个方向
for dx, dy in directions:
count = 1
r, c = row, col
while count < 5:
r += dx
c += dy
if r < 0 or r >= 15 or c < 0 or c >= 15 or self.board[r][c] != self.current_player:
break
count += 1
r, c = row, col
while count < 5:
r -= dx
c -= dy
if r < 0 or r >= 15 or c < 0 or c >= 15 or self.board[r][c] != self.current_player:
break
count += 1
if count >= 5:
return True
return False
def start(self):
self.window.mainloop()
if __name__ == '__main__':
game = FiveInARowGame()
game.start()
快拿去和朋友玩一玩吧!