1

Vala...
d'abord bonjour a vous tous...
ensuite vala ma question: comment peut-on coder jeu (par ex: deplacer une balle a l'ecran tout connement) en C sur 89.
voila ce que je pense de ca moi ...

program()
{
afficher balle en un pt donné;
"ecouter le clavier";
tant que c les touches de direction ki sont pressé
{changer les coordonnées de la balle en fontion des touches pressés}
si touche pressé != touche direction
{afficher Fin}
attendre autre touche;
retour a main;
}

main()
{
sauvegarder ecran;
effacer ecran;
appeller programm()
remettre ecran comme avant;
quitter;
}

Comme vous pouvez le voir, c TRES tres tres con comme prog.
seulement, j'ai qq questions la dessus
-comment modeliser une balle ? (ya un truc pour faire les rond ?)
-comment faire pour ne pas avoir de trainer de la balle (faire un Clrscr() a chake fois ? jy crois pas trop)
-comment faire pour savoir kelle touche a ete pressé ?
-comment faire pour vous remercier de vos reponses ?

vala c tout ce que j'ai comme questions metaphyqsiques et existentiels aujourd'hui.
VauDou
ps: je code on calc avec cc et as...
++

2

VauDou
: -comment modeliser une balle ? (ya un truc pour faire les rond ?)
Il y a des ROM_CALLs qui te permettent de faire ça (DrawClipEllipse, il me semble), regarde dans graph.h de l'aide de TIGCC.
-comment faire pour ne pas avoir de trainer de la balle (faire un Clrscr() a chake fois ? jy crois pas trop)
Tu peux :
- soit effacer la balle à son ancienne position en la redessinant en mode XOR
- soit effacer l'écran entier à chaque fois. Mais cette solution va t'apporter des pb si tu n'utilises pas de buffer temporaire (si tu affiches directement sur l'écran).
La solution la plus adaptée à ton pb est probablement la première, mais elle devient vite gênante si tu as beaucoup d'objets à gérer ainsi qu'un arrière-plan (mais dans ton cas, ça ne pose pas de problème).
-comment faire pour savoir kelle touche a ete pressé ?
Tu peux utiliser le ROM_CALL ngetchx, mais ton programme sera lent.
Le mieux serait de lire toi-même l'état du clavier, mais c'est compliquer il faut bien connaître le HW pour savoir faire ça. Sinon, tu peux recopier la fonction _rowread de la bibliothèque tigcclib (mais lis la doc avant de l'utiliser).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Je ne sais que c'est pas bien de donner la source mais bon: // C Source File // Created 11/10/2003; 17:13:50 #include <tigcclib.h> unsigned char ball_sprite [] = {0b00111100,                                                                                 0b01111110,                                                                                 0b11111111,                                                                                 0b11111111,                                                                                 0b11111111,                                                                                 0b11111111,                                                                                 0b01111110,                                                                                 0b00111100}; void _main(void) {                int i;            short xpos=(LCD_WIDTH-1)/2;      short ypos=(LCD_HEIGHT-1)/2;      char xdir=1, ydir=1;            ClrScr ();      Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);            while (_keytest (RR_ESC)==FALSE)      {           Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);                      xpos+=xdir; ypos+=ydir;                      if (xpos+8>(LCD_WIDTH-1)) xdir=-1;           if (xpos<0) xdir=1;           if (ypos+8>(LCD_HEIGHT-1)) ydir=-1;           if (ypos<0) ydir=1;                      Sprite8 (xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);                      for (i=0;i<10000;i++);      } }

Déplacement d'une balle avec 45° collisions avec l'écran.

Y a plein d'infos dans cette source, comme par exemple pour modéliser une balle, dessiner un cercle avec une ROM_CALLS c'est une mauvaise idée car c'est très très lent. sad

Par contre c'est du code de TIGCC, sous CC ça doit être autre chose.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

4

pkoi c pas bien de donner une source ?
au contraire! c comme ca qu'on peut avancer!
Merci Bcp

5

Non c'est pas vraiment la meilleure façon d'avancer. C'est bien plus bénefique de trouver tout seul. Et puis il faut toujours se méfier des sources "toutes cuites"...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

sasume tu dit que si on utilise clrscr cela pose des probleme si on l'utilise sans buffer ecran (un ecran virtuelle???)
C'est koi les problemes?

7

"Le" problème principalement : ça va clignoter monstrueusement.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

Dans son cas, un XOR sur la balle me semble plus simple. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

9

Si il n'y a que ça a afficher, oui. Si il y a plusieurs objets, ça va rapidement devenir assez crade.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Oui en effet mais dans ce cas il faudra en venir au double buffering.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

11

cf post #1 roll
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

12

geogeo ça fait pas mal de fois que je te voie répondre à coté de la plaque. Que dirais-tu de lire les topics pour être sûr que tu réponds correctement à la question la prochaine fois ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

13

Ah oui désolé. En effet faut que je corrige aussi ce villain défaut. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

14

Quand à ngetchx, cela dépend si tu veux que ta balle bouge entre les appuis d'une touche (une touche changeant la direction par ex) ou si tu veux que chaque appui la déplace: ngetchx ne marche que dans le second cas, car elle attend une touche.
Pour le premier cas, il vaut mieux utiliser keytest sous TI-GCC, ou kbd_queue et OSdequeue qui sont (enfin je crois) des ROM_CALLS

(corrigez-moi si j'ai dit une connerie)
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

15

On peut aussi utiliser ngetchx avec kbhit.
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é

16

program()
{
unsigned char ball_sprite [] = {0b00111100,
0b01111110,
0b11111111,
0b11111111,
0b11111111,
0b11111111,
0b01111110,
0b00111100};
/*si on peut m'expliker ca ...(au dessus)*/

short Xpos=(LCD_WIDTH-1)/2;// je suppose que les deux LCD sont definis ailleurs (tigcclib.h?)
short Ypos=(LCD_HEIGHT-1)/2;//kif kif pour SPRT_OR, _keytest etc etc etc ....

char xdir = 1 ,ydir = 1;
int i ;

Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);//c du ctrl c+v et je capte pas la ...
while(_keytest (RR_ESC)==FALSE)
{
_keytest=ngetchx();
if (_keytest == soit a droite soit a gauche)
{
switch _keytest;
case a droite
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);
xpos = xpos+1;
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);
break;

case a gauche
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);
xpos = xpos-1;
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);
break;
}
else if(_keytest == soit en haut soit en bas)
{
switch _keytest;
case en haut
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);
ypos = ypos+1;
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);
break;

case en bas
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_XOR);
ypos = ypos-1;
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);
break;
}
for (i=0;i<10000;i++);
}
}

vala
si qq1 trouve a redire (ca m'etonnerait po, et il me manke deux trois données tongue )
svp, ne me jetaient pas des pierres dans la gueule, je le merite po tongue
merci d'avance

17

"voilà mon code corrigez le merci"

• Vertyos jette une pierre
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

unsigned char ball_sprite [] = {0b00111100,
0b01111110,
0b11111111,
0b11111111,
0b11111111,
0b11111111,
0b01111110,
0b00111100}; /*si on peut m'expliker ca ...(au dessus)*/


Ceci est un sprite (une image) qui représente la balle, en C on code comme ça les images. Ici les octets de l'image sont représenté en binaire pour voir plus facilement la forme de la balle.
Sprite8(xpos,ypos,8,ball_sprite,LCD_MEM,SPRT_OR);//c du ctrl c+v et je capte pas la ...


Cette fonction dessine la balle au coordonnées xpos et ypos ave une image ball_sprite de hauteur 8 pixels dans la mémoire vidéo (LCD_MEM) en mode OR.

[cite]_keytest=ngetchx();
if (_keytest == soit a droite soit a gauche) [/cite

Euh c'est plutôt if (_keytest (RR_RIGHT)==TRUE) {...}


Un conseil, utilise juste le test de touche pour changer xdir ou ydir, et de plus l'algo que je t'ai donné ne permet que de déplacer une balle suivant 8 directions possible.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

19

Vertyos -> dsl si c ce que tu comprend, c t pas le msg que je voulais faire passer, c juste qu'il me manque des bases (genre nom des touches sur la 89) et que j'ai beau chercher je trouve pas de tuto la dessus.

Geogeo, merci beaucoup de prendre le temps de me repondre :-) je pense que je suis apte a coder ce petit truc maintenant :-)

tous > juste merci tongue

20

vaudou > pr les bases faut lire le tuto de squale92: http://www.ti-rex.net/fr/programmation/tutoc/
avatar
Wenn ich morgen meinem Gott gegenübertrete, kann ich ihm sagen: "Ich bin unschuldig, ich hab' niemandem etwas getan - außer mir selben" Und das verzeiht er mir offentlich !
Falco - Hans Hölzel 1957 - 1998
RIP