请用python实现人机交互五子棋游戏需要实现游戏界面
以下是使用Python实现人机交互五子棋游戏的示例代码:
import pygame
import sys
# 初始化游戏界面
pygame.init()
size = width, height = 600, 600
screen = pygame.display.set_mode(size)
pygame.display.set_caption("五子棋")
# 定义棋盘参数
line_color = (0, 0, 0)
line_width = 2
board_size = 15
grid_size = width // (board_size + 1)
# 定义棋子参数
black_color = (0, 0, 0)
black_radius = grid_size // 2 - 3
white_color = (255, 255, 255)
white_radius = grid_size // 2 - 3
# 初始化棋盘
board = [[0] * board_size for _ in range(board_size)]
# 绘制棋盘
def draw_board():
screen.fill((232, 204, 153))
for i in range(board_size):
pygame.draw.line(screen, line_color, (grid_size, (i + 1) * grid_size), (width - grid_size, (i + 1) * grid_size), line_width)
pygame.draw.line(screen, line_color, ((i + 1) * grid_size, grid_size), ((i + 1) * grid_size, height - grid_size), line_width)
# 绘制棋子
def draw_piece(row, col, color):
x = (col + 1) * grid_size
y = (row + 1) * grid_size
if color == black_color:
pygame.draw.circle(screen, black_color, (x, y), black_radius)
elif color == white_color:
pygame.draw.circle(screen, white_color, (x, y), white_radius)
pygame.display.update()
# 判断胜利条件
def check_win(row, col, color):
directions = [(0, 1), (1, 0), (1, 1), (1, -1)]
for direction in directions:
count = 1
for i in range(1, 5):
new_row = row + direction[0] * i
new_col = col + direction[1] * i
if 0 <= new_row < board_size and 0 <= new_col < board_size and board[new_row][new_col] == color:
count += 1
else:
break
for i in range(1, 5):
new_row = row - direction[0] * i
new_col = col - direction[1] * i
if 0 <= new_row < board_size and 0 <= new_col < board_size and board[new_row][new_col] == color:
count += 1
else:
break
if count >= 5:
return True
return False
# 人机交互
def play():
turn = black_color
game_over = False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN and turn == black_color:
if not game_over:
x, y = event.pos
col = (x // grid_size) - 1
row = (y // grid_size) - 1
if 0 <= row < board_size and 0 <= col < board_size and board[row][col] == 0:
draw_piece(row, col, turn)
board[row][col] = turn
if check_win(row, col, turn):
game_over = True
print("黑棋胜利!")
turn = white_color
if turn == white_color and not game_over:
# 实现AI下棋的逻辑
# 这里使用随机下棋的策略,可以替换为其他更高级的AI算法
import random
while True:
row = random.randint(0, board_size - 1)
col = random.randint(0, board_size - 1)
if board[row][col] == 0:
break
draw_piece(row, col, turn)
board[row][col] = turn
if check_win(row, col, turn):
game_over = True
print("白棋胜利!")
turn = black_color
if game_over:
pygame.time.delay(2000)
pygame.display.update()
# 主函数
if __name__ == '__main__':
draw_board()
play()
在运行以上代码后,将会弹出一个游戏窗口,玩家可以通过点击窗口中的格子来下棋,电脑会随机选择一个可用的位置下棋。当有一方获得五子连线时,游戏将会结束,并在控制台中打印胜利方
原文地址: https://www.cveoy.top/t/topic/hOuf 著作权归作者所有。请勿转载和采集!