1

Ouais, enfin ! Une question de newbie.
Bon, c'est pour du C :
j'ai défini trois sprites (en static unsigned char) 8*8, l'utilisateur choisit un des trois, et je veux stocker ce sprite dans un autre.
les 3 sprites s'appellent sprite1, sprite2 et sprite3, mais pour simplifier, j'aimerais qu'après le choix de l'utilisateur, ce sprite soit stocké dans sprite.
J'ai essayé
[12]switch[/12](choix)
{
  [12]case[/12] 1:
     sprite = sprite1;
     [12]break[/12];
  [12]case[/12] 2:
     sprite = sprite2;
     [12]break[/12];
  etc...
}

Mais ça marche pas, j'obtiens "Assignement makes integer from pointer without a cast"
et le prog marche pas (aucun sprite ne s'affiche !)
Ca veut dire koi ??roll
Et comment je peux faire, ça me permettrait de faire Sprite8(x, y, 8, sprite, LCD_MEM, SPRT_XOR) ???
[edit]Edité par BiHi le 01-03-2002 à 14:12:51[/edit]
avatar
;)

2

unsigned char *sprite;
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Merci !!
Réponse rapide, claire, concise, enfin, parfait !grin
avatar
;)

4

Kevin Kofler roll

Ça ne pouvait pas être autre chose que parfait grin
[edit]Edité par Bob 64 le 01-03-2002 à 21:26:47[/edit]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Bah oui !!! sprite n'est pas égual à sprite1/2/3, il va juste pointer vers ce sprite, d'où le "*sprite" (qui définie un pointeur).
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

6

Ben, justement, c'est ce que je ne comprends pas très bien...
En ayant déclarer sprite en tant que pointeur, si sprite va juste pointer vers sprite1/2/3, alors je devrais mettre
sprite = &sprite1/2/3.
Or quand je fais ça, j'obtiens un avertissement de la part de TIGCC, alors que si je mets
sprite = sprite1/2/3
ça marche !
si quelqu'un pouvait m'expliquer correctement (j'ai lu et relu le tuto de squale), parce que si je déclare sprite en tant que pointeur, pour lui dire de pointer vers sprite1/2/3, je devrais faire sprite=&sprite, puis dans les fonctions, mettre *sprite, non ?
Parce que même si Pim parle avec beaucoup de condescendance (à mon goût), j'ai l'impression qu'il y a quelque chose qui cloche, car d'après ce qu'il dit, il faut que je l'utilise comme un pointeur, et j'ai un avertissement quand je fais ça (sprite = &sprite1/2/3)
avatar
;)

7

Un tableau peut être utilisé dans une expression comme un pointeur constant, qui pointe vers son premier élément. En d'autres mots, plutôt que de mettre &(sprite1[0]), tu peux mettre tout simplement sprite1. Mais tu ne peux pas mettre sprite1=ptr; si sprite1 est un tableau. (Tu ne peux pas changer l'adresse d'un tableau, il faut utiliser un pointeur pour ça.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

en gros... euh, si je déclare :
unsigned char sprite1 = {0xff, 0x00}
sprite1 n'est pas égal au tableau, mais pointe vers le premier élement du tableau.

C'est pour ça qu'en suite, je fais sprite = sprite1, c'est-à-dire, comme le dit squale dans son tuto, que sprite pointera vers le même tableau que sprite1, c'est ce qu'il me faut donc ! Les deux pointeront donc vers {0xff, 0x00}.

Ok, et merci encore de t'occuper des débutants, Kevin !smile
avatar
;)