[C - BEGINNER] Help Needed !!!! je vais peter un cable :'(

Help Needed !!!! je vais peter un cable :'( [C - BEGINNER] - C++ - Programmation

Marsh Posté le 27-12-2002 à 14:08:54    

Bonjour à tous, et bonnes fêtes de fin d'année !!!
 
bon voila c'est pour un projet en C:
à la base, je voulais refaire un 'tit jeu à la , merde me souvient plus du nom :pt1cable:  :cry:  
po grave, je vais expliquer, si vous vous souvenez du nom, donnez :lol:  :D  
le principe est tout con : une baballe qui se promene sur l'ecran, et on cherche à l'enfermer ds une zone la plus petite possible .... etc, on rajoute des balles etc ...
je pense que vous avez compris le principe ;)
 
voila mon code :
 

Code :
  1. #include <graphics.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #define startx 150   //}position de depart de la balle
  6. #define starty 200   //}
  7. #define minx 4       //}
  8. #define miny 4       //}valeur max et min des coordonn?es
  9. #define maxx  475    //}du centre de la balle
  10. #define maxy  475    //}
  11. //declaration des fonctions:
  12. void init(void);
  13. void balle(int mx, int my);
  14. void effballe(int mx,int my);
  15. void moveL_G_D(int *x,int *y, char *vmove, char *hmove);
  16. void moveL_D_G(int *x,int *y, char *vmove, char *hmove);
  17. void moveH_D_G(int *x, int *y, char *vmove, char *hmove);
  18. void moveH_G_D(int *x, int *y, char *vmove, char *hmove);
  19. //Debut du programme principal:
  20. void main(void)
  21. {
  22. char hmove, vmove;
  23. int x,y,i;
  24. x=startx;        //position en x au depart de la balle
  25. y=starty;        //position en y au depart de la balle
  26. hmove=' ';        //mouvement precedent 'nul'
  27. vmove=' ';        //idem
  28. printf("La balle part de la position: x=%d  y=%d",x,y);
  29. getch();
  30. init();
  31. moveH_G_D(&x,&y,&vmove,&hmove);     //mouvement de depart de la balle
  32. for(i=0;i<10;i++)
  33. {
  34. switch(vmove)
  35. {
  36. case 'L':                 //la balle vient du haut (elle descendait)
  37.  {
  38.  switch(hmove)
  39.   {
  40.    case 'D':                       //balle descend de G->D
  41.     {
  42.      if (x==475)
  43.       moveL_D_G(&x,&y,&vmove,&hmove);
  44.      else
  45.        if (y==475)
  46.        moveH_G_D(&x,&y,&vmove,&hmove);
  47.     }
  48.     break;
  49.    case 'G':                       //balle descend de D->G
  50.     {
  51.      if (x==4)
  52.       moveL_G_D(&x,&y,&vmove,&hmove);
  53.      else
  54.       if (y==475)
  55.        moveH_D_G(&x,&y,&vmove,&hmove);
  56.     }
  57.     break;
  58.   }
  59.  }
  60.  break;
  61. case 'H':                 //la balle vient du bas (elle montait)
  62.  {
  63.  switch(hmove)
  64.   {
  65.    case 'G':                       //balle monte de D->G
  66.     {
  67.      if (x==4)
  68.       moveH_G_D(&x,&y,&vmove,&hmove);
  69.      else
  70.       if (y==4)
  71.        moveL_D_G(&x,&y,&vmove,&hmove);
  72.     }
  73.     break;
  74.    case 'D':                       //balle monte de G->D
  75.     {
  76.      if (x==475)
  77.       moveH_D_G(&x,&y,&vmove,&hmove);
  78.      else
  79.       if (y==4)
  80.        moveL_G_D(&x,&y,&vmove,&hmove);
  81.     }
  82.     break;
  83.   }
  84.  }
  85.  break;
  86. }
  87. }
  88. getch();
  89. closegraph();
  90. }
  91. // initialisation de l'affichage et tracé de la zone de jeu:
  92. void init(void)
  93. {
  94. /* request auto detection */
  95. int gdriver = DETECT, gmode, errorcode;
  96. /* initialize graphics and local variables */
  97. initgraph(&gdriver, &gmode, "" );
  98. /* read result of initialization */
  99. errorcode = graphresult();
  100. if (errorcode != grOk)  /* an error occurred */
  101. {
  102.  printf("Graphics error: %s\n", grapherrormsg(errorcode));
  103.  printf("Press any key to halt:" );
  104.  getch();
  105.  exit(1); /* terminate with an error code */
  106. }
  107. /* dessin de l'aire de jeu */
  108. setcolor(RED);
  109. rectangle(0,0,480,479);
  110. }
  111. // tracé de la balle:
  112. void balle(int mx,int my)
  113. {
  114. int stangle = 0, endangle = 360, radius = 3;
  115. /* set fill style and draw a pie slice */
  116. setcolor(BLUE);
  117. setfillstyle(SOLID_FILL, BLUE);
  118. pieslice(mx, my, stangle, endangle, radius);
  119. }
  120. // effacement de la balle:
  121. void effballe(int mx,int my)
  122. {
  123. int stangle = 0, endangle = 360, radius = 3;
  124. setcolor(BLACK);
  125. /* set fill style and draw a pie slice */
  126. setfillstyle(SOLID_FILL, BLACK);
  127. pieslice(mx, my, stangle, endangle, radius);
  128. }
  129. // mouvement de descente de la balle, de gauche à droite:
  130. void moveL_G_D(int *x,int *y, char *vmove, char *hmove)
  131. {
  132. double j;
  133. *vmove='L';               //la balle descend
  134. *hmove='D';              // et va de G->D
  135. while(*x<maxx & *y<maxy)
  136. {
  137.  (*x)++;
  138.  (*y)++;
  139.  for(j=0;j<100000;j++){;}     // tempo
  140.  effballe(*x-1,*y-1);
  141.  balle(*x,*y);
  142. }
  143. }
  144. // mouvement de descente de la balle, de droite à gauche:
  145. void moveL_D_G(int *x,int *y, char *vmove, char *hmove)
  146. {
  147. double j;
  148. *vmove='L';
  149. *hmove='G';
  150. while(*x>minx & *y<maxy)
  151. {
  152.  (*x)--;
  153.  (*y)++;
  154.  for(j=0;j<100000;j++){;}     // tempo
  155.  effballe(*x+1,*y-1);
  156.  balle(*x,*y);
  157. }
  158. }
  159. // mouvement de mont?e de la balle, de droite à gauche:
  160. void moveH_D_G(int *x, int *y, char *vmove, char *hmove)
  161. {
  162. double j;
  163. *vmove='H';
  164. *hmove='G';
  165. while(*x>minx & *y>miny)
  166. {
  167.  (*x)--;
  168.  (*y)--;
  169.  for(j=0;j<100000;j++){;}     // tempo
  170.  effballe(*x+1,*y+1);
  171.  balle(*x,*y);
  172. }
  173. }
  174. // mouvement de mont?e de la balle, de gauche à droite:
  175. void moveH_G_D(int *x, int *y, char *vmove, char *hmove)
  176. {
  177. double j;
  178. *vmove='H';
  179. *hmove='D';
  180. while(*x<maxx & *y>miny)
  181. {
  182.  (*x)++;
  183.  (*y)--;
  184.  for(j=0;j<100000;j++){;}     // tempo
  185.  effballe(*x-1,*y+1);
  186.  balle(*x,*y);
  187. }
  188. }


 
si vous avez des critiques, ameliorations possible(ce dont je ne doute pas :whistle: ) allez y gaiement ;)
ça ne sera que mieux pour moi ;)
donc je resume, j'ai simplement animé ma balle pour l'instant, enfin animé c'est un bien grant mot, compilez en vous verez ce que ça donne ;)
je pas trop mecontent de moi, mais le probleme qui se pose maintenant, c'est que je sais plus ou inserer du code pour gerer le clavier et faire deplacer un curseur pour creer une barre et ainsi rediure l'espace de la balle ...
à vos idées chers amis ;)
 
PS: si j'ai po été clair sur quelque chose, dites le, je vais essayer de faire plus simple ;) [:razorbak83]  
 
 :jap:  :hello:
 
[edit:] j'ai oublié de preciser que tout le code devait etre compatible TC 2.0, en gros du C le plus basique possible ;)
 
 :jap:


Message édité par razorbak83 le 27-12-2002 à 14:55:58

---------------
powered by 1700+ JIUHB 0251 F @ 2450 / 1.74v :ange: et rock stable !!!! :sol:
Reply

Marsh Posté le 27-12-2002 à 14:08:54   

Reply

Marsh Posté le 27-12-2002 à 14:51:26    

bon j'ai amelioré la mise en page ... :whistle:  
 
mais j'aimerais bien que quelqu'un me debloque ... :cry:  
 
parce que la je m'embrouille completement  :sweat:  
 
en relisant mon code, je me rend compte que je veux faire 2 choses en meme temps : gerer le deplacement de la balle et gerer le deplacement d'un curseur pour reduire l'espace autour de la balle ...
 
j'en suis à un point ou je sais meme plus comment coder ça :cry:  :cry:


---------------
powered by 1700+ JIUHB 0251 F @ 2450 / 1.74v :ange: et rock stable !!!! :sol:
Reply

Marsh Posté le 27-12-2002 à 15:22:00    

j'ai pas le temps de coder ton truc, mais je te fais l'algo :
 

Code :
  1. bool terminé = false;
  2. while (!terminé) {
  3.    // déplacer la balle selon les variables mises à jour
  4.    (... ton code ...)
  5.    // lire le clavier
  6.    c = getchar();
  7.    switch (c) {
  8.       case TOUCHE1:
  9.          //agir en conséquence, et mettre à jour les variables
  10.          break;
  11.       case TOUCHE2:
  12.          //idem
  13.          break;
  14.       case ESC:
  15.          //si on a appuyé sur ESC, alors le prog se termine
  16.          terminé = true;
  17.          break;
  18.    }
  19. }


bon, c'est en gros ce qu'il faut faire. tu dois donc refaire ton code entièrement

Reply

Marsh Posté le 27-12-2002 à 15:50:59    

thx  :jap:  
je sens une belle prise de tete arriver ... :cry:


---------------
powered by 1700+ JIUHB 0251 F @ 2450 / 1.74v :ange: et rock stable !!!! :sol:
Reply

Marsh Posté le 27-12-2002 à 22:44:49    

juste une chose harkonnen c'est koi ton instruction bool ???
parce que ni moi ni Turbo C ne connait ??? :??:  
 
 :jap:  :hello:


---------------
powered by 1700+ JIUHB 0251 F @ 2450 / 1.74v :ange: et rock stable !!!! :sol:
Reply

Marsh Posté le 27-12-2002 à 22:49:35    

C'est un type de variable du C++ et du C99


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 27-12-2002 à 22:56:11    

je te conseille un compilateur plus récent:
 
 
www.mingw.org


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 28-12-2002 à 00:47:29    

antp> c'est pas _Bool pour le C99 ?
 
razorbak83> desole je connais pas ton jeu (je l'ai entre apperçu une fois sur un portable mais j'ai pas pigé les regles)
J'ai pas trop lu ton code, mais je me pose une question : comment est cadencé ton jeu ? => comment tu controles le temps qui sépares 2 mouvements de la balle ?
Une solution simple serait d'insérer au début du while un sleep, mais ca marche avec des secondes ... ca fait un peu long.
Pour faire plus précis, ben ... a part programmer le timer je vois pas trop.
Donc je te conseille moi aussi de passer a autre chose. Si tu tiens à DOS, utilise au moins Allegro.
Mais en passant au 32 bits, tu n'auras que des avantages. Y'a des librairies genre SDL qui te faciliteront la vie et te feront faire des jeux bien plus beaux que le mode console, et portables en plus.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 28-12-2002 à 05:07:00    

Code :
  1. for(j=0;j<100000;j++){;}     // tempo

Mais quelle horreur !
Si tu ne disposes pas de sleep, fais-en l'équivalent avec clock.
 
Plutôt que d'avoir des séries de switch imbriqués multipliants les appels à des fonctions quasi-identiques, contentes-toi de gérer deux vitesses (horizontale et verticale, pouvant être négatives) qui incrémentent directement les coordonnées.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 29-12-2002 à 13:33:11    

bon pour les personnes qui veulent que je passe à un langage plus recent ... je peux pô :( on fait du C et j'ai un projet à faire en C..
de plus je peux pas non plus utiliser un compilo plus recent, puisque notre prof veux qu'on fasse un progz compilable par TurboC 2.0 .... :sarcastic:  
 
pour le nom du jeux, c'st typique des calculatrices (TI89 par exemple :whistle: ) et ça s'appelle Jezzball ;)
 
et en effet helloworld ce jeux je l'ai vu sur un Sagem My-X5 ;)
 
 
sinon, merci pour tout, je vais m'y remettre apres le W/E ;)
 
:hello:
:jap:


---------------
powered by 1700+ JIUHB 0251 F @ 2450 / 1.74v :ange: et rock stable !!!! :sol:
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed