I have an array of structures as a board. My character starts at position [0] [0]:
tabuleiro[0][0] = personagem;
Thecharacterisdisplayedcorrectlyinitsinitialposition,butIcannotmoveitusingthecodebelow(itisincomplete,butshouldworkasfarasIdid):
voidmovimentar(criaturatabuleiro[][10],criaturapersonagem){system("cls");
imprime(tabuleiro);
criatura vazio;
int i=0, j=0;
char mover;
printf("Use WASD ou as setas do teclado para se mover pelo tabuleiro!\n");
scanf(" %c",&mover);
if(mover=='s'){
tabuleiro[i+1][j]= personagem;
i++;
}
imprime(tabuleiro);
system("pause");
}
The board and character are defined some functions above. More or less in this way (I took what I consider less relevant):
criatura tabuleiro[5][10];
criatura personagem;
criatura chefe;
criatura vazio; // isto aqui adicionei recentemente, ainda preciso verificar se faz sentido criar uma "criatura vazio" para colocá-la no local de onde o personagem saiu.
vazio.classe = ' ';
for(i=0;i<5;i++){
for(j=0;j<10;j++){
tabuleiro[i][j].status = 0; // aqui o tabuleiro todo é dado como desconhecido, a princípio (utilizo 0 como status para aquilo que não está visível).
tabuleiro[i][j].classe = ' ';
}
}
// ATRIBUTOS PERSONAGEM
personagem.classe = classeE;
personagem.atc = atcE;
personagem.def = defE;
personagem.saude = saudeE;
personagem.status = 1;
tabuleiro[0][0] = personagem;
When you press s, the character remains in the same position and a blank appears on the other side of the board.
Thefunctiontoprintthetrayis,inpart,this:
for(j=0;j<10;j++){if(tabuleiro[i][j].status==0){printf(" ? ");
}
else{
if(tabuleiro[i][j].classe=='X'){// X -> armadilha de grande potencial ofensivo
printf(" X ");
}
else if(tabuleiro[i][j].classe=='x'){ // x -> armadilha de pequeno potencial ofensivo
printf(" x ");
}
else if(tabuleiro[i][j].classe=='i'){//i -> inimigo
printf("%c_%c ",155,155);
}
else if(tabuleiro[i][j].elixir == 'e'){ // e -> elixir
printf(" %c ",3);
}
else if(tabuleiro[i][j].classe == 'C'){ //C -> Chefe
printf("%c_%c ",227,224);
}
else if(tabuleiro[i][j].classe == ' '){
printf(" ");
}
else if(tabuleiro[i][j].classe=='g' || tabuleiro[i][j].classe=='b' || tabuleiro[i][j].classe=='p'){ // g,b ou p -> herói
printf("^_^ ");
}
}
}
The character's status is set to 1 at the beginning of the code so that it is visible. I did not copy the whole code here because it would be a lot, can you tell what is going wrong with just this information?
@edit: I changed
if(mover=='s'){
tabuleiro[i+1][j]= personagem;
i++;
}
by
if(mover=='s'){
tabuleiro[i+1][j] = personagem;
tabuleiro[i+1][j].classe = 'g'; // onde g é a classe guerreiro
tabuleiro[i][j].classe = ' ';
i++;
}
and seems to be "working", just not sure if it's the right way ...