用python在文本框内实现五子棋游戏
时间: 2024-05-01 08:23:31 浏览: 15
好的,以下是一个简单的五子棋游戏实现,使用了tkinter库来实现GUI界面:
```python
import tkinter as tk
from tkinter import messagebox
class ChessBoard:
def __init__(self, master):
self.master = master
self.master.title("五子棋游戏")
self.master.geometry("450x450")
self.canvas = tk.Canvas(self.master, bg="white", width=450, height=450)
self.canvas.pack()
self.canvas.bind("<Button-1>", self.play)
self.board = [[0 for i in range(15)] for j in range(15)]
self.player = 1
self.draw_board()
def draw_board(self):
for i in range(15):
self.canvas.create_line(15+30*i, 15, 15+30*i, 435, width=2)
self.canvas.create_line(15, 15+30*i, 435, 15+30*i, width=2)
self.canvas.create_rectangle(13,13,437,437,width=4)
self.canvas.create_oval(57,57,393,393,fill="black")
self.canvas.create_text(225, 20, text="五 子 棋 游 戏", font=("Helvetica", 16))
def play(self, event):
if (self.board[(event.y-15)//30][(event.x-15)//30] == 0):
if (self.player == 1):
self.canvas.create_oval((event.x-15)//30*30+15, (event.y-15)//30*30+15, (event.x-15)//30*30+45, (event.y-15)//30*30+45, fill="black")
self.board[(event.y-15)//30][(event.x-15)//30] = 1
if self.check_win(1):
messagebox.showinfo(title="恭喜", message="黑棋胜利!")
self.canvas.unbind("<Button-1>")
self.player = 2
else:
self.canvas.create_oval((event.x-15)//30*30+15, (event.y-15)//30*30+15, (event.x-15)//30*30+45, (event.y-15)//30*30+45, fill="white")
self.board[(event.y-15)//30][(event.x-15)//30] = 2
if self.check_win(2):
messagebox.showinfo(title="恭喜", message="白棋胜利!")
self.canvas.unbind("<Button-1>")
self.player = 1
def check_win(self, player):
for i in range(15):
for j in range(11):
if self.board[i][j] == player and self.board[i][j+1] == player and self.board[i][j+2] == player and self.board[i][j+3] == player and self.board[i][j+4] == player:
return True
for i in range(11):
for j in range(15):
if self.board[i][j] == player and self.board[i+1][j] == player and self.board[i+2][j] == player and self.board[i+3][j] == player and self.board[i+4][j] == player:
return True
for i in range(11):
for j in range(11):
if self.board[i][j] == player and self.board[i+1][j+1] == player and self.board[i+2][j+2] == player and self.board[i+3][j+3] == player and self.board[i+4][j+4] == player:
return True
for i in range(11):
for j in range(4, 15):
if self.board[i][j] == player and self.board[i+1][j-1] == player and self.board[i+2][j-2] == player and self.board[i+3][j-3] == player and self.board[i+4][j-4] == player:
return True
return False
root = tk.Tk()
game = ChessBoard(root)
root.mainloop()
```
运行代码后,会弹出一个窗口,可以在窗口中进行五子棋游戏。黑色为先手,白色为后手。当有一方获得五子连线时,会弹出提示框,显示胜利者信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)