Trilhas
/
MIPS Assembly
MIPS Assembly
/
Exercícios
/
Estado do jogo da velha
Estado do jogo da velha

Estado do jogo da velha

Médio

Instruções

Neste exercício, você vai implementar um programa que determina o estado de um jogo da velha tic-tac-toe. (Talvez você também conheça o jogo como "noughts and crosses" ou "Xs and Os".)

O jogo é disputado em uma grade 3×3. Os jogadores se revezam colocando Xs e Os na grade. O jogo termina quando um jogador vence ao alinhar três marcas em uma linha, uma coluna ou uma diagonal da grade, ou quando a grade inteira está preenchida.

Neste exercício, vamos supor que X começa.

Sua tarefa é determinar em que estado um determinado jogo está.

Existem 3 estados possíveis para o jogo:

  • O jogo está ongoing.
  • O jogo terminou em draw.
  • O jogo terminou em win.

Se o tabuleiro informado for inválido, lance um erro apropriado.

Um tabuleiro é inválido se atender às seguintes condições:

  • O tabuleiro informado não pode ser alcançado quando os turnos são jogados na ordem correta (lembre-se de que X começa).
  • Foram feitas jogadas depois de o jogo já ter terminado.

Exemplos

Jogo em andamento

   |   |
 X |   |
___|___|___
   |   |
   | X | O
___|___|___
   |   |
 O | X |
   |   |

Empate

   |   |
 X | O | X
___|___|___
   |   |
 X | X | O
___|___|___
   |   |
 O | X | O
   |   |

Vitória

   |   |
 X | X | X
___|___|___
   |   |
   | O | O
___|___|___
   |   |
   |   |
   |   |

Inválido

Ordem de turnos errada
   |   |
 O | O | X
___|___|___
   |   |
   |   |
___|___|___
   |   |
   |   |
   |   |
Continuação do jogo após uma vitória
   |   |
 X | X | X
___|___|___
   |   |
 O | O | O
___|___|___
   |   |
   |   |
   |   |

Formato do tabuleiro

O tabuleiro é representado como uma string terminada em nulo, com um caractere de nova linha no final de cada linha.

Um exemplo seria "X \n XO\nOX \n"

Registradores

Registrador Uso Tipo Descrição
$a0 entrada endereço string de entrada terminada em nulo
$v0 saída inteiro estado do jogo (1 = ongoing, 2 = draw, 3 = win, -1 = error)
$t0-9 temporário qualquer para armazenamento temporário
Editar via GitHub O link abre em uma nova janela ou aba
MIPS Assembly Exercism

Tudo pronto para começar Estado do jogo da velha?

Crie sua conta no Exercism para aprender e dominar MIPS Assembly com 70 exercícios e mentoria humana de verdade, tudo de graça.