• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Swimmer

Batalha Naval

6 mensagens neste tópico

Boas pessoal...

Ando a tentar implementar um jogo da batalha naval mas ando com umas certas dificuldades técnicas, ou seja, não faço ideia por onde começar...

Aceitam-se sugestões/ideias para a coisa...

1º quero implementar a parte single player, jogador contra um tabuleiro definido por mim e vou partir dai...

Obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quais são mais precisamente as tuas duvidas? Se souberes trabalhar com matrizes não deves ter grandes problemas.

Tenta explicar como estás a pensar começar. Alguma ideia deves ter lol :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tenho grandes ideias não...

Vou ter que usar matrizes, não estou a ver outro modo de contruir um tabuleiro de jogo...

A minha ideia inicial será criar o tabuleiro e arranjar forma de introduzir e validar as coordenadas dos barcos através da leitura de um ficheiro com as coordenadas dos mesmo...

Estou agora a ver como funcionar com matrizes de forma a contruir o tabuleiro de jogo...

EDIT: estou a tentar usar uma matriz de 11x11 (1ªlinha e 1ªcoluna com numeros e letras respectivamente) oara depois ter 10x10espaços...

Estive a ver e o que encontrei foi algo deste genero:

#include <stdio.h>
#define DIM 11

main ()
{
char naval[DIM][DIM] = {
						{' ','A','B','C','D','E','F','G','H','I','J',},
						{'1',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'2',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'3',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'4',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'6',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'7',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'8',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'9',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',},
						{'10',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',}		

};
int i,j;

for (i=0;i<DIM;i++)
         {
               for (j=0;j<DIM;j++)
                     printf("%c %c", naval [i][j], j==DIM?' ':'|');
               if (i!=DIM) printf ("\n---------------------------------\n");
         }
}

Tenho agora alguns problemas... Os numeros e as letras aparecem encostados à esquerda e o do "10" só aparece o zero... O que estou a fazer mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu aí não tens necessidade de incluir os números e as letras na matriz. Tu sabes o número logo podes usá-lo directamente para aceder à linha. E sabes que o código ASCII das letras é sequencial. Logo se A = 65, B = 66..., basta receberes o caracter e subtrair 65.

Ao fazer isso tens logo o valor certo para onde queres ir. O número que recebeste é directo e o caracter-65 dá-te a outra posição.

Só precisas de uma matriz 10x10.

Tens que te lembrar de verificar se o valor que foi recebido não é um número ou uma letra que não devia ter sido inserida como por exemplo o Z pois iria dar erro.

Ali no exemplo que deste o 10 só aparece o 0 porque tu criaste uma matriz de caracteres ou seja cada campo só pode conter um caracter.,"10" são 2 caracteres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mudei de estratégia....

Criei uma matriz vazia do mesmo tipo mas preencho-a com:

naval[0][1] = 'A';naval[0][2] = 'B';

matrizqr0.jpg

Agora precisava de saber ler as coordenadas de um ficheiro para depois colocar na matriz, podias dar-me umas luzes de como faço isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto! Tas num bom caminho, eu ja impletei ( nao consegui) batalha naval em php e foi com arrays bidimensionais em que $posicao[$x][$y] = mar ou barco percebes?

$x posicao no eixo dos x

$y posicao no eixo dos y

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora