0% found this document useful (0 votes)
4 views

Program Code

Uploaded by

rayj6130
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Program Code

Uploaded by

rayj6130
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

PROGRAM CODE

import pygame, sys

import numpy as np

pygame.init()

WIDTH = 600

HEIGHT = 600

LINE_WIDTH = 15

WIN_LINE_WIDTH = 15

BOARD_ROWS = 3

BOARD_COLS = 3

SQUARE_SIZE = 200

CIRCLE_RADIUS = 60

CIRCLE_WIDTH = 15

CROSS_WIDTH = 25

SPACE = 55

RED = (255, 0, 0)

BG_COLOR = (20, 200, 160)

LINE_COLOR = (23, 145, 135)


CIRCLE_COLOR = (239, 231, 200)

CROSS_COLOR = (66, 66, 66)

screen = pygame.display.set_mode( (WIDTH, HEIGHT) )

pygame.display.set_caption( 'TIC TAC TOE' )

screen.fill( BG_COLOR )

board = np.zeros( (BOARD_ROWS, BOARD_COLS) )

def draw_lines():

pygame.draw.line( screen, LINE_COLOR, (0, SQUARE_SIZE),


(WIDTH, SQUARE_SIZE), LINE_WIDTH )

pygame.draw.line( screen, LINE_COLOR, (0, 2 * SQUARE_SIZE),


(WIDTH, 2 * SQUARE_SIZE), LINE_WIDTH )

pygame.draw.line( screen, LINE_COLOR, (SQUARE_SIZE, 0),


(SQUARE_SIZE, HEIGHT), LINE_WIDTH )

pygame.draw.line( screen, LINE_COLOR, (2 * SQUARE_SIZE, 0), (2


* SQUARE_SIZE, HEIGHT), LINE_WIDTH )

def draw_figures():
for row in range(BOARD_ROWS):

for col in range(BOARD_COLS):


if board[row][col] == 1:

pygame.draw.circle( screen, CIRCLE_COLOR,


(int( col * SQUARE_SIZE + SQUARE_SIZE//2 ), int( row * SQUARE_SIZE
+ SQUARE_SIZE//2 )), CIRCLE_RADIUS, CIRCLE_WIDTH )

elif board[row][col] == 2:

pygame.draw.line( screen, CROSS_COLOR, (col *


SQUARE_SIZE + SPACE, row * SQUARE_SIZE + SQUARE_SIZE -
SPACE), (col * SQUARE_SIZE + SQUARE_SIZE - SPACE, row *
SQUARE_SIZE + SPACE), CROSS_WIDTH )

pygame.draw.line( screen, CROSS_COLOR, (col *


SQUARE_SIZE + SPACE, row * SQUARE_SIZE + SPACE), (col *
SQUARE_SIZE + SQUARE_SIZE - SPACE, row * SQUARE_SIZE +
SQUARE_SIZE - SPACE), CROSS_WIDTH )

def mark_square(row, col, player):

board[row][col] = player

def available_square(row, col):

return board[row][col] == 0

def is_board_full():

for row in range(BOARD_ROWS):

for col in range(BOARD_COLS):

if board[row][col] == 0:
return False

return True

def check_win(player):

for col in range(BOARD_COLS):

if board[0][col] == player and board[1][col] == player and


board[2][col] == player:

draw_vertical_winning_line(col, player)

return True

for row in range(BOARD_ROWS):

if board[row][0] == player and board[row][1] == player and


board[row][2] == player:

draw_horizontal_winning_line(row, player)

return True

if board[2][0] == player and board[1][1] == player and board[0][2] ==


player:

draw_asc_diagonal(player)

return True

if board[0][0] == player and board[1][1] == player and board[2][2] ==


player:
draw_desc_diagonal(player)

return True

return False

def draw_vertical_winning_line(col, player):

posX = col * SQUARE_SIZE + SQUARE_SIZE//2

if player == 1:

color = CIRCLE_COLOR

elif player == 2:

color = CROSS_COLOR

pygame.draw.line( screen, color, (posX, 15), (posX, HEIGHT - 15),


LINE_WIDTH )

def draw_horizontal_winning_line(row, player):

posY = row * SQUARE_SIZE + SQUARE_SIZE//2

if player == 1:

color = CIRCLE_COLOR

elif player == 2:

color = CROSS_COLOR
pygame.draw.line( screen, color, (15, posY), (WIDTH - 15, posY),
WIN_LINE_WIDTH )

def draw_asc_diagonal(player):

if player == 1:

color = CIRCLE_COLOR

elif player == 2:

color = CROSS_COLOR

pygame.draw.line( screen, color, (15, HEIGHT - 15), (WIDTH - 15,


15), WIN_LINE_WIDTH )

def draw_desc_diagonal(player):

if player == 1:

color = CIRCLE_COLOR

elif player == 2:

color = CROSS_COLOR

pygame.draw.line( screen, color, (15, 15), (WIDTH - 15, HEIGHT -


15), WIN_LINE_WIDTH )

def restart():

screen.fill( BG_COLOR )
draw_lines()

for row in range(BOARD_ROWS):

for col in range(BOARD_COLS):

board[row][col] = 0

draw_lines()

player = 1

game_over = False

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

if event.type == pygame.MOUSEBUTTONDOWN and not


game_over:

mouseX = event.pos[0]

mouseY = event.pos[1]

clicked_row = int(mouseY // SQUARE_SIZE)

clicked_col = int(mouseX // SQUARE_SIZE)


if available_square( clicked_row, clicked_col ):

mark_square( clicked_row, clicked_col, player )

if check_win( player ):

game_over = True

player = player % 2 + 1

draw_figures()

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_r:

restart()

player = 1

game_over = False

pygame.display.update()

You might also like