gRoOvE 0 Denunciar post Postado Maio 18, 2008 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
José Enésio 4 Denunciar post Postado Maio 18, 2008 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
gRoOvE 0 Denunciar post Postado Maio 19, 2008 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
José Enésio 4 Denunciar post Postado Maio 19, 2008 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
gRoOvE 0 Denunciar post Postado Maio 19, 2008 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
José Enésio 4 Denunciar post Postado Maio 19, 2008 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
gRoOvE 0 Denunciar post Postado Maio 19, 2008 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
_Isis_ 202 Denunciar post Postado Maio 19, 2008 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
gRoOvE 0 Denunciar post Postado Maio 20, 2008 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
_Isis_ 202 Denunciar post Postado Maio 20, 2008 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
gRoOvE 0 Denunciar post Postado Maio 20, 2008 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
quitZAUMMM 18 Denunciar post Postado Maio 21, 2008 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