| Nome | Número | GitHub |
|---|---|---|
| Luiz Santos | a21901441 | JundMaster |
| Pedro Marques | a21900253 | pmarques93 |
| Gonçalo Verde | a21901395 | MrVerdinsky |
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 |
https://github.com/JundMaster/Projeto-LP1.git
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.
-
- O método corre a intro() e a game();
-
- Responsável pela loop inteiro do jogo.
-
- Imprime regras do jogo no ínicio;
-
- Imprime mensagem de vitória no final do jogo;
-
- Só aceita números com +1/-1 que a casa atual;
-
- Verifica se o lobo ainda tem jogadas possíveis, caso não tenha o jogo é terminado;
-
- Verifica se a ovelha ainda tem jogadas possíveis, caso não tenha o jogo é terminado;
-
- Verifica qual a ovelha que o jogador escolheu;
-
- Imprime o tabuleiro do jogo;
-
- Imprime mensagens de erro se o input do utilizador não estiver correto;
-
- Primeiro turno do jogo;
-
- Turnos do lobo;
-
- Turnos da ovelha;
-
- Contém a row, column e isPlayable;
- Sluiter, Shad."C# Chess Board 02 board cell classes" Youtube, uploaded by shad sluiter, Jun 13, 2019, https://www.youtube.com/watch?v=SFMVyiJ2S6g&feature=youtu.be
- "C# documentation", Microsoft, Microsoft 2020, https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch
