Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame, sys, numpy
- pygame.init()
- jogador = 1
- gameOver = False
- janela = pygame.display.set_mode((600,600))
- pygame.display.set_caption("Trabalho SO [PIPES] - Jogo Da Velha - Jogador {}".format(jogador))
- janela.fill((28,170,156)) #RGB Verde para cor do fundo
- # ABSTRAÇÃO DO TABULEIRO
- tabuleiro = numpy.zeros((3,3))
- corLinha = (23,145,135)
- tamanhoLinha = 15
- espacoCruz = 50
- # DESENHANDO LINHAS
- def desenharLinhas():
- # LINHAS HORIZONTAIS (janela, cor, pos_incial, pos_final, tamanho)
- pygame.draw.line(janela, corLinha, (0,200), (600,200), tamanhoLinha)
- pygame.draw.line(janela, corLinha, (0,400), (600,400), tamanhoLinha)
- # LINHAS VERTICAIS
- pygame.draw.line(janela, corLinha, (200,0), (200,600), tamanhoLinha)
- pygame.draw.line(janela, corLinha, (400,0), (400,600), tamanhoLinha)
- def desenhaFiguras():
- for linha in range(3):
- for coluna in range(3):
- corFigura = (66,66,66) if jogador != tabuleiro[linha][coluna] else (239,231,200)
- if tabuleiro[linha][coluna] == 2:
- pygame.draw.circle(janela, corFigura, (int(coluna*200 + 100), int(linha*200 + 100)), 60, 15)
- elif tabuleiro[linha][coluna] == 1:
- pygame.draw.line(janela, corFigura, (coluna*200+espacoCruz, linha*200+200-espacoCruz), (coluna*200+200-espacoCruz, linha*200+espacoCruz), 23)
- pygame.draw.line(janela, corFigura, (coluna*200+espacoCruz, linha*200+espacoCruz), (coluna*200+200-espacoCruz, linha*200+200-espacoCruz), 23)
- def marcarJogada(linha, coluna, jogador):
- tabuleiro[linha][coluna] = jogador
- def jogadaDisponivel(linha, coluna):
- return tabuleiro[linha][coluna] == 0
- def tabuleiroCheio():
- for linha in range(3):
- for coluna in range(3):
- if jogadaDisponivel(linha, coluna):
- return False
- return True
- def verifcaVitoria(jogador):
- # VERIFICA VERTICAL
- for coluna in range(3):
- if tabuleiro[0][coluna] == jogador and tabuleiro[1][coluna] == jogador and tabuleiro[2][coluna] == jogador:
- linhaVitoriaVertical(coluna, jogador)
- return True
- # VERIFICA HORIZONTAL
- for linha in range(3):
- if tabuleiro[linha][0] == jogador and tabuleiro[linha][1] == jogador and tabuleiro[linha][2] == jogador:
- linhaVitoriaHorizontal(linha, jogador)
- return True
- # VERIFICA DIAGONAL CRESCENTE
- if tabuleiro[2][0] == jogador and tabuleiro[1][1] == jogador and tabuleiro[0][2] == jogador:
- linhaVitoriaDiagonalCrescente(jogador)
- return True
- # VERIFICA DIAGONAL DECRESCENTE
- if tabuleiro[0][0] == jogador and tabuleiro[1][1] == jogador and tabuleiro[2][2] == jogador:
- linhaVitoriaDiagonalDecrescente(jogador)
- return True
- return False
- def linhaVitoriaVertical(coluna, jogador):
- posX = coluna * 200 + 100
- cor = (110, 235, 52)
- pygame.draw.line(janela, cor, (posX,15), (posX,600-15), 15)
- def linhaVitoriaHorizontal(linha, jogador):
- posY = linha * 200 + 100
- cor = (110, 235, 52)
- pygame.draw.line(janela, cor, (15, posY), (600-15, posY), 15)
- def linhaVitoriaDiagonalCrescente(jogador):
- cor = (110, 235, 52)
- pygame.draw.line(janela, cor, (15,600-15), (600-15,15), 15)
- def linhaVitoriaDiagonalDecrescente(jogador):
- cor = (110, 235, 52)
- pygame.draw.line(janela, cor, (15,15), (600-15,600-15), 15)
- def restart():
- for linha in range(3):
- for coluna in range(3):
- tabuleiro[linha][coluna] = 0
- janela.fill((28,170,156)) #RGB Verde para cor do fundo
- desenharLinhas()
- desenharLinhas()
- while True:
- for evento in pygame.event.get():
- if evento.type == pygame.QUIT:
- sys.exit()
- if evento.type == pygame.MOUSEBUTTONDOWN and not gameOver:
- mouseX, mouseY = evento.pos[0], evento.pos[1]
- linhaClick = int(mouseY // 200)
- colunaClick = int(mouseX // 200)
- if jogadaDisponivel(linhaClick, colunaClick):
- marcarJogada(linhaClick, colunaClick, jogador)
- desenhaFiguras()
- gameOver = True if verifcaVitoria(jogador) else False
- jogador = 1 if jogador==2 else 2
- if evento.type == pygame.KEYDOWN:
- if evento.key == pygame.K_RETURN or evento.key == pygame.K_BACKSPACE:
- gameOver = False
- restart()
- pygame.display.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement