Salut à tous !
J'essaie de faire un petite version de Minecraft en 2D programmée en langage C.
J'ai rencontré un souci sur une fonction dont le but est de faire déplacer un '@' à droite dans un tableau de caractères à deux dimensions nommé terrain :
Si la case à droite (vers laquelle je vais) contient de l'air, comme on a :
typedef enum
Code:{ air, wood, soil, rock, water, gem, iron, fire, grass, flower, plank, money, gold, ashes, unknown } Materiau;
alors air vaut 0 et je peux déplacer vers la droite, je peux aussi sauter par dessus une case rempli si jamais il y a de l'air au dessus.
Enfin si jamais il y a un trou là où j'avance, je tombe.
L' '@' est en fait le caractère qui représente la position codée par :
typedef struct
Code:{ int x; int y; } Personnage;
Voici la bête : Personnage mouvement_droite(Terrain terrain, Personnage p)
Code:{ if(p.x == L_TERRAIN-1){return p;} if(terrain[p.y][p.x+=1]!= 0){ if(terrain[p.y+=1][p.x-=1] == 0){p.y+=1;p.x-=1;} else {return p;} return p; } if(terrain[p.y][p.x+=1]== 0){ int i=0; do{i++;}while(terrain[p.y+=1][p.x-=i]==0); p.x-=i;p.y+1; return p; } }
Vous voulez d'autres infos ? Qu'en dites vous ? Moi je dis que ma fonction en fait rien !! Je ne comprends pas, je vais me suicider avec le cable de ma sourie
Voici un terrain si ça vous intéresse !
void cree_terrain1(Terrain terrain)
{
int i,j;
char t[7][21] =
{
" ",
" TTT #",
" T ##",
"==~~~~===========###",
"===~~==========###+#",
"=========#+#==#g#+##",
"#####g##############"
};
for (i = 0; i < H_TERRAIN; i++)
for (j = 0; j < L_TERRAIN; j++)
terrain[i][j] = char2Materiau(t[i][j]);
}
On note ici que char2Materiau est juste là pour associer un caractère à un numéro bref !!!
-----