Skip to content
Snippets Groups Projects

game

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Jijainth Dhinakaran
    Edited
    main.py 3.54 KiB
    from ast import Return
    from multiprocessing.context import SpawnProcess
    from platform import python_branch
    from tkinter.tix import ROW
    import pygame
    import numpy
    import sys
    pygame.init()
    
    #Constants
    DISPLAY_HEIGHT = 900
    DISPLAY_WIDTH = 900
    LINE_WIDTH = 25
    SQUARE_SIZE= 300
    ROWS = 3
    COLUMNS=3
    CIRCLE_RADIUS = 60
    CIRCLE_WIDTH = 15
    SPACE = 60
    
    #Color Constants
    RED = (255, 0, 0)
    BG_COLOR = (20, 200, 160)
    LINE_COLOR = (23, 145, 135)
    CIRCLE_COLOR = (239, 231, 200)
    CROSS_COLOR = (66, 66, 66)
    
    display = pygame.display.set_mode((DISPLAY_WIDTH,DISPLAY_HEIGHT))
    display.fill(BG_COLOR)
    
    #Layout
    pygame.draw.line(display , LINE_COLOR ,(0,SQUARE_SIZE) , (DISPLAY_WIDTH , SQUARE_SIZE)  ,LINE_WIDTH)
    pygame.draw.line(display , LINE_COLOR ,(0,2*SQUARE_SIZE) , (DISPLAY_WIDTH , 2*SQUARE_SIZE)  ,LINE_WIDTH)
    pygame.draw.line(display , LINE_COLOR ,(SQUARE_SIZE,0) , (SQUARE_SIZE,DISPLAY_HEIGHT)  ,LINE_WIDTH)
    pygame.draw.line(display , LINE_COLOR ,(2*SQUARE_SIZE,0) , (2*SQUARE_SIZE,DISPLAY_HEIGHT)  ,LINE_WIDTH)
    
    #MAIN LIST
    game =  numpy.zeros((ROWS,COLUMNS))
    
    #Functions
    def draw_fiq():
        for x in range(ROWS):
            for y in range(COLUMNS):
                if game[x][y] == 1:
                    pygame.draw.circle(display,CIRCLE_COLOR,(int(COLUMNS*SQUARE_SIZE + SQUARE_SIZE//2)) , (int(ROWS*SQUARE_SIZE + SQUARE_SIZE//2)) ,60,15 )
                elif game[x][y] == 2:
                    pygame.draw.line(display,CROSS_COLOR,(COLUMNS*SQUARE_SIZE + SPACE , ROWS*SQUARE_SIZE+SPACE) , (COLUMNS*SQUARE_SIZE +SQUARE_SIZE-SPACE , ROWS*SQUARE_SIZE+SQUARE_SIZE-SPACE) , 25)
                    pygame.draw.line(display,CROSS_COLOR,(COLUMNS*SQUARE_SIZE+SPACE ,ROWS*SQUARE_SIZE+SQUARE_SIZE-SPACE) , (COLUMNS*SQUARE_SIZE+SQUARE_SIZE-SPACE , ROWS*SQUARE_SIZE+SPACE) , 25)
    
    def win(player):
        #By Columns
        for i in range(COLUMNS):
            if game[0][i] == player and game[1][i] == player and game[2][i] == player:
                print("PLAYER " + player + " WON ! /n" "Coordinates : 0,"+i+ "| 1,"+i+" | 2,"+i)
                return True
        #By Rows        
        for i in range(ROWS):
            if game[i][0] == player and game[i][1] == player and game[i][2] == player :
                print("PLAYER " + player + " WON ! /n" "Coordinates :" + i+",0 | "+i+",1 | "+i+",2 " )
                return True
                
        #Diagnol Lines
        if game[0][0] == player and game[1][1] == player and game[2][2] == player:
            print("PLAYER " + player + " WON ! /n" "Coordinates : 0,0 | 1,1 | 2,2 " )
            return True
        
        if game[2][0] == player and game[1][1] == player and game[0][2] == player:
            print("PLAYER " + player + " WON ! /n" "Coordinates : 2,0 | 1,1 | 0,2 " )
            return True
    
        return False
    
    def available(r,c):
        if game[r][c] == 0 :
            return True
        return False
    
    def mark(row, col, player):
    	game[row][col] = player
    
    def check_full():
        for i in ROWS:
            for j in COLUMNS:
                if game[i][j] == 0:
                    return False
        return True
            
    
    player = 1
    game_OVER = False
    
    #MAIN LOOP
    while True:
    	for event in pygame.event.get():
            
            if event.type == pygame.QUIT:
    		    sys.exit()
    
            if check_full():
                    print(" TIE !")
    
            if event.type == pygame.MOUSEBUTTONDOWN and not game_OVER:
                X_= event.pos[0]
                Y_ = event.pos[1]
                row = int(Y_ // SQUARE_SIZE)
    			col = int(X_ // SQUARE_SIZE)
    
                if available(row,col):
                    mark(row,col ,player)
                    if win(player):
                        game_OVER = True
                    player = player %2 + 1
                    
    
    
            
    
    
        pygame.display.update()
                    
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment