Requisitos Funcionais - pds-chess/chess GitHub Wiki

  • História #1: Como usuário, gostaria de escolher criar um novo jogo em um menu para jogar xadrez com 2 jogadores localmente.

    • Critérios de aceitação:
      • Posso criar apenas um jogo por vez.
      • Ao fechar o programa, o jogo em execução é finalizado.
      • Um jogo deve ter dois jogadores.
      • Cada jogador pode controlar 16 peças, sendo 8 peões, 2 torres, 2 cavalos, 2 bispos, uma rainha e um rei.
      • A disposição inicial do tabuleiro deve seguir as definições da regra do xadrez.
    • Responsável: [Leônidas]
  • História #2: Como jogador, gostaria de mover uma peça de acordo com regras tradicionais do xadrez.

    • Critérios de aceitação:
      • Cada tipo de peça possui movimentos específicos que pode realizar de acordo com as regras.
      • Caso seja um movimento válido, a nova posição da peça é a coordenada que foi movimentada.
      • Caso seja um movimento válido, a posição antiga da peça deve ficar vazia.
      • Um jogador pode movimentar apenas suas próprias peças.
      • Um jogador só pode movimentar suas peças em seu turno.
      • Peças que movem várias casas não podem se movimentar para campos nas suas linhas de movimento que estão inacessíveis por estarem atrás de outras peças.
      • O cavalo pode se mover para qualquer uma das casas que tem acesso de acordo com as regras.
    • Responsável: [Davi]
  • História #3: Como jogador, gostaria de capturar as peças do meu adversário.

    • Critérios de aceitação:
      • A peça que capturou uma outra peça deve ter como nova posição as coordenadas da peça capturada.
      • Uma captura de peça deve ser precedida de uma movimentação.
      • Um peão não captura como se movimenta, mas captura as peças em suas diagonais frontais.
      • Um jogador não pode capturar suas prórias peças.
      • Ao capturar uma peça, mostrar no início do turno adversário qual peça foi capturada e qual peça a capturou.
    • Responsável: [Davi]
  • História #4: Como jogador, eu tenho que sair de posições de cheque para continuar o jogo.

    • Critérios de aceitação:
      • Os únicos movimentos que podem ser realizados são aqueles que tiram o rei de uma possível coordenada de captura de peças adversárias.
      • Movimentos que deixam o rei em risco não são válidos.
    • Responsável: [Daniel]
  • História 5: Como jogador, gostaria de fazer um roque.

    • Critérios de aceitação:
      • Um roque só pode ocorrer se o rei e a torre alvo não tiverem se movimentado.
      • Um roque só pode ocorrer se não houver peças entre o rei e a torre alvo.
      • Um roque não pode ser feito se o rei estiver em cheque.
      • O rei deve se movimentar 2 casas em direção da torre alvo, e a torre alvo deve se desolcar para a casa que o rei pulou.
    • Responsável: [Breno]
  • História 6: Como jogo, devo declarar empate caso um jogador não tenha mais jogadas válidas e o rei não esteja em cheque.

    • Critérios de aceitação:
      • O empate deve ser declarado no início do turno de um jogador.
      • Um empate por afogamento deve ser declarado caso o jogador atual não tenha movimentos válidos e o rei não esteja em cheque.
      • O jogo deve finalizar após o empate
    • Responsável: [Leônidas]
  • História 7: Como jogador, gostaria de fazer um cheque-mate para ganhar o jogo.

    • Critérios de aceitação:
      • O cheque-mate deve ser declarado ao iniciar o turno de um jogador.
      • Um cheque-mate deve ser declarado caso o jogador atual não tenha movimentos válidos e o rei esteja em cheque.
      • O jogo deve finalizar após o cheque-mate.
    • Responsável: [Daniel]
  • História 8: Como jogador, gostaria de promover um peão ao alcançar o fim do tabuleiro adversário.

    • Critérios de aceitação:
      • Um peão só pode promover caso esteja na última linha do lado oposto que iniciou.
      • A promoção deve ocorrer assim que o peão alcançar as casas com o gatilho.
      • Um peão pode promover para qualquer outra peça que não seja o rei, e se comporta como a peça escolhida.
    • Responsável: [Breno]
  • História 9: Como jogador, gostaria de desistir para finalizar a partida antes de um cheque-mate.

    • Critérios de aceitação:
      • Um jogador só pode desistir durante seu turno.
      • O jogo acaba com vitória para o adversário após confirmar a desistência.
    • Responsável: [Enzo]
  • História 10: Como jogador, gostaria de propor um empate ao meu oponente para finalizar a partida antes de um cheque-mate.

    • Critérios de aceitação:
      • Uma proposta de empate pode ser inicializada durante o turno do jogador.
      • Uma proposta de empate não interrompe o turno do jogador.
      • Uma proposta de empate aceita finaliza o jogo como empate.
    • Responsável: [Enzo]
  • História 11: Como jogador, gostaria de fazer um “en passant”.

    • Critérios de aceitação:
      • Apenas peões podem executar esse tipo de captura.
      • Essa captura só ocorre caso um peão adversário tenha avançado 2 casas como primeiro movimento e está ao lado do peão que irá realizar a captura.
      • A captura é feita ao mover o peão que irá capturar para a casa que foi pulada, e o peão capturado deve ser removido.
    • Responsável: [Breno]
  • História 12: Como jogador, gostaria de ver quais peças do jogo foram capturadas.

    • Critérios de aceitação:
      • A lista deve mostrar todas as peças do adversário que foram capturadas.
      • A lista não deve conter peças do próprio jogador.
    • Responsável: [Daniel]
  • História 13: Como jogo, devo identificar os jogadores.

    • Critérios de aceitação:
      • Os jogadores devem inserir nomes ao criar um novo jogo.
      • Os jogadores são identificados nos comandos do jogo com os nomes que inseriram.
    • Responsável: [Davi]
  • História 14: Como usuário, gostaria de visualizar as partidas passadas através de um histórico.

    • Critérios de aceitação:
      • O histórico de partidas deve enumerar todos os jogos que já ocorreram localmente.
      • Cada jogo deve ter uma sequência de jogadas que foram executadas na partida.
      • Os jogadores da partida devem ser identificados.
      • O resultado da partida deve estar disponível no fim do histórico da partida.
    • Responsável: [Enzo]