1

J'ai une petite difficulté dans la programmation en C.

J'ai une liste d'image en sprite : img0, img1, img2, .... ,img9
Ensuite j'ai une variable Integer x qui est égale à 0 au debut du prog.
Avec les curseur de la calculette j'incremente ou je décremente la variable x et j'affiche l'image imgx. C'est à dire que si x=1 j'affiche img1 si x=5 j'affiche img5.

J'ai fait se systeme avec un switch case mais c'est long.

Y'a-t-il un moyen en C pour faire comme en basic du genre :
flib("sprite:0,0,1,img"&string(x))

Cet exercice à pour but de m'apprendre le language C. Alors si vous avez la réponse je vous serais reconnaissant de m'expliquer comment cela fonctionne.
Je pense que c'est une histoire de pointeur et j'ai encore un peu de mal de se coté la.

Merci d'avance pour les réponses...
Epitech - Ecole pour l'informatique et les nouvelles technologies

Shinjuku@ifrance.com
MSN : Shinjuku83@hotmail.com

2

les indirections n'existent pas en C...
=> c'est efecitivement une hiostoire de pointeurs... grin (c'est qd même un des trucs que tous les programmeurs C adorent grin)

en admettant que tes sprites soient de type unsigned short :

il te faut un pointeur de type unsigend short * :
unsigned short *p_sprt;

ensuite :
switch(option)
{
  case 1:
    p_sprt = img1;
    break;
  case 2:
 .....
....
...
}
et ensuite :
Affiche _sprt(p_sprt); // enfin, ta fonction d'affichage de sprite///


sinon, il doit être possible de faire un tableau de pointeurs sur tes psrites...
void *tab[10];
tab[0] = img0;
tab[1] = img1;
// et ainsi de suite

//et ennsuite : 
afficher_sprt(tab[option]);


Je pense sque quelque chose DANS CE STYLe peut fonctionner....
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

Le premiere technique correspond à peu près à ce que j'avais fait sans passer par un point.
Au lieu de faire p_sprt = img1; je mettais directement dans le switch case la commande d'affichage soit Sprite32(0,0,32,img1,LCD_MEM,SPRT_OR);

Mais la 2eme technique est déjà plus courte et elle me permet de comprendre un peu mieux les pointeurs qui m'ont l'air super pratique.
C'est d'ailleurs cette technique que j'ai utilisé et cela m'a permis de gagner.....40 octets sur le taille de mon programme....lol
y'a juste le void *tab[10] que j'ai pas compris pourquoi void moi j'ai mis unsigned long *tab[10] (mes Sprite sont 32*32 donc c'est des long)

Merci beaucoup pour ces renseignements smile
Epitech - Ecole pour l'informatique et les nouvelles technologies

Shinjuku@ifrance.com
MSN : Shinjuku83@hotmail.com

4

oué, mettre unsigned long * est mieux au niveau du C (question de type).
J'étais parti dans la logique finale, où tout les pointeurs sont codés sur 4 octets, quelle que soit la chose sur laquellle ils pointent...
La première technique, par rapport à ce que tu avais fait ne fais pas économiser un tt petit peu de mémoire ?

Sinon, pr conomiser de la mem, essaye avec autre chose qu'un switch... unswitch, c ce qui se fait de meiux poour la rapidité, mais pas toujours pour la méoire grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

bah en fait je cherche pas vraiment à optimiser la memoire ou la rapidite mais simplement à apprendre le language C. Alors j'examine chaque possiblité et j'essaye de comprendre. Je me lancerai dans un programme complet quand j'aurais suffisament appris et etudier le language C.

Pour l'instant ca se passe pas trop mal j'en suis au image (sprite...)
Mais au debut des vacance je vais me mettre à la VAT et plus serieusement au pointeur que je comprenne une fois pour toute l'histoire de ces pointeurs.

En plus ton tutorial m'aide beaucoup Squale92. Donc Merci encore pour ces renseignement et pour le tuto smile

et vive le C... grin
Epitech - Ecole pour l'informatique et les nouvelles technologies

Shinjuku@ifrance.com
MSN : Shinjuku83@hotmail.com

6

c'est rare quelqu'unqui commence selon ton approche de la programmation.
Félicitations : tu es une des rares personnes qui commencent le C sans vouloir tt de suite sortir un super jeu ! C'est comme ça que tu éviteras pas mal de déceptions...

Bon courage.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

7

oui, enfin un qui ne veut pas faire seiken3 alors qu'il sait pas programmergrin
avatar
納 豆パワー!
I becamed a natto!!!1!one!

8


Je connais un exxxxcccelllent cours sur les pointeurs si tu veux comprendre : http://www.ti-fr.org/~prog/index.php3?do=c/tuto/pointeurs grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

9

oui pas mal du tout thib
avatar
納 豆パワー!
I becamed a natto!!!1!one!

10

Il suffit de mettre tes images dans un tableau ... (c'est plus simple qu'un tableau de pointeur qui pointe sur les images) ... mais ca depand du format de tes images ...

Si ce sont des int[16], ca donne qqch comme ca:

int images[16][5]= { {12,154,154,54,....}, {...}, {...}, ...}; //ca c'est tes images...
Sprite16(images[x]);

11

sauf si les img sont des fichiers .bin externes
avatar
納 豆パワー!
I becamed a natto!!!1!one!

12

arf, tableau de pointeurs, ça marche niockel.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall