parent
09c5a234fc
commit
3560882002
@ -0,0 +1,50 @@
|
||||
import pygame
|
||||
pygame.init()
|
||||
screen = pygame.display.set_mode((600, 600))
|
||||
pygame.display.set_caption('五子棋-EduCoder')
|
||||
space = 20
|
||||
cell_size = 40
|
||||
cell_num = 15
|
||||
board = [[0 for _ in range(cell_num)] for _ in range(cell_num)]
|
||||
current_player = 1
|
||||
def check_winner(board, x, y):
|
||||
directions = [(-1, 0), (1, 0), (0, -1), (0, 1), (-1, -1), (-1, 1), (1, -1), (1, 1)]
|
||||
for dx, dy in directions:
|
||||
count = 1
|
||||
for i in range(-1, 2):
|
||||
if i != 0:
|
||||
nx, ny = x + i * dx, y + i * dy
|
||||
while 0 <= nx < cell_num and 0 <= ny < cell_num and board[ny][nx] == current_player:
|
||||
count += 1
|
||||
nx, ny = nx + dx, ny + dy
|
||||
if count >= 5:
|
||||
return True
|
||||
return False
|
||||
while True:
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
pygame.quit()
|
||||
exit()
|
||||
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||
pos = pygame.mouse.get_pos()
|
||||
x = (pos[0] - space) // cell_size
|
||||
y = (pos[1] - space) // cell_size
|
||||
if 0 <= x < cell_num and 0 <= y < cell_num and board[y][x] == 0:
|
||||
board[y][x] = current_player
|
||||
if check_winner(board, x, y):
|
||||
print(f"Player {current_player} wins!")
|
||||
current_player = 2 if current_player == 1 else 1
|
||||
screen.fill((204, 153, 102))
|
||||
for x in range(0, cell_size * cell_num, cell_size):
|
||||
pygame.draw.line(screen, (200, 200, 200), (x + space, 0 + space),
|
||||
(x + space, cell_size * (cell_num - 1) + space), 1)
|
||||
for y in range(0, cell_size * cell_num, cell_size):
|
||||
pygame.draw.line(screen, (200, 200, 200), (0 + space, y + space),
|
||||
(cell_size * (cell_num - 1) + space, y + space), 1)
|
||||
for x in range(cell_num):
|
||||
for y in range(cell_num):
|
||||
if board[y][x] == 1:
|
||||
pygame.draw.circle(screen, (0, 0, 0), ((x * cell_size) + space + cell_size // 2, (y * cell_size) + space + cell_size // 2), cell_size // 2 - 2)
|
||||
elif board[y][x] == 2:
|
||||
pygame.draw.circle(screen, (255, 255, 255), ((x * cell_size) + space + cell_size // 2, (y * cell_size) + space + cell_size // 2), cell_size // 2 - 2)
|
||||
pygame.display.update()
|
Loading…
Reference in new issue