Battleship
Batalha Naval
Esse jogo consiste apenas da parte do jogador, ou seja, apenas o jogador pode derrubar os navios da "máquina".
Não foram utilizadas imagens. O jogo foi feito utilizando-se apenas caracacteres representando os navios, água e o campo oculto.
Explicando a lógica da função main()
Na função main, optei em desenvolver a parte de inicialização dos campos, posicionamento dos navios e um menu chamando então as funções "jogar", "creditos" e "ranking".
No princípio, duas matrizes 10x10 são incializadas. Uma é o campo do jogador e a outra da "máquina".
Os navios são distribuidos de forma aleatória no campo da "máquina":
-Submarino (2 posições com S);
SS
-Hidro-Avião (3 posições com H);
H
H H
-Porta-Aviões (4 posições com P).
PPPP
Utilizei as variáveis X para representar o eixo horizontal, ou das abscissas; Y reprsentando o eixo vertical, ou das ordenadas e R representando o sentido de rotação que os navios podem ser posicionados (cima, baixo, direita, esquerda).
Os números randômicos para os eixos X e Y podem variar de 0 a 9, visto que as matrizes são 10x10. Já o eixo de rotação R, foi definido 4 valores representando as 4 direções possíveis para o posicionamento dos navios na matriz (campo), sendo 1=cima, 2=direita, 3=baixo e 4=esquerda.
O campo visível para o jogador é inicializado com A, representando a água.
Caso algum navio seja colocado em uma posição já ocupada, o programa volta ao princípio fazendo com que todos os navios sejam distribuidos novamente, até que caiam em posições distintas. Pois uma vez que o navio foi posicionado na matriz através de um número aleatório, não há como apagar o que já foi escrito e gerar outro número randômico até posicioná-lo em um lugar vazio. O navio posicionado por cima do outro continuaria lá.
Com certeza existem outras possibilidades, mas eu optei em utilizar essa lógica pois é muito mais simples e funcional.
Chamei de "parte central" o