Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

manipular vetor

Recommended Posts

galera, tenho o seguinte código aqui

//BATALHA NAVAL
#include "stdafx.h" //inclui a biblioteca de funções basica do C
#define L 5 //define quantidade de linhas
#define C 11 //define quantidade de colunas

//declaração de inicialização da matriz global(classe extern) bidimensional de caracteres
char inimigo[L][C]=
{
   //0						  9
	{1,0,0,0,0,0,0,0,0,0,0},//0
	{2,0,1,1,1,1,0,0,1,0,1},
	{3,0,0,0,0,0,0,0,1,0,1},
	{4,1,0,0,0,0,0,0,1,0,0},
	{5,1,0,1,1,1,0,0,0,0,0},//4
};

void main(void) //função principal
{
	char tela[L][C]; //declaração de uma matriz local de caracteres bidimensional
	int x, y; //declaração de variavel local do tipo inteiro
	for(x=0;x<L;x++)
	{
		for(y=0;y<C;y++)
		{
			tela[x][y] = '.'; //preenche a matriz tela com caractere ponto
		}
	}
	printf("\nDigite coordenadas com inteiros na forma x,y: ");
	printf("\nPara sair digite um inteiro negativo\n");
	while(x >= 0) //enquanto x maior ou igual a zero, repita
	{
		for(x=0;x<L;x++)
		{
			for(y=0;y<C;y++)
			{
				printf("%c",tela[x][y]); //escreve matriz na tela

			}
			printf("\n");
		}
		printf("\nCoordenadas: ");
		scanf("%d,%d",&x,&y);
		if(x != 0)
		{
			x--;
		}
		if(y != 0)
		{
			y--;
		}
		if(inimigo[x][y] == 1)
		{
			tela[x][y] = '\xDB';
		}
		else
		{
			tela[x][y] = '\xB0';
		}
	}
}

quero colocar uma escala ali, como está na coluna, pra pessoa nao ficar perdida quando for atirar, mas nao consigo manipular o vetor, se alguem puder dar uma luz agradeço :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei bem o que tu quis dizer com escala, mas se for o que eu tô pensando:

Acho que pode ser assim aqui:

 

char k;
		//...
		for(k = 'A'; k - 'A' < C; k++)
		{
				prntf("%c ", k);
	   }
		for(x=0, k = 'A';x<L;x++, k++)
		{
			printf("%c ", k);
			for(y=0;y<C;y++)
			{
				printf("%c",tela[x][y]); //escreve matriz na tela

			}
			printf("\n");
		}

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlws brother, era isso mesmo, só fiz algumas adaptações...tem idéia de como fazer para contar quantos acertos e em quais coordenadas já foi jogado ??

só me passa a idéia :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

A única idéia que tenho é ir incrementando um int "jogadas" a cada jogada, e se acertar, incrementar outro int "acertos"!

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui fazer a contagem, só falta indicar se a coordenada já foi jogada, essa acho que vai ser a pior parte "/

se tiver alguma idéia :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize mais uma array com as mesmas posições que a array do campo de batalha. Defina todos os valores como 0. À medida que vai atirando nos espaços, defina o valor do espaço em questão para 1. Depois é só comparar quando for atirar se algum espaço está definido como 1 :P

Se não quiser fazer assim, pode inventar uma regra de nomeação para os espaços em int e organizar ou em uma array redimensionável (realloc) ou uma lista encadeada com operações simples de pesquisa (menas mão pra fazer que realloc), então vai adicionando os valores à array/lista e realizando uma operação de procura para ver se existe um determinado valor dentro dela.

Exemplo de regra de nomeação:

A1 --- B1 --- C1 --- A2 --- B2 --- C2

1 ---101--- 201--- 2 --- 102---202

Etc...

 

 

Eu acho mais simples a utilização da array multidimensiona extra;

ocupa mais memória mas é mais fácil de trabalhar, com lista ou array redimensionável tem que ficar toda hora recriando memória e isso enche o saco e alguma hora dá m*****.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom velho, acho que vou tentar criar outra matriz então, pois não sei mexer com encadeamento ainda, vlws pelas dicas :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
acho que vou tentar criar outra matriz

 

Tá,mas ter uma matriz N*M é um desperdício de espaço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isis eu sei que é um desperdício, mas não faço nem idéia de como trabalhar com lista encadeada ou realloc "/

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seco, você so precisa saber ponteiros, type casting,sizeof e malloc/free/realloc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ponteiros vou ter no próximo semestre, o resto não faço idéia, se tivesse tempo até estudava :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

guarde seu folego para ponteiros q é uma etapa chatinha e importante de se aprender!

olha sobre lista encadeada e sobre alocação dinamica veja:

http://www.juliobattisti.com.br/tutoriais/.../cbasico009.asp

http://rapidshare.com/files/116503394/tp113Listas.pdf.html <== (Estrutura de Dados)!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.