-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathverificador.py
72 lines (56 loc) · 2.44 KB
/
verificador.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# -*- coding: utf-8 -*-
import copy
from tetrominos import Tetromino
#Classe responsável por verificar se as movimentações do tetraminó inputadas pelo jogador são possíveis
class Verificador:
def __init__(self):
pass
def cabe_tetramino(self,tabuleiro,tetramino,direcao):
#e o teramino que sera movimentado de acordo com a direcao
#input para verificar se hah ou nao colisao
tetramino_movido = copy.deepcopy(tetramino)
if direcao == "ROTACAO":
tetramino_movido.rotaciona()
else:
tetramino_movido.move(direcao)
linha_inicio = tetramino_movido.linha
coluna_inicio = tetramino_movido.coluna
linhas = len(tetramino_movido.matriz)
colunas = len(tetramino_movido.matriz[0])
caminho_tetramino = tetramino_movido.pega_posicoes_ocupadas()
for movimento in caminho_tetramino:
#verifica se a nova posicao de algum tijolo apos movimentacao
#do tetramino colidira com posicao jah ocupada no tabuleiro
linha_ocupada = linha_inicio + movimento[0]
coluna_ocupada = coluna_inicio + movimento[1]
#impede que o tetramino atravesse as paredes do tabuleiro
if linha_ocupada >= len(tabuleiro.matriz) - 1:
return False
if coluna_ocupada >= len(tabuleiro.matriz[0]) - 1:
return False
if coluna_ocupada <= 0:
return False
#impede que o tetramino se movimente para posicao jah ocupada
if linha_ocupada > -1:
if tabuleiro.matriz[linha_ocupada][coluna_ocupada] == 2:
return False
return True
#procura por alguma linha completa de tijolos pelo tabuleiro
def verifica_linhas_completas(self,tabuleiro):
linha = len(tabuleiro.matriz) - 2
while linha > 0:
linha_completa = True
coluna = 1
while linha_completa and coluna < (len(tabuleiro.matriz[0]) - 1):
if tabuleiro.matriz[linha][coluna] != 2:
linha_completa = False
coluna += 1
if linha_completa:
tabuleiro.limpa_linha(linha)
linha += 1
linha -= 1
def fim_de_jogo(self,tabuleiro):
for coluna in range(1,len(tabuleiro.matriz[0]) - 1):
if tabuleiro.matriz[0][coluna] == 2:
return True
return False