import pygame
import sys
# 初始化pygame
pygame.init()
# 创建屏幕对象
screen = pygame.display.set_mode((300, 300))
# 设置窗口标题
pygame.display.set_caption('井字棋')
# 创建一个列表来存储每个格子的状态,0表示空,1表示玩家1,2表示玩家2
grid = [[0 for _ in range(3)] for _ in range(3)]
# 定义格子的大小
grid_size = 100
# 定义玩家的当前移动
current_player = 1
# 定义游戏是否结束
game_over = False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif not game_over and event.type == pygame.MOUSEBUTTONDOWN:
# 获取鼠标位置
x, y = pygame.mouse.get_pos()
# 计算鼠标点击的格子位置
row, col = y // grid_size, x // grid_size
# 如果该格子是空的,那么玩家可以在该格子上移动
if grid[row][col] == 0:
grid[row][col] = current_player
# 切换到另一个玩家
current_player = 3 - current_player
# 填充背景色
screen.fill((255, 255, 255))
# 绘制格子
for i in range(3):
for j in range(3):
color = (0, 0, 0) if grid[i][j] == 0 else (255, 0, 0) if grid[i][j] == 1 else (0, 0, 255)
pygame.draw.rect(screen, color, (j * grid_size, i * grid_size, grid_size, grid_size), 0)
# 检查是否有玩家获胜
for row in range(3):
if grid[row][0] == grid[row][1] == grid[row][2] != 0:
game_over = True
for col in range(3):
if grid[0][col] == grid[1][col] == grid[2][col] != 0:
game_over = True
if grid[0][0] == grid[1][1] == grid[2][2] != 0:
game_over = True
if grid[0][2] == grid[1][1] == grid[2][0] != 0:
game_over = True
# 更新屏幕
pygame.display.flip()