Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
799 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°276422
razorbak83
achetez pgeo en plus c'est bô
Posté le 27-12-2002 à 14:08:54  profilanswer
 

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:
mood
Publicité
Posté le 27-12-2002 à 14:08:54  profilanswer
 

n°276437
razorbak83
achetez pgeo en plus c&#039;est bô
Posté le 27-12-2002 à 14:51:26  profilanswer
 

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:
n°276452
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-12-2002 à 15:22:00  profilanswer
 

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

n°276478
razorbak83
achetez pgeo en plus c&#039;est bô
Posté le 27-12-2002 à 15:50:59  profilanswer
 

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:
n°276702
razorbak83
achetez pgeo en plus c&#039;est bô
Posté le 27-12-2002 à 22:44:49  profilanswer
 

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:
n°276706
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-12-2002 à 22:49:35  profilanswer
 

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°276715
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 27-12-2002 à 22:56:11  profilanswer
 

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


---------------
du bon usage de rand [C] / [C++]
n°276738
HelloWorld
Salut tout le monde!
Posté le 28-12-2002 à 00:47:29  profilanswer
 

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
n°276764
Musaran
Cerveaulté
Posté le 28-12-2002 à 05:07:00  profilanswer
 

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
n°277089
razorbak83
achetez pgeo en plus c&#039;est bô
Posté le 29-12-2002 à 13:33:11  profilanswer
 

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:

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
[PHP] noobi need help pour selectionner ds un tabloMySQL + REQUETE DELETE AVEC IMBRICATION !!!! HELP !!!!!!!
Connection en SYSDBA masterkey en localhost , ne marche pas ,help!!!![PHP] Need help avec le filesystem
Help progleme pour excuter un prog direct en htmlalgo de langage evenementiel HELP
[PHP] Requête assez complexe, need helpProblème sur un devoir en assembleur [Help : c'est pas simple <:'o( ]
help liens,frames,cadres,cells,tabl es[ASP] HELP ! sur FILTER()
Plus de sujets relatifs à : [C - BEGINNER] Help Needed !!!! je vais peter un cable :'(


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR