démineur en C

démineur en C - C - Programmation

Marsh Posté le 24-06-2007 à 13:50:08    

Bonjour a tous...
Je dois faire un démineur en C j'ai donc mis en place: distribution aléatoire des mines et compter les mines autour de chaque case. On fera l'affichage après mais là on a des problèmes lors de la compilation et malgrès avoir cherché on ne trouve pas quelles sont ces erreurs...
Pourriez vous m'aider s'il vous plait?
Le début du programme est:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "aleat.h"
  4. #include "allegro.h"
  5. #include <time.h>
  6. //distribution des mines  
  7. int alea(int borninf,int bornsup)
  8. {
  9. return((rand())%(bornsup-borninf+1)+borninf);
  10. }
  11. void distrib_mines(int tableau, int g, int h)
  12. {
  13. int nb_mines;
  14. int a,b,c,d;
  15. nb_mines=alea(1,g);
  16. for(b=0; b=nb_mines;b++)
  17. {
  18. c=alea(0,g);
  19. d=alea(0,h);
  20. if(tableau[c][d]!=9);
  21. {
  22. tableau[c][d]=9;
  23. }
  24. else
  25. {
  26. b=b-1;
  27. }
  28. }
  29. }
  30. //mines autour  
  31. mines_autour(int tabelo,int to,int z)
  32. {
  33. int e,f;
  34. for(e=1;e=to;e++)
  35. {
  36. for(f=1;f=z;f++)
  37. {
  38. if(tabelo[e][f+1]==9)
  39. {
  40. tabelo[e][f]=tabelo[e][f]++;
  41. }
  42. if(tabelo[e][f-1]==9)
  43. {
  44. tabelo[e][f]=tabelo[e][f]++;
  45. }
  46. if(tabelo[e+1][f]==9)
  47. {
  48. tabelo[e][f]=tabelo[e][f]++;
  49. }
  50. if(tabelo[e+1][f+1]==9)
  51. {
  52. tabelo[e][f]=tabelo[e][f]++;
  53. }
  54. if(tabelo[e+1][f-1]==9)
  55. {
  56. tabelo[e][f]=tabelo[e][f]++;
  57. }
  58. if(tabelo[e-1][f]==9)
  59. {
  60. tabelo[e][f]=tabelo[e][f]++;
  61. }
  62. if(tabelo[e-1][f+1]==9)
  63. {
  64. tabelo[e][f]=tabelo[e][f]++;
  65. }
  66. if(tabelo[e-1][f-1]==9)
  67. {
  68. tabelo[e][f]=tabelo[e][f]++;
  69. }
  70. }
  71. }
  72. }
  73. void jeu()
  74. {
  75. int i,j,v,w;
  76. int mines[i][j];
  77. int affiche[v][w];
  78. distrib_mines(mines,i,j);
  79. mines_autour(i,j);
  80. }
  81. main (char **argv, int argc)
  82. {
  83. allegro_init(); //initialisation de la bibliothèque  
  84. if(install_mouse())
  85. { //initialisation de la souris  
  86. printf("Erreur_souris" );
  87. return;
  88. }
  89. if(install_keyboard())
  90. { //initialisation du clavier  
  91. printf("Erreur clavier" );
  92. return;
  93. }
  94. if(install_timer())
  95. { //initialisation des timers  
  96. printf("Erreur sur les timers" );
  97. return;
  98. }
  99. set_color_depth(8); //256 couleurs possibles  
  100. if(set_gfx_mode(GFX_AUTODETEC_WINDOWED, 320, 200, 0, 0))
  101. {
  102. printf("Erreur sur le graphisme" );
  103. return;
  104. }
  105. clear(screen); //on efface la fenêtre de résolution  
  106. 320*200
  107. jeu(); //démarage du jeu  
  108. allegro_exit();
  109. return;
  110. }
  111. END_OF_MAIN(); //pour certaines plates-formes

Reply

Marsh Posté le 24-06-2007 à 13:50:08   

Reply

Marsh Posté le 24-06-2007 à 18:36:44    

Ce qui est bien avec les compilateurs, c'est non seulement qu'ils indiquent la présence d'erreurs, mais qu'en plus ils donnent des rensiegnements sur les erreurs trouvées.
Là, c'est juste par oubli que vous ne nous donnez pas les messages d'erreur ou est-ce parce que sinon ce serait trop facile ?
 
Par ailleurs, dans le programme je vois ceci :

tabelo[e][f]=tabelo[e][f]++;


C'est bizarre, je m'attendais à avoir plutôt

tabelo[e][f]++;
ou
tabelo[e][f] = tabelo[e][f] + 1;


Message édité par olivthill le 24-06-2007 à 18:37:31
Reply

Marsh Posté le 24-06-2007 à 22:41:09    

Bonsoir, pour les infos données par le compilateur je ne les aies pas postées car je ne pourrais pas les re-avoir avant demain (je les ajouterai ) et sinon merci pour la première erreur que je vais m'empresser de corriger!

Reply

Marsh Posté le 25-06-2007 à 13:36:18    

Toutes tes boucles sont de la forme :
 

Code :
  1. for(b=0; b=nb_mines;b++)


 
Ce ne serait pas mieux comme ça :
 

Code :
  1. for(b=0; b<nb_mines;b++)

Reply

Marsh Posté le 25-06-2007 à 16:40:03    

en effet un < ou un == étaient plus adaptés, merci de votre aide j'ai finalement trouvé quelqu'un dans mes connaissances pour corriger le programme et par conséquent il ne me reste plus que l'affichage a faire ;)

Reply

Marsh Posté le 25-06-2007 à 19:04:30    

Clairement pas  :sweat:  
< c'est pas pareil que ==  :sweat:  
 
Et mettre un '=', oula  :sweat:

Reply

Marsh Posté le 27-06-2007 à 00:20:26    

Euh ça veut dire quoi un seul =? (j'imagine que si on utilise == c'est que = a une autre signification non?)

Reply

Marsh Posté le 27-06-2007 à 01:38:11    

'=' est l'operateur d'affectation. Exemple : a = 5;
'==' est l'operateur de comparaison : Exemple : if (a == 5) a = 6;
 
 :o
 
Dans certains langages, l'opérateur '=' est à la fois opérateur d'affectation et de comparaison...le compilateur fera alors automatiquement la différence en fonction du cas...


Message édité par AthlonSoldier le 27-06-2007 à 01:39:16
Reply

Marsh Posté le 27-06-2007 à 09:12:26    

Nico-teeN a écrit :

Euh ça veut dire quoi un seul =? (j'imagine que si on utilise == c'est que = a une autre signification non?)


Ouvre un livre avant de poser des question pareils.


---------------
Töp of the plöp
Reply

Marsh Posté le 27-06-2007 à 12:47:01    

Nico-teeN a écrit :

Euh ça veut dire quoi un seul =? (j'imagine que si on utilise == c'est que = a une autre signification non?)


 
Ouaouh  :pt1cable: !!! T'es venu dans la cat. C parce qu'il y avait de la lumière ???
Ta question est du même niveau qu'un type qui arrive dans un congrès d'aviation et qui demande "euh, mais c'est vraiment utile qu'un avion ait 2 ailes ???" [:rofl]

Message cité 1 fois
Message édité par Sve@r le 27-06-2007 à 12:47:34

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 27-06-2007 à 12:47:01   

Reply

Marsh Posté le 27-06-2007 à 20:20:31    

Sve@r a écrit :

Ouaouh  :pt1cable: !!! T'es venu dans la cat. C parce qu'il y avait de la lumière ???
Ta question est du même niveau qu'un type qui arrive dans un congrès d'aviation et qui demande "euh, mais c'est vraiment utile qu'un avion ait 2 ailes ???" [:rofl]


 
Nan c'est du niveau d'un type qui voit un avion avec une seule aile et qui comprend pas comment ça fonctionne

Reply

Marsh Posté le 03-07-2007 à 18:45:43    

bien répondu, en plus, cette erreur est fréquente chez les debutants !
(excuse moi Nico-teeN si tu n'es pas debutant ;) )

Reply

Sujets relatifs:

Leave a Replay

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