Desafio 2
O mundo está constantemente a evoluir: desde o mais pequeno inseto à espécie Humana. Dentro das palavras que mais ouvimos atualmente, incluímos “evolução”, “mudança”, “futuro”.
A tecnologia tem revolucionado o mundo das mais diversas formas: do mais simples aparelho para medir o tempo ao mais complexo acelerador de partículas. Se quer entrar no mundo da tecnologia e deixar a sua marca, pode começar aqui.
Este é o penúltimo artigo da saga “Introdução à Programação”, onde encontra o último desafio final desta série: a criação de um jogo de batalha naval.
No jogo de Batalha Naval a construir são pedidas algumas metas diferentes relativamente às regras reais do jogo. Ora vejamos.
Regras Base
- Num tabuleiro de 5×9, cada utilizador (dos 2) deve colocar os seus 3 navios em três posições diferentes;
- Cada utilizador deve tentar aniquilar os navios do inimigo, colocando as coordenadas da posição a atirar;
- O primeiro utilizador a derrotar os navios adversários, ganha.
Objetivo 1
Construir um tabuleiro de 5 linhas por 9 colunas utilizando o sistema de arrays. Todas as posições do array devem ser do tipo inteiro. Por padrão, o valor de cada posição deve ser -1. Temos os seguintes valores:
- -1 – sem tiros naquele bloco (~)
- 0 – com tiros, mas não existiam navios (*)
- 1 – com tiros e com um navio destruído (X)
- 2 – existe um navio (~)
Objetivo 2
Devem existir dois modos: jogar contra o computador e jogar contra um amigo.
As diferenças entre os dois modos é que no primeiro, jogar contra um computador, este deve colocar os seus navios em locais aleatórios e fazer jogadas aleatórias.
Quando se joga com um amigo, deve-se ter em atenção o conteúdo que aparece na linha de comandos de forma a que o jogador A não veja as posições colocadas pelo jogador B.
Dicas
Para limpar o ecrã, não utilize as funções do sistema. Ao invés imprima uma boa quantidade de linhas novas no ecrã.
Se está a pensar em criar uma função que crie os tabuleiros, lembre-se que estas não podem retornar arrays, mas podem retornar apontadores. Pesquise sobre a função malloc.
A criação de apontadores para apontadores também poderá ser útil e é feita através do operador ** (duplo asterisco).
Atualização: A proposta de resolução pode ser encontrada aqui.
Mais uma vez, gostávamos de saber a sua opinião. Caso tenha alguma dúvida, pode sempre utilizar os comentários para colocar a questão. Caso o faça, pedimos que utilize a keyword [DUVIDA] no início do seu comentários.
Resoluções de exercícios. |
Esta saga |
Henrique Dias |
Mais episódios: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13][12] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23][24] |