Bonjour à tous,
Je me permets de poster ce petit post, pour être sûr que je ne fais pas trop de bêtises sur mon ordinateur avec les pointeurs en fait !
Alors voilà, en gros, je voudrais déplacer un personnage à l'écran. Dans l'idée, il s'agit de construire un tableau ( ici, pour mon exemple, un tableau statique ), tableau qui contiendra les mouvements à effectuer. En fait j'ai déjà fait mon petit algo de tracer de ligne ( l'algo de Bresenham que j'ai un peu modifié ) j'ai aussi réussi à "coder" un mouvement sur un char ( par exemple : déplace toi d'un pixel vers le haut = a, déplace toi d'un pixel en bas à droite : c... bref ! ) et donc là j'ai réussi à "coder" mon mouvement sur une string, ( c'est à dire à aligner les a, b, h, et d pour créer un mouvement ) mais je trouve ça un peu lourd, pas très propre, d'autant qu'après il faudra encore le temps de traduire le char en mouvement, et je sens que ça va pas être très fluide tout ça.
Je me suis donc dit que j'allais créer un tableau de pointeurs ( pointeurs vers des entiers ), et tous ces pointeurs pointeraient vers 3 valeurs possibles : -1, 0 ou 1. On coderait un mouvement sur deux cases du tableau, par exemple si un tableau n'a que deux cases, comme ceci : {-1,-1} eh bien le personnage reculerait d'un pixel sur l'axe des x et d'un pixel sur l'axe des y ( encore que en SFML, il faudrait inverser les y, mais ça on n'y est pas encore ).
Bref ! Venons en au but, si vous le voulez bien. J'ai écrit un code rapide, un tableau de 10 pointeurs ( 5 déplacements donc, puisque ça va par paire ), le voici :
Et là surpriiiiise ça m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <iostream> int positif=1; int negatif=-1; int nul=0; int main () { int * Tableau[10] = {NULL}; Tableau[0]=&positif; Tableau[1]=&positif; Tableau[2]=&negatif; Tableau[3]=&positif; Tableau[4]=&negatif; Tableau[5]=&negatif; Tableau[6]=&nul; Tableau[7]=&positif; Tableau[8]=&nul; Tableau[9]=&nul; for (int i=0; i<=9; i+=2) { std::cout << (*Tableau[i]) << "," << (*Tableau[i+1]) << "\n"; } return 0; }
1,1
-1,1
-1,-1
0,1
0,0
Oui oui, parfaitement, je n'aurais donc plus qu'à ajouter ces valeurs aux positions de mon perso, il et se déplacera gentiment, si je n'oublie pas un petit timer, MAIS... Je ne suis pas sûr de mon coup. Est ce qu'au début, lors de la déclaration du tableau, les pointeurs pointent effectivement vers la "case 0", enfin des pointeurs nuls quoi, ou est ce que j'aurais pas, sans faire exprès, modifié le mot de passe de mon ordi ou un truc du genre ? Pour ce cas de figure énoncé, je m'en rendrai compte au prochain démarrage, mais il peut y avoir des trucs bien plus tordus, je le sais bien.
J'attends vos corrections, si corrections il doit y avoir !
Mr Pchoun.
Partager