// réglage de la vitesse : c'est ici qu'est mon problème
while(touchevitesse!='0')
{
if(kbhit())
{
touchevitesse=getch();
}
if(touchevitesse=='+')
{
puissance=puissance/10;
touchevitesse=' ';
}
elseif(touchevitesse=='-')
{
puissance=puissance*10;
touchevitesse=' ';
}
// initialisation du terrain
for (i=0;i<10;i++)
{
for (j=0;j<20;j++)
{
ter[i][j]=' ';
}
}
ter[a][b]='X';
// terrain de test
printf("Choisissez la vitesse :\n+ pour accelerer\n- pour ralentir\n0 pour commencer\n\n\n" );
printf(" --------------------\n" );
for (i=0;i<10;i++)
{
printf("|" );
for (j=0;j<20;j++)
{
printf("%c",ter[i][j]);
}
printf("|" );
printf("\n" );
}
printf(" --------------------\n" );
if (b==19)
{
b=0;
ter[a][0]='X';
ter[a][19]=' ';
}
else
{
ter[a][b]=' ';
b++;
ter[a][b]='X';
}
system("cls" );
}
// on ralentit l'exécution du programme
for (k=0;k<puissance;k++)
{
timer=timer^2;
}
Vient ensuite le reste du programme qui est en gros un simili début d'ersatz de pacman. En fait ce que je comprends pas c'est pourquoi au niveau du réglage de la vitesse je ne peux pas tapoter sur + ou - pour la changer autant de fois que nécessaire. J'étais au départ passé par un switch/cases mais le problème était déjà là. Donc si vous pouviez m'éclairer sur ce qui est foireux... :s
Vient ensuite le reste du programme qui est en gros un simili début d'ersatz de pacman. En fait ce que je comprends pas c'est pourquoi au niveau du réglage de la vitesse je ne peux pas tapoter sur + ou - pour la changer autant de fois que nécessaire. J'étais au départ passé par un switch/cases mais le problème était déjà là. Donc si vous pouviez m'éclairer sur ce qui est foireux... :s
Merci d'avance
Vérifie donc la valeur de "touchevitesse" juste après le "getch()"
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
masklinn
í dag viðrar vel til loftárása
Posté le 09-10-2004 à 08:45:27
Avec certaines touches "étendues" (numpad, flèches de direction, toussa) il faut faire 2 getch de suite (le clavier envoie 2 codes l'un derrière l'autre), la première valeur étant 0 ou 0xE0
Puis le getch il devrait avoir sa petite boucle à lui, parce que là tu te tapes toute la boucle en permanence (tu redessines le terrain sans arrêt)
Message édité par masklinn le 09-10-2004 à 08:47:09
---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Coim
Posté le 09-10-2004 à 11:51:57
Merci pour vos réponses.
Par contre j'ai fait des dumps et apparemment ça rentre bien dans les if et else if. Donc le problème viendrait plutôt de la partie chargée de ralentir la vitesse. J'y suis quand même arrivé en ne changeant pas la valeur de puissance mais en rajoutant un compteur l et en calculant la valeur de puissance en dehors du if(kbht()).
Pour ce qui est de redessiner le terrain sans arrêt, ça me semblait normal puisque le X doit défiler tout seul.
Sinon pour la version qui marche:
Code :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main(int argc, char *argv[])
{
char touche=' ';
char touchevitesse=' ';
char ter[10][20];
int i=0,j=0,a=4,b=9,k=0,l=0;
int timer=5;
int puissance=100000000;
srand(time(0));
// réglage de la vitesse
while(touchevitesse!='0')
{
if(kbhit())
{
touchevitesse=getch();
}
if(touchevitesse=='+')
{
touchevitesse=' ';
l--;
}
elseif(touchevitesse=='-')
{
touchevitesse=' ';
l++;
}
// initialisation du terrain
for (i=0;i<10;i++)
{
for (j=0;j<20;j++)
{
ter[i][j]=' ';
}
}
ter[a][b]='X';
// terrain de test
printf("Choisissez la vitesse :\n+ pour accelerer\n- pour ralentir\n0 pour commencer\n\n\n" );