Vous n'êtes pas identifié.
Voila, comme j essaye de faire des programme en C, je voulais simplement demander de l aide:Y aurait il qqun qui prrait me filer la source du prog tres simple, consistant a diriger un caractere sur l ecran, avec les touches haut bas dr et gauche??
Merci d avance.
Au fait:Je programme un nouveau jeu en basic:le but est d entrer en discotheque et de se la jouer pr atteindre un haut niveau de notoriete.
Screenshots bientot dispos...
Hors ligne
#include <stdio.h>
#include <stdlib.h>
void key(void)
{
asm mov ah,08h; /* attend qu'une touche soit pressé */
asm int 21h;
asm mov ah,01h; /* si touche pressé, met dans le buffer */
asm int 16;
/*erreur*/ asm mov,ah,10h; /* lit la touche dans le buffer */
asm 16h; /* valeur de la touche dans AL */
asm mov ah,07h /* vide le buffer */
asm int 21h;
}
int main ()
{ int A=1;
int B=1;
int touche=0;
do
{
clrscr ();
gotoxy(A,B);
printf("x");
key();
retunr(_AL);
touche=_AL;
switch (touche)
{case '75':
A--;
break;
case '77':
A++;
break;
case '72':
B--;
break;
case '80':
B++;
break;}
}
while (touche!=1);
return (0);
}
normalement ca doit marcher mais turobo C me marque une erreur 'expression synthaxe'.
Pour la fonction clavier j'ai recopié le tuto de whyp betement mais je ne sais pas si ce que j'ai fais est correct. Apres 3 jour de C ont ne peut pas des miracles.
Pour les numeros des touche j'ai utlisé touche3.7
Sinon je n'ai pas trouvé de tuto qui explique comment faire des sprites pour sous doué donc je galere.
Ca serait qu'une personne corrige mes fautes !!!
@+ et bon bas sysquo
Hors ligne
voila apres avoir corrigé quelque connerie j'obitiens le code suivant:
#include <stdio.h>
void key(void)
{
asm mov ah,08h; /* attend qu'une touche soit pressé */
asm int 21h;
asm mov ah,01h; /* si touche pressé, met dans le buffer */
asm int 16h;
asm mov ah,10h; /* lit la touche dans le buffer */
asm int 16h; /* valeur de la touche dans AL */
asm mov ah,07h /* vide le buffer */
asm int 21h;
}
int main ()
{ int A=1;
int B=1;
int touche=0;
do
{
clrscr ();
gotoxy(A,B);
printf("x");
key();
touche=_AL;
switch (touche)
{case '75':
A--;
break;
case '77':
A++;
break;
case '72':
B--;
break;
case '80':
B++;
break;}
}
while (touche!=1);
return (0);
}
meme sans erruer de code, il ne se passe rien sur la casio; alors j'ai regardé la source de bomberman et j'ai trouvé un truc qui fonctionne:
#include <stdio.h>
#define K_ESC 1
#define K_LEFT 75
#define K_RIGHT 77
#define K_DOWN 80
#define K_UP 72
int main ()
{ int A=2;
int B=2;
int touche=0;
do
{
clrscr ();
gotoxy(A,B);
printf("x");
touche=getch();
if(touche==K_DOWN){B++;}
else if(touche==K_UP){B--;}
else if(touche==K_RIGHT){A++;}
else if(touche==K_LEFT){A--;}
}
while (touche=K_ESC);
return (0);
}
personnellement,je ne comprends ce qu'il fait avec "#define". En tout cas sa fonctionne. Appel à superNa, LArk, whyp ou bien Ktr pour nous ouvrir les yeux !!!
Hors ligne
Define ne sert qu'à créer des macros, c'est le précompilateur qui s'en occupe
la fonction key() me paraît étrange, utilise plutôt getch()
#include <stdio.h> #define K_ESC 1 // K_ESC équivaut donc à 1 (K_ESC == 1) #define K_LEFT 75 #define K_RIGHT 77 #define K_DOWN 80 #define K_UP 72 int main () { int A = 1, B = 1, touche, hold_A = 0, hold_B = 0; do { gotoxy(hold_A, hold_B); printf(" "); //remplace l'ancien caractère par un espace gotoxy(A,B); printf("x"); //affiche le nouveau hold_A = A; hold_B = B;// sauvegarde la position if ((touche = getch()) == 0)//si touche étendu (>128) { touche = getch(); } switch (touche) { case K_LEFT: A--; break; case K_RIGHT: A++; break; case K_UP: B--; break; case K_DOWN: B++; break; default:; // Toujours mettre un default dans un case pour sire ce qu'on fait par défaut } } while(touche != 1 && touche != 27);// 1 == touche [ESC] de CASIO et 27 == touche [ESCAPE] des PC return 0; }
voilà c'est une version corrigée.
Hors ligne
c'est bien getch mais c'est hyper lent (autant que le basic)!!! faut utiliser "peekb"(que j'ai decuvert dans pong fait par whyp). ca va telement vite que je croyait que mon programme buggait !
au fait la fonction scanf ne fonctionne pas sur graph100!
apres avoir taper un chiffre, la pression de la touche exe ne fait rien. quelqu'un pourait m'eclairer !!! (depuis que j'ai debuté la C, j'ai plein d'idée et je ne lache pas ma casio... c'est mauvais pour le bac)
Hors ligne
Effectivement la fonctions scanf ne marche pas !! Il faut ke tu créé une fonction ou ke t'en pike une keke part !
Hors ligne
Regarde dans les sources de TOUCHE 3.45 y'a des fonctions pour taper des nombres ou écrir des chaînes de caractère.
Hors ligne
merci, je vais voir ça !
Hors ligne
Les codes de touches de la g100 ne st pas standard, donc scanf ne les reconnait pas. Si tu veux utiliser scanf, il faut que tu lances d'abord 'Enter.com' de Roeoender. Si tu ne l'as pas, je peux te l'envoyer.
enter.com est-il résident?
Hors ligne
Oui il est résident (enfin j'en suis preske sur !) le problème avec enter.com c ke tu pe pa l'inclure a un prog : si tu fais un jeu ki l'utilise et ke tu le passe a kelkun ki l'a pa ca marchera pa !!
Hors ligne
Exact, il est résident donc il faut faire un reboot après non?
oulala. pkoi vs dite ke getch est trop lent ? moi je lutilise et sa va c assé rapide ... sinon c koa peekb et scanf (g lu scanf dans mon bouk1 de C g rriieenn kapish) sinon g un prog tout simple pour deplacer un carac :
#include <stdio.h> #include <casio2b.h> #define K_ESC 1 #define K_LEFT 75 #define K_RIGHT 77 #define K_DOWN 80 #define K_UP 72 char key,a,b; //defini les 3 variables main(){ key=getkey(); if(key==K_UP) a--; if(key==K_DOWN) a++; if(key==K_LEFT) b--; if(key==K_RIGHT) b++; if(key==K_ESC) exit(0); gotoxy(a,b); //amene au caractere {a,b} printf("O"); goto debut; }
bon ya des hence ke sa marche pas bien je lai pas teste. bone chence !
Hors ligne
Ppour un debutant vous avez pas du code plus compliqué ?
A mon avis, juste savoir afficher un carac, et un pixel lui suffirais, non ?
Hors ligne
ben pour se kil a demendé on lui répond. g essayé de faire simple mé bon le c au debut c dur. sinon g oublié de faire éffacé l'ancien carac mé bon tu trouvera. a+
Hors ligne