Trabalho 1 MP 2021/1
|
VerificaLinha
é a função base do código através da qual as outras são construídas portanto, devemos verificar primeiros seus casos
- Há um vencedor na linha ou não? Se sim retorna este vencedor - a linha é vazia? Se sim então está indefinido - Do contrário: indefinido
Se todos os elementos forem iguais em pares (([0] == [1]) && ([1] == [2]))
, então retona o valor do jogador
Verifica se dado uma linha onde todos os elemetnos são iguais a X o retorno é igual a X
Verifica se dado uma linha onde todos os elemetnos são iguais a O o retorno é igual a O
Verifica se a linha não tem um vencedor (caso -1)
Verifica se dado uma linha onde todos os elemetnos são iguais a 0 o retorno é igual a 0
VerificaColuna
é reponsável por verificar se há um vencedor numa dada coluna de uma matriz o processo é executado convertendo a coluna requisitada em uma linha e invocando a função VerificaLinha
, não sendo necessário extender os casos de teste base. Os casos então se resumem aos casos da função VerificaLinha
Dado uma matriz verifica se há algum vencedor em alguma das linhas, verifica-se coluna a coluna, por isso três condições devem ser satisfeitas.
VerificaDiagonal
segue a mesma componentização de VerificaColuna
, mas no lugar do argumento da posição da coluna, extraimos a diagonal baseado no argumento de direção (esquerda ou direita)
Verifica se para uma dada matriz há um vencedor em suas diagonais, com uma matriz apenas é possível testar os dois casos possíveis (direita e esquerda), já que como VerificaDiagonal
é construída da composição de VerificaLinha
basta que a segunda tenha casos suficientes de teste.
CountPlays
é uma função auxiliar que serve para contar quantas casas um jogador preencheu em uma matriz
Dado uma matriz qualquer, é esperado que a função retorne a quantidade correta de jogadas de cada um dos jogadores em um tabuleiro.
isDraw
verifica se um jogo está empatado, esse caso só é possível se o jogo não for impossível e se a matriz está totalmente preenchida.
Dado uma matriz qualquer, se houver 0 no tabuleiro é esperado que não haja um empate.
Dado uma matriz representando um tabuleiro impossível a função deve retornar falso
isImpossibleGame
verifica se há um jogador com uma diferença maior do que 2 entre o número de jogadas presentes no tabuleiros
Dado uma matriz impossível, deve retornar true, dado uma matriz possível deve retornar false
VerificaVelha
organiza todas as verificações anteriores e agrupa os retornos das funções auxiliares com o objetivo de informar ao caller se há um vencedor no tabuleiro, se o jogo é impossível, está em empate ou se é indefinido.
Dado uma matriz qualquer deve retornar o estado do jogo, respeitada as devidas condições e regras do jogo. Há uma serie de requerimentos sendo verificado para cada tipo de retorno esperado.