Percursos
/
MIPS Assembly
MIPS Assembly
/
Exercícios
/
Estado do jogo do galo
Estado do jogo do galo

Estado do jogo do galo

Médio

Instruções

Neste exercício, vais implementar um programa que determina o estado de um jogo do galo. (Também podes conhecer este jogo como "noughts and crosses" ou "Xs and Os".)

O jogo é jogado numa grelha 3×3. Os jogadores colocam à vez Xs e Os na grelha. O jogo termina quando um jogador ganha ao colocar três das suas marcas em linha, numa coluna ou numa diagonal da grelha, ou quando a grelha inteira fica preenchida.

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

A tua tarefa é determinar em que estado está um jogo.

Há 3 estados possíveis do jogo:

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

Se o tabuleiro dado for inválido, lança um erro apropriado.

Se um tabuleiro cumprir as seguintes condições, é inválido:

  • O tabuleiro dado não pode ser alcançado quando os turnos são jogados pela ordem correta (lembra-te de que o X começa).
  • O jogo foi jogado depois de já ter terminado.

Exemplos

Jogo em curso

   |   |
 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
___|___|___
   |   |
   |   |
___|___|___
   |   |
   |   |
   |   |
Jogo continuado depois de uma vitória
   |   |
 X | X | X
___|___|___
   |   |
 O | O | O
___|___|___
   |   |
   |   |
   |   |

Formato do tabuleiro

O tabuleiro é representado por uma string terminada em nulo, com um caráter de nova linha no final de cada linha.

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

Registos

Registo Utilização Tipo Descrição
$a0 valor de entrada endereço string de entrada terminada em nulo
$v0 valor de 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 A ligação abre numa nova janela ou separador
MIPS Assembly Exercism

Estás pronto para começar Estado do jogo do galo?

Inscreve-te no Exercism para aprenderes e dominares MIPS Assembly com 70 exercícios, e mentoria humana real, tudo grátis.