Skip to content

JundMaster/Projeto-LP1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wolf and Sheep

Grupo 08:

Nome Número GitHub
Luiz Santos a21901441 JundMaster
Pedro Marques a21900253 pmarques93
Gonçalo Verde a21901395 MrVerdinsky

Tarefas realizadas no exercício

A maior parte das tarefas foram realizadas por mais de um elemento.

Tarefas realizadas por ordem cronológica

Gonçalo Verde Luiz Santos Pedro Marques
Input inicial do Utilizador Classe Square Classe Square
Criação das ovelhas Gameloop geral Criação do Lobo/Método Intro /Método Victory
Gameloop das ovelhas Movimentação com input Gameloop do lobo
Limitação do movimento das ovelhas Try-Catch do lobo Limitação do movimento do lobo
Método WolfGameOver Try-Catch das ovelhas Método PrintBoard
Método SheepGameOver / Método SheepChosen Método CheckConvert Método LegalMove
Documentação XML Fluxograma / Polish do código Relatório

Repositório git

https://github.com/JundMaster/Projeto-LP1.git


Descrição da solução

Para a resolução deste exercício começámos por criar uma classe Square para cada quadrado do tabuleiro, de modo a termos acesso a determinadas características dos mesmos, como a row, column e isPlayable para saber se está ocupado. A lógica foi que o Square - ou não pode ser jogado, ou pode ser jogado, ou está ocupado por um animal -. Após a criação da classe, construímos uma função com um array bidemensional para criar um tabuleiro 8x8, onde todo o jogo vai decorrer. Este tabuleiro vai ser desenhado com um for loop, numa função à parte, onde vão ser apresentados todos os quadrados do tabuleiro juntamente com os animais.

Após isto optámos por criar os loops de gameplay com do whiles, nos quais começámos por criar o input do utilizador para a movimentação tanto do lobo como das ovelhas, em que utilizámos os números da column e da row (da classe Square) para mudar a posição dos mesmos. De modo a controlar os movimentos dos animais, utilizamos condições que são aceites apenas quando a jogada é possível (isPlayable==true), tendo sido esta condição na qual nos baseámos para a maior parte do código. As jogadas são controladas através de números par/ímpar, que vão definir se é o turno do lobo ou das ovelhas. O código para o lobo e para as ovelhas é semelhante em todos os aspetos.

Entretanto, de modo a limitar inputs não desejados do utilizador, criámos um try-catch que imprime mensagens de erro caso a opção introduzida não seja uma possibilidade. Posteriormente foi criado o método CheckConvert para este efeito.

Mais tarde, para uma melhor organização do código, dividimos as "responsabilidades" em métodos que executam a movimentação dos animais e condições que terminam o jogo.


Arquitetura do código

Métodos:

  • Main();

    • O método corre a intro() e a game();
  • Game();

    • Responsável pela loop inteiro do jogo.
  • Intro();

    • Imprime regras do jogo no ínicio;
  • Victory();

    • Imprime mensagem de vitória no final do jogo;
  • LegalMove();

    • Só aceita números com +1/-1 que a casa atual;
  • WolfGameOver();

    • Verifica se o lobo ainda tem jogadas possíveis, caso não tenha o jogo é terminado;
  • SheepGameOver();

    • Verifica se a ovelha ainda tem jogadas possíveis, caso não tenha o jogo é terminado;
  • SheepChosen();

    • Verifica qual a ovelha que o jogador escolheu;
  • PrintBoard();

    • Imprime o tabuleiro do jogo;
  • CheckConvert();

    • Imprime mensagens de erro se o input do utilizador não estiver correto;
  • FirstTurn();

    • Primeiro turno do jogo;
  • WolfTurn();

    • Turnos do lobo;
  • SheepTurn();

    • Turnos da ovelha;

Classes:

  • Square;

    • Contém a row, column e isPlayable;

Fluxograma

Fluxograma

Trocas de ideias/referências

Criação da classe Square

Try-Catch

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages