I'm writing a simple game of gomoku with pygame, but when I run the program the pygame windows opens and exits immediately after running. I know it's something wrong with the program itself as I tested pygame with an online pygame program and it worked fine, but I'm not sure which part itself is wrong. There are no errors, the program just closes. Here's the program:
import pygame
# Set the dimensions of the game board
BOARD_SIZE = 15
# Set the dimensions of the window
WINDOW_SIZE = (600, 600)
# Set the colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
RED = (255, 0, 0)
# Initialize the game board and history list
board = [[0 for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
history = []
# Initialize the game
pygame.init()
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption("Gomoku")
# Define the function to draw the game board
def draw_board():
for i in range(BOARD_SIZE):
pygame.draw.line(screen, BLACK, (40 + i * 40, 40), (40 + i * 40, 560))
pygame.draw.line(screen, BLACK, (40, 40 + i * 40), (560, 40 + i * 40))
# Define the function to draw the pieces on the game board
def draw_pieces():
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
if board[i][j] == 1:
pygame.draw.circle(screen, BLACK, (40 + i * 40, 40 + j * 40), 18)
elif board[i][j] == 2:
pygame.draw.circle(screen, WHITE, (40 + i * 40, 40 + j * 40), 18)
# Define the function to check for a win
def check_win(player):
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
if j + 4 < BOARD_SIZE and sum([board[i][k] == player for k in range(j, j+5)]) == 5:
return True
if i + 4 < BOARD_SIZE and sum([board[k][j] == player for k in range(i, i+5)]) == 5:
return True
if i + 4 < BOARD_SIZE and j + 4 < BOARD_SIZE and sum([board[i+k][j+k] == player for k in range(5)]) == 5:
return True
if i + 4 < BOARD_SIZE and j - 4 >= 0 and sum([board[i+k][j-k] == player for k in range(5)]) == 5:
return True
return False
def main():
player = 1
running = True
undo_button = pygame.Rect(450, 250, 100, 50)
redo_button = pygame.Rect(450, 350, 100, 50)
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if 40 <= x <= 560 and 40 <= y <= 560:
i, j = (x - 40) // 40, (y - 40) // 40
if board[i][j] == 0:
board[i][j] = player
history.append((i, j, player))
if check_win(player):
print("Player", player, "wins!")
running = False
player = 3 - player
I tried adding additional lines since I thought I did not write the loops correctly causing the program to exit immediately after it runs, but that didn't work either.