Advertisement
KingOfWesteros

JogoDaVelha.py

Jun 7th, 2021
1,140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.48 KB | None | 0 0
  1. import pygame, sys, numpy
  2.  
  3.  
  4. pygame.init()
  5.  
  6. jogador = 1
  7. gameOver = False
  8.  
  9. janela = pygame.display.set_mode((600,600))
  10. pygame.display.set_caption("Trabalho SO [PIPES] - Jogo Da Velha - Jogador {}".format(jogador))
  11.  
  12. janela.fill((28,170,156)) #RGB Verde para cor do fundo
  13.  
  14. # ABSTRAÇÃO DO TABULEIRO
  15. tabuleiro = numpy.zeros((3,3))
  16.  
  17. corLinha = (23,145,135)
  18. tamanhoLinha = 15
  19. espacoCruz = 50
  20.  
  21. # DESENHANDO LINHAS
  22. def desenharLinhas():
  23.     # LINHAS HORIZONTAIS (janela, cor, pos_incial, pos_final, tamanho)
  24.     pygame.draw.line(janela, corLinha, (0,200), (600,200), tamanhoLinha)
  25.     pygame.draw.line(janela, corLinha, (0,400), (600,400), tamanhoLinha)
  26.     # LINHAS VERTICAIS
  27.     pygame.draw.line(janela, corLinha, (200,0), (200,600), tamanhoLinha)
  28.     pygame.draw.line(janela, corLinha, (400,0), (400,600), tamanhoLinha)
  29.  
  30. def desenhaFiguras():
  31.     for linha in range(3):
  32.         for coluna in range(3):
  33.             corFigura = (66,66,66) if jogador != tabuleiro[linha][coluna] else (239,231,200)
  34.  
  35.             if tabuleiro[linha][coluna] == 2:
  36.                 pygame.draw.circle(janela, corFigura, (int(coluna*200 + 100), int(linha*200 + 100)), 60, 15)
  37.            
  38.             elif tabuleiro[linha][coluna] == 1:
  39.                 pygame.draw.line(janela, corFigura, (coluna*200+espacoCruz, linha*200+200-espacoCruz), (coluna*200+200-espacoCruz, linha*200+espacoCruz), 23)
  40.                 pygame.draw.line(janela, corFigura, (coluna*200+espacoCruz, linha*200+espacoCruz), (coluna*200+200-espacoCruz, linha*200+200-espacoCruz), 23)
  41.  
  42.  
  43. def marcarJogada(linha, coluna, jogador):
  44.     tabuleiro[linha][coluna] = jogador
  45.  
  46. def jogadaDisponivel(linha, coluna):
  47.     return tabuleiro[linha][coluna] == 0
  48.  
  49. def tabuleiroCheio():
  50.     for linha in range(3):
  51.         for coluna in range(3):
  52.             if jogadaDisponivel(linha, coluna):
  53.                 return False
  54.     return True
  55.  
  56. def verifcaVitoria(jogador):
  57.     # VERIFICA VERTICAL
  58.     for coluna in range(3):
  59.         if tabuleiro[0][coluna] == jogador and tabuleiro[1][coluna] == jogador and tabuleiro[2][coluna] == jogador:
  60.             linhaVitoriaVertical(coluna, jogador)
  61.             return True
  62.    
  63.     # VERIFICA HORIZONTAL
  64.     for linha in range(3):
  65.         if tabuleiro[linha][0] == jogador and tabuleiro[linha][1] == jogador and tabuleiro[linha][2] == jogador:
  66.             linhaVitoriaHorizontal(linha, jogador)
  67.             return True
  68.  
  69.     # VERIFICA DIAGONAL CRESCENTE
  70.     if tabuleiro[2][0] == jogador and tabuleiro[1][1] == jogador and tabuleiro[0][2] == jogador:
  71.         linhaVitoriaDiagonalCrescente(jogador)
  72.         return True
  73.    
  74.     # VERIFICA DIAGONAL DECRESCENTE
  75.     if tabuleiro[0][0] == jogador and tabuleiro[1][1] == jogador and tabuleiro[2][2] == jogador:
  76.         linhaVitoriaDiagonalDecrescente(jogador)
  77.         return True
  78.  
  79.     return False
  80.  
  81. def linhaVitoriaVertical(coluna, jogador):
  82.     posX = coluna * 200 + 100
  83.     cor = (110, 235, 52)
  84.     pygame.draw.line(janela, cor, (posX,15), (posX,600-15), 15)
  85.  
  86. def linhaVitoriaHorizontal(linha, jogador):
  87.     posY = linha * 200 + 100
  88.     cor = (110, 235, 52)
  89.     pygame.draw.line(janela, cor, (15, posY), (600-15, posY), 15)
  90.  
  91. def linhaVitoriaDiagonalCrescente(jogador):
  92.     cor = (110, 235, 52)
  93.     pygame.draw.line(janela, cor, (15,600-15), (600-15,15), 15)
  94.  
  95. def linhaVitoriaDiagonalDecrescente(jogador):
  96.     cor = (110, 235, 52)
  97.     pygame.draw.line(janela, cor, (15,15), (600-15,600-15), 15)
  98.  
  99. def restart():
  100.     for linha in range(3):
  101.         for coluna in range(3):
  102.             tabuleiro[linha][coluna] = 0
  103.     janela.fill((28,170,156)) #RGB Verde para cor do fundo
  104.     desenharLinhas()
  105.  
  106.  
  107.  
  108. desenharLinhas()
  109.  
  110. while True:
  111.     for evento in pygame.event.get():
  112.        
  113.         if evento.type == pygame.QUIT:
  114.             sys.exit()
  115.  
  116.         if evento.type == pygame.MOUSEBUTTONDOWN and not gameOver:
  117.             mouseX, mouseY = evento.pos[0], evento.pos[1]
  118.             linhaClick = int(mouseY // 200)
  119.             colunaClick = int(mouseX // 200)
  120.  
  121.             if jogadaDisponivel(linhaClick, colunaClick):
  122.                 marcarJogada(linhaClick, colunaClick, jogador)
  123.                 desenhaFiguras()
  124.                 gameOver = True if verifcaVitoria(jogador) else False
  125.                 jogador = 1 if jogador==2 else 2
  126.  
  127.         if evento.type == pygame.KEYDOWN:
  128.             if evento.key == pygame.K_RETURN or evento.key == pygame.K_BACKSPACE:
  129.                 gameOver = False
  130.                 restart()
  131.  
  132.     pygame.display.update()
  133.    
  134.  
  135.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement