用python写一个弹窗象棋游戏
下面是一个使用Python编写的弹窗象棋游戏的示例代码:
import tkinter as tk
from tkinter import messagebox
class ChessGame:
def __init__(self):
self.window = tk.Tk()
self.window.title("弹窗象棋游戏")
self.board = [['' for _ in range(8)] for _ in range(8)]
self.current_player = 'White'
self.setup_board()
def setup_board(self):
for i in range(8):
for j in range(8):
label = tk.Label(self.window, text=self.board[i][j], width=5, height=2, relief=tk.RAISED)
label.grid(row=i, column=j)
label.bind('<Button-1>', lambda event, row=i, col=j: self.on_click(row, col))
def on_click(self, row, col):
if self.board[row][col] == '':
self.board[row][col] = self.current_player
self.update_board()
self.check_winner()
self.switch_player()
def update_board(self):
for i in range(8):
for j in range(8):
label = self.window.grid_slaves(row=i, column=j)[0]
label.configure(text=self.board[i][j])
def switch_player(self):
self.current_player = 'Black' if self.current_player == 'White' else 'White'
def check_winner(self):
# 检查四个角落是否有玩家获胜
if self.board[0][0] == self.board[0][7] == 'White' or self.board[7][0] == self.board[7][7] == 'Black':
self.show_winner_message(self.board[0][0])
# 检查每一行是否有玩家获胜
for i in range(8):
if all(self.board[i][j] == self.board[i][0] for j in range(8)):
self.show_winner_message(self.board[i][0])
# 检查每一列是否有玩家获胜
for j in range(8):
if all(self.board[i][j] == self.board[0][j] for i in range(8)):
self.show_winner_message(self.board[0][j])
def show_winner_message(self, player):
messagebox.showinfo("游戏结束", f"{player}玩家获胜!")
self.window.quit()
def start(self):
self.window.mainloop()
if __name__ == "__main__":
game = ChessGame()
game.start()
这个游戏使用了tkinter库来创建图形界面,通过点击棋盘上的格子来下棋。当有玩家连成一条直线时,会弹出一个消息框显示获胜信息。玩家可以通过关闭窗口或点击消息框中的"OK"按钮来结束游戏
原文地址: https://www.cveoy.top/t/topic/iwFw 著作权归作者所有。请勿转载和采集!