probleme de fgetc

probleme de fgetc - C - Programmation

Marsh Posté le 18-01-2008 à 15:33:24    

bonjour.
voici ma fonction. je lui demande d'aller lire des caracteres dans un fichier.
ici i et j varient de 1 à 12, la fonction est sensée me lire 144 caractères. mais elle s'arrete à 24
voici ce que me disent les        printf("%d %d ",i,j);
      printf("%c",coordonnees[i][j]);:
lire niveau 1 1 M1 2 m1 3 m1 4 m1 5 m1 6  1 7 m1 8 m1 9 m1 10  1 11 m1 12 m2 1 �2 2 �2 3 �2 4 �2 5 �2 6 �2 7 �2 8 �2 9 �2 10 �2 11 �2 12 �
à partir de i = 2 le caractere n'est pas reconnu (alors que dans le fichier tout est normal)
et i = 3 tout plante
 
 

Code :
  1. void lireNiveau (char coordonnees[DIMENSIONS+1][DIMENSIONS+1],SDL_Surface* surfaces[DIMENSIONS+1][DIMENSIONS+1], SDL_Surface **mario,SDL_Rect *positionMario)
  2. {
  3. printf("lire niveau " );
  4. int i,j;
  5. FILE* niveau = NULL;
  6. niveau = fopen("niveau", "r" );
  7. if (niveau != NULL)
  8. {
  9.  for (i=1;i<=DIMENSIONS;i++)
  10.  {
  11.   for(j=1;j<=DIMENSIONS;j++)
  12.   {
  13.    coordonnees[i][j] = fgetc(niveau);
  14.    switch(coordonnees[i][j])
  15.    {
  16.     case 'o':
  17.      printf("%d %d ",i,j);
  18.      printf("%c",coordonnees[i][j]);
  19.      surfaces[i][j] = IMG_Load("objectif.png" );
  20.      break;
  21.     case 'm':
  22.      printf("%d %d ",i,j);
  23.      printf("%c",coordonnees[i][j]);
  24.      surfaces[i][j] = IMG_Load("mur.jpg" );
  25.      break;
  26.     case 'c':
  27.      printf("%d %d ",i,j);
  28.      printf("%c",coordonnees[i][j]);
  29.      surfaces[i][j] = IMG_Load("caisse.jpg" );
  30.      break;
  31.     case 'M':
  32.      printf("%d %d ",i,j);
  33.      printf("%c",coordonnees[i][j]);
  34.      *mario = IMG_Load("mario_bas.gif" );
  35.      break;
  36.     default:
  37.      printf("%d %d ",i,j);
  38.      printf("%c",coordonnees[i][j]);
  39.      break;
  40.    }
  41.   }
  42.  fclose(niveau); // On ferme le fichier qui a été ouvert
  43.  }
  44. }
  45. }


 
je suppose que le fget est à l'origine de cela  quand je lance le programme:

Code :
  1. *** glibc detected *** ./main: double free or corruption (!prev): 0x000000000062f400 ***
  2. ======= Backtrace: =========
  3. /lib/libc.so.6[0x2b64600a3fca]
  4. /lib/libc.so.6(cfree+0x8c)[0x2b64600a7b5c]
  5. /lib/libc.so.6(fclose+0x14c)[0x2b6460092d6c]
  6. ./main[0x401293]
  7. ./main[0x400c87]
  8. /lib/libc.so.6(__libc_start_main+0xf4)[0x2b646004e1c4]
  9. ./main[0x400ab9]
  10. ======= Memory map: ========
  11. 00400000-00402000 r-xp 00000000 08:06 24887301                           /home/anisometropie/programmes/programmation c/zMARIO/main
  12. 00601000-00602000 rw-p 00001000 08:06 24887301                           /home/anisometropie/programmes/programmation c/zMARIO/main
  13. 00602000-00645000 rw-p 00602000 00:00 0                                  [heap]
  14. 2b645f938000-2b645f955000 r-xp 00000000 08:01 1254458                    /lib/ld-2.7.so
  15. 2b645f955000-2b645f958000 rw-p 2b645f955000 00:00 0
  16. 2b645f958000-2b645f95f000 r--s 00000000 08:01 473886                     /usr/lib/gconv/gconv-modules.cache
  17. 2b645f971000-2b645f981000 r-xp 00000000 08:01 478789                     /usr/lib/libXext.so.6.4.0
  18. 2b645f981000-2b645fa81000 ---p 00010000 08:01 478789                     /usr/lib/libXext.so.6.4.0
  19. 2b645fa81000-2b645fa82000 rw-p 00010000 08:01 478789                     /usr/lib/libXext.so.6.4.0
  20. 2b645fb54000-2b645fb56000 rw-p 0001c000 08:01 1254458                    /lib/ld-2.7.so
  21. 2b645fb56000-2b645fbc3000 r-xp 00000000 08:01 483819                     /usr/lib/libSDL-1.2.so.0.11.0
  22. 2b645fbc3000-2b645fdc3000 ---p 0006d000 08:01 483819                     /usr/lib/libSDL-1.2.so.0.11.0
  23. 2b645fdc3000-2b645fdc6000 rw-p 0006d000 08:01 483819                     /usr/lib/libSDL-1.2.so.0.11.0
  24. 2b645fdc6000-2b645fe14000 rw-p 2b645fdc6000 00:00 0
  25. 2b645fe14000-2b645fe1f000 r-xp 00000000 08:01 481379                     /usr/lib/libSDL_image-1.2.so.0.1.5
  26. 2b645fe1f000-2b646001f000 ---p 0000b000 08:01 481379                     /usr/lib/libSDL_image-1.2.so.0.1.5
  27. 2b646001f000-2b6460020000 rw-p 0000b000 08:01 481379                     /usr/lib/libSDL_image-1.2.so.0.1.5
  28. 2b6460020000-2b6460030000 rw-p 2b6460020000 00:00 0
  29. 2b6460030000-2b6460184000 r-xp 00000000 08:01 1254382                    /lib/libc-2.7.so
  30. 2b6460184000-2b6460384000 ---p 00154000 08:01 1254382                    /lib/libc-2.7.so
  31. 2b6460384000-2b6460387000 r--p 00154000 08:01 1254382                    /lib/libc-2.7.so
  32. 2b6460387000-2b6460389000 rw-p 00157000 08:01 1254382                    /lib/libc-2.7.so
  33. 2b6460389000-2b646038e000 rw-p 2b6460389000 00:00 0
  34. 2b646038e000-2b6460467000 r-xp 00000000 08:01 472814                     /usr/lib/libasound.so.2.0.0
  35. 2b6460467000-2b6460666000 ---p 000d9000 08:01 472814                     /usr/lib/libasound.so.2.0.0
  36. 2b6460666000-2b646066e000 rw-p 000d8000 08:01 472814                     /usr/lib/libasound.so.2.0.0
  37. 2b646066e000-2b646066f000 rw-p 2b646066e000 00:00 0
  38. 2b646066f000-2b6460675000 r-xp 00000000 08:01 480226                     /usr/lib/libartsc.so.0.0.0
  39. 2b6460675000-2b6460874000 ---p 00006000 08:01 480226                     /usr/lib/libartsc.so.0.0.0
  40. 2b6460874000-2b6460875000 rw-p 00005000 08:01 480226                     /usr/lib/libartsc.so.0.0.0
  41. 2b6460875000-2b6460878000 r-xp 00000000 08:01 472697                     /usr/lib/libgmodule-2.0.so.0.1400.3
  42. 2b6460878000-2b6460a77000 ---p 00003000 08:01 472697                     /usr/lib/libgmodule-2.0.so.0.1400.3
  43. 2b6460a77000-2b6460a78000 rw-p 00002000 08:01 472697                     /usr/lib/libgmodule-2.0.so.0.1400.3
  44. 2b6460a78000-2b6460a7a000 r-xp 00000000 08:01 1254391                    /lib/libdl-2.7.so
  45. 2b6460a7a000-2b6460c7a000 ---p 00002000 08:01 1254391                    /lib/libdl-2.7.so
  46. 2b6460c7a000-2b6460c7c000 rw-p 00002000 08:01 1254391                    /lib/libdl-2.7.so
  47. 2b6460c7c000-2b6460c7d000 rw-p 2b6460c7c000 00:00 0
  48. 2b6460c7d000-2b6460c81000 r-xp 00000000 08:01 472701                     /usr/lib/libgthread-2.0.so.0.1400.3
  49. 2b6460c81000-2b6460e80000 ---p 00004000 08:01 472701                     /usr/lib/libgthread-2.0.so.0.1400.3
  50. 2b6460e80000-2b6460e81000 rw-p 00003000 08:01 472701                     /usr/lib/libgthread-2.0.so.0.1400.3
  51. 2b6460e81000-2b6460e89000 r-xp 00000000 08:01 1254455                    /lib/librt-2.7.so
  52. 2b6460e89000-2b6461088000 ---p 00008000 08:01 1254455                    /lib/librt-2.7.so
  53. 2b6461088000-2b646108a000 rw-p 00007000 08:01 1254455                    /lib/librt-2.7.so
  54. 2b646108a000-2b6461136000 r-xp 00000000 08:01 472695                     /usr/lib/libglib-2.0.so.0.1400.3
  55. 2b6461136000-2b6461335000 ---p 000ac000 08:01 472695                     /usr/lib/libglib-2.0.so.0.1400.3
  56. 2b6461335000-2b6461337000 rw-p 000ab000 08:01 472695                     /usr/lib/libglib-2.0.so.0.1400.3
  57. 2b6461337000-2b6461338000 rw-p 2b6461337000 00:00 0
  58. 2b6461338000-2b6461340000 r-xp 00000000 08:01 480246                     /usr/lib/libesd.so.0.2.36
  59. 2b6461340000-2b6461440000 ---p 00008000 08:01 480246                     /usr/lib/libesd.so.0.2.36
  60. 2b6461440000-2b6461441000 rw-p 00008000 08:01 480246                     /usr/lib/libesd.so.0.2.36
  61. 2b6461441000-2b6461465000 r-xp 00000000 08:01 480233                     /usr/lib/libaudiofile.so.0.0.2
  62. 2b6461465000-2b6461665000 ---p 00024000 08:01 480233                     /usr/lib/libaudiofile.so.0.0.2
  63. 2b6461665000-2b6461669000 rw-p 00024000 08:01 480233                     /usr/lib/libaudiofile.so.0.0.2
  64. 2b6461669000-2b64616e9000 r-xp 00000000 08:01 1254397                    /lib/libm-2.7.so
  65. 2b64616e9000-2b64618e8000 ---p 00080000 08:01 1254397                    /lib/libm-2.7.so
  66. 2b64618e8000-2b64618ea000 rw-p 0007f000 08:01 1254397                    /lib/libm-2.7.so
  67. 2b64618ea000-2b64618eb000 rw-p 2b64618ea000 00:00 0
  68. 2b64618eb000-2b6461902000 r-xp 00000000 08:01 476270                     /usr/lib/libaudio.so.2.4
  69. 2b6461902000-2b6461b02000 ---p 00017000 08:01 476270                     /usr/lib/libaudio.so.2.4
  70. 2b6461b02000-2b6461b03000 rw-p 00017000 08:01 476270                     /usr/lib/libaudio.so.2.4
  71. 2b6461b03000-2b6461b5e000 r-xp 00000000 08:01 478781                     /usr/lib/libXt.so.6.0.0
  72. 2b6461b5e000-2b6461d5d000 ---p 0005b000 08:01 478781                     /usr/lib/libXt.so.6.0.0
  73. 2b6461d5d000-2b6461d63000 rw-p 0005a000 08:01 478781                     /usr/lib/libXt.so.6.0.0
  74. 2b6461d63000-2b6461d64000 rw-p 2b6461d63000 00:00 0
  75. 2b6461d64000-2b6461dc1000 r-xp 00000000 08:01 483796                     /usr/lib/libdirectfb-0.9.so.25.0.0
  76. 2b6461dc1000-2b6461fc1000 ---p 0005d000 08:01 483796                     /usr/lib/libdirectfb-0.9.so.25.0.0
  77. 2b6461fc1000-2b6461fc4000 rw-p 0005d000 08:01 483796                     /usr/lib/libdirectfb-0.9.so.25.0.0
  78. 2b6461fc4000-2b6461fc5000 rw-p 2b6461fc4000 00:00 0
  79. 2b6461fc5000-2b6461fcb000 r-xp 00000000 08:01 483797                     /usr/lib/libfusion-0.9.so.25.0.0
  80. 2b6461fcb000-2b64621ca000 ---p 00006000 08:01 483797                     /usr/lib/libfusion-0.9.so.25.0.0
  81. 2b64621ca000-2b64621cb000 rw-p 00005000 08:01 483797                     /usr/lib/libfusion-0.9.so.25.0.0
  82. 2b64621cb000-2b64621da000 r-xp 00000000 08:01 483795                     /usr/lib/libdirect-0.9.so.25.0.0
  83. 2b64621da000-2b64623d9000 ---p 0000f000 08:01 483795                     /usr/lib/libdirect-0.9.so.25.0.0
  84. 2b64623d9000-2b64623db000 rw-p 0000e000 08:01 483795                     /usr/lib/libdirect-0.9.so.25.0.0
  85. 2b64623db000-2b6462428000 r-xp 00000000 08:01 481372                     /usr/lib/libvga.so.1.4.3
  86. 2b6462428000-2b6462627000 ---p 0004d000 08:01 481372                     /usr/lib/libvga.so.1.4.3
  87. 2b6462627000-2b6462630000 rw-p 0004c000 08:01 481372                     /usr/lib/libvga.so.1.4.3
  88. 2b6462630000-2b646263a000 rw-p 2b6462630000 00:00 0
  89. 2b646263a000-2b6462655000 r-xp 00000000 08:01 481848                     /usr/lib/libaa.so.1.0.4
  90. 2b6462655000-2b6462854000 ---p 0001b000 08:01 481848                     /usr/lib/libaa.so.1.0.4
  91. 2b6462854000-2b6462857000 rw-p 0001a000 08:01 481848                     /usr/lib/libaa.so.1.0.4
  92. 2b6462857000-2b6462859000 rw-p 2b6462857000 00:00 0
  93. 2b6462859000-2b6462862000 r-xp 00000000 08:01 472822                     /usr/lib/libcaca.so.0.99.13
  94. 2b6462862000-2b6462a62000 ---p 00009000 08:01 472822                     /usr/lib/libcaca.so.0.99.13
  95. 2b6462a62000-2b6462a63000 rw-p 00009000 08:01 472822                     /usr/lib/libcaca.so.0.99.13
  96. 2b6462a63000-2b6462a75000 r-xp 00000000 08:01 472818                     /usr/lib/libcucul.so.0.99.13
  97. 2b6462a75000-2b6462c75000 ---p 00012000 08:01 472818                     /usr/lib/libcucul.so.0.99.13
  98. 2b6462c75000-2b6462cfc000 rw-p 00012000 08:01 472818                     /usr/lib/libcucul.so.0.99.13
  99. 2b6462cfc000-2b6462d01000 rw-p 2b6462cfc000 00:00 0
  100. 2b6462d01000-2b6462d17000 r-xp 00000000 08:01 1254396                    /lib/libpthread-2.7.so
  101. 2b6462d17000-2b6462f16000 ---p 00016000 08:01 1254396                    /lib/libpthread-2.7.so
  102. 2b6462f16000-2b6462f18000 rw-p 00015000 08:01 1254396                    /lib/libpthread-2.7.so
  103. 2b6462f18000-2b6462f1c000 rw-p 2b6462f18000 00:00 0
  104. 2b6462f1c000-2b6462f3f000 r-xp 00000000 08:01 478796                     /usr/lib/libpng12.so.0.15.0
  105. 2b6462f3f000-2b646313f000 ---p 00023000 08:01 478796                     /usr/lib/libpng12.so.0.15.0
  106. 2b646313f000-2b6463140000 rw-p 00023000 08:01 478796                     /usr/lib/libpng12.so.0.15.0
  107. 2b6463140000-2b6463156000 r-xp 00000000 08:01 481548                     /usr/lib/libz.so.1.2.3.3
  108. 2b6463156000-2b6463356000 ---p 00016000 08:01 481548                     /usr/lib/libz.so.1.2.3.3
  109. 2b6463356000-2b6463357000 rw-p 00016000 08:01 481548                     /usr/lib/libz.so.1.2.3.3
  110. 2b6463357000-2b6463358000 rw-p 2b6463357000 00:00 0
  111. 2b6463358000-2b646337e000 r-xp 00000000 08:01 473725                     /usr/lib/libpcre.so.3.12.1
  112. 2b646337e000-2b646357e000 ---p 00026000 08:01 473725                     /usr/lib/libpcre.so.3.12.1
  113. 2b646357e000-2b646357f000 rw-p 00026000 08:01 473725                     /usr/lib/libpcre.so.3.12.1
  114. 2b646357f000-2b6463587000 r-xp 00000000 08:01 478779                     /usr/lib/libSM.so.6.0.0
  115. 2b6463587000-2b6463786000 ---p 00008000 08:01 478779                     /usr/lib/libSM.so.6.0.0
  116. 2b6463786000-2b6463787000 rw-p 00007000 08:01 478779                     /usr/lib/libSM.so.6.0.0
  117. 2b6463787000-2b6463788000 rw-p 2b6463787000 00:00 0
  118. 2b6463788000-2b646379e000 r-xp 00000000 08:01 478777                     /usr/lib/libICE.so.6.3.0
  119. 2b646379e000-2b646399e000 ---p 00016000 08:01 478777                     /usr/lib/libICE.so.6.3.0
  120. 2b646399e000-2b646399f000 rw-p 00016000 08:01 478777                     /usr/lib/libICE.so.6.3.0
  121. 2b646399f000-2b64639a3000 rw-p 2b646399f000 00:00 0
  122. 2b64639a3000-2b6463aa5000 r-xp 00000000 08:01 478730                     /usr/lib/libX11.so.6.2.0
  123. 2b6463aa5000-2b6463ba5000 ---p 00102000 08:01 478730                     /usr/lib/libX11.so.6.2.0
  124. 2b6463ba5000-2b6463bac000 rw-p 00102000 08:01 478730                     /usr/lib/libX11.so.6.2.0
  125. 2b6463bac000-2b6463bde000 r-xp 00000000 08:01 1254307                    /lib/libx86.so.1
  126. 2b6463bde000-2b6463cdd000 ---p 00032000 08:01 1254307                    /lib/libx86.so.1
  127. 2b6463cdd000-2b6463ce0000 rw-p 00031000 08:01 1254307                    /lib/libx86.so.1
  128. 2b6463ce0000-2b6463ce2000 rw-p 2b6463ce0000 00:00 0
  129. 2b6463ce2000-2b6463d1a000 r-xp 00000000 08:01 1254250                    /lib/libncurses.so.5.6
  130. 2b6463d1a000-2b6463f1a000 ---p 00038000 08:01 1254250                    /lib/libncurses.so.5.6
  131. 2b6463f1a000-2b6463f1e000 rw-p 00038000 08:01 1254250                    /lib/libncurses.so.5.6
  132. 2b6463f1e000-2b6463f1f000 rw-p 2b6463f1e000 00:00 0
  133. 2b6463f1f000-2b6463fec000 r-xp 00000000 08:01 1254364                    /lib/libslang.so.2.1.3
  134. 2b6463fec000-2b64641ec000 ---p 000cd000 08:01 1254364                    /lib/libslang.so.2.1.3
  135. 2b64641ec000-2b6464208000 rw-p 000cd000 08:01 1254364                    /lib/libslang.so.2.1.3
  136. 2b6464208000-2b6464267000 rw-p 2b6464208000 00:00 0
  137. 2b6464267000-2b646426c000 r-xp 00000000 08:01 477799                     /usr/lib/libgpm.so.1.19.6
  138. 2b646426c000-2b646436c000 ---p 00005000 08:01 477799                     /usr/lib/libgpm.so.1.19.6
  139. 2b646436c000-2b646436d000 rw-p 00005000 08:01 477799                     /usr/lib/libgpm.so.1.19.6
  140. 2b646436d000-2b646436e000 rw-p 2b646436d000 00:00 0
  141. 2b646436e000-2b6464370000 r-xp 00000000 08:01 478726                     /usr/lib/libXau.so.6.0.0
  142. 2b6464370000-2b646446f000 ---p 00002000 08:01 478726                     /usr/lib/libXau.so.6.0.0
  143. 2b646446f000-2b6464470000 rw-p 00001000 08:01 478726                     /usr/lib/libXau.so.6.0.0
  144. 2b6464470000-2b6464475000 r-xp 00000000 08:01 478728                     /usr/lib/libXdmcp.so.6.0.0
  145. 2b6464475000-2b6464574000 ---p 00005000 08:01 478728                     /usr/lib/libXdmcp.so.6.0.0
  146. 2b6464574000-2b6464575000 rw-p 00004000 08:01 478728                     /usr/lib/libXdmcp.so.6.0.0
  147. 2b6464575000-2b6464578000 rw-p 2b6464575000 00:00 0
  148. 2b6464578000-2b6464581000 r-xp 00000000 08:01 478773                     /usr/lib/libXrender.so.1.3.0
  149. 2b6464581000-2b6464780000 ---p 00009000 08:01 478773                     /usr/lib/libXrender.so.1.3.0
  150. 2b6464780000-2b6464781000 rw-p 00008000 08:01 478773                     /usr/lib/libXrender.so.1.3.0
  151. 2b6464781000-2b6464787000 r-xp 00000000 08:01 478815                     /usr/lib/libXrandr.so.2.1.0
  152. 2b6464787000-2b6464987000 ---p 00006000 08:01 478815                     /usr/lib/libXrandr.so.2.1.0
  153. 2b6464987000-2b6464988000 rw-p 00006000 08:01 478815                     /usr/lib/libXrandr.so.2.1.0
  154. 2b6464988000-2b6464991000 r-xp 00000000 08:01 478805                     /usr/lib/libXcursor.so.1.0.2
  155. 2b6464991000-2b6464b91000 ---p 00009000 08:01 478805                     /usr/lib/libXcursor.so.1.0.2
  156. 2b6464b91000-2b6464b92000 rw-p 00009000 08:01 478805                     /usr/lib/libXcursor.so.1.0.2
  157. 2b6464b92000-2b6464b97000 r-xp 00000000 08:01 478732                     /usr/lib/libXfixes.so.3.1.0
  158. 2b6464b97000-2b6464c96000 ---p 00005000 08:01 478732                     /usr/lib/libXfixes.so.3.1.0
  159. 2b6464c96000-2b6464c97000 rw-p 00004000 08:01 478732                     /usr/lib/libXfixes.so.3.1.0
  160. 2b6464c97000-2b6464c99000 r-xp 00000000 08:01 474888                     /usr/lib/gconv/ISO8859-1.so
  161. 2b6464c99000-2b6464e98000 ---p 00002000 08:01 474888                     /usr/lib/gconv/ISO8859-1.so
  162. 2b6464e98000-2b6464e9a000 rw-p 00001000 08:01 474888                     /usr/lib/gconv/ISO8859-1.so
  163. 2b6464e9a000-2b6464f3d000 rw-s 00000000 00:09 25526275                   /SYSV00000000 (deleted)
  164. 2b6464f3d000-2b6464f3e000 rw-p 2b6464f3d000 00:00 0
  165. 2b6464f57000-2b6464f64000 r-xp 00000000 08:01 1254346                    /lib/libgcc_s.so.1
  166. 2b6464f64000-2b6465164000 ---p 0000d000 08:01 1254346                    /lib/libgcc_s.so.1
  167. 2b6465164000-2b6465165000 rw-p 0000d000 08:01 1254346                    /lib/libgcc_s.so.1
  168. 2b6468000000-2b6468021000 rw-p 2b6468000000 00:00 0
  169. 2b6468021000-2b646c000000 ---p 2b6468021000 00:00 0
  170. 7fff4b15d000-7fff4b172000 rw-p 7fff4b15d000 00:00 0                      [stack]
  171. ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vdso]
  172. lire niveau 1 0 M2 0 �Abandon


Message édité par anisometropie le 18-01-2008 à 15:52:10

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
Reply

Marsh Posté le 18-01-2008 à 15:33:24   

Reply

Marsh Posté le 18-01-2008 à 15:53:30    

pour info voici le code complet, merci d'avance

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <SDL/SDL.h>
  4. #include <SDL/SDL_image.h>
  5. #include "main.h"
  6. int main(int argc, char *argv[])
  7. {
  8. if (SDL_Init(SDL_INIT_VIDEO) == -1) // Démarrage de la SDL. Si erreur alors...
  9. {
  10.  fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); // Ecriture de l'erreur
  11.  exit(EXIT_FAILURE); // On quitte le programme
  12. }
  13. int i,j;
  14. int continuer = 1;
  15. char coordonnees[DIMENSIONS+1][DIMENSIONS+1];
  16. SDL_Surface *surfaces[DIMENSIONS+1][DIMENSIONS+1];
  17. SDL_Event event;
  18. SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
  19. SDL_Surface *ecran = NULL;
  20. SDL_Surface *mario = NULL;
  21. SDL_Rect positionMario;
  22. for (i=1;i<=DIMENSIONS;i++)
  23. {
  24.  for(j=1;j<=DIMENSIONS;j++)
  25.  {
  26.   surfaces[i][j] = NULL;
  27.  }
  28. }
  29. ecran = SDL_SetVideoMode(DIMENSIONS * 34, DIMENSIONS * 34, 32, SDL_HWSURFACE);
  30. SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  31. lireNiveau (coordonnees,surfaces,&mario,&positionMario);
  32. afficherNiveau(surfaces, &ecran);
  33. SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  34. SDL_Flip(ecran);
  35. while (continuer)
  36. {
  37.  SDL_WaitEvent(&event);
  38.  switch(event.type)
  39.  {
  40.   case SDL_QUIT:
  41.    continuer = 0;
  42.    break;
  43.   case SDL_KEYDOWN:
  44.    switch(event.key.keysym.sym)
  45.    {
  46.     case SDLK_UP: // Flèche haut
  47.      positionMario.y-=34;
  48.      mario = IMG_Load("mario_haut.gif" );
  49.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  50.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  51.      SDL_Flip(ecran);
  52.      break;
  53.     case SDLK_DOWN: // Flèche bas
  54.      positionMario.y+=34;
  55.      mario = IMG_Load("mario_bas.gif" );
  56.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  57.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  58.      SDL_Flip(ecran);
  59.      break;
  60.     case SDLK_RIGHT: // Flèche droite
  61.      positionMario.x+=34;
  62.      mario = IMG_Load("mario_droite.gif" );
  63.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  64.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  65.      SDL_Flip(ecran);
  66.      break;
  67.     case SDLK_LEFT: // Flèche gauche
  68.      positionMario.x-=34;
  69.      mario = IMG_Load("mario_gauche.gif" );
  70.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  71.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  72.      SDL_Flip(ecran);
  73.      break;
  74.    }
  75.    break;
  76.  }
  77. }
  78. return EXIT_SUCCESS;
  79. }
  80. void lireNiveau (char coordonnees[DIMENSIONS+1][DIMENSIONS+1],SDL_Surface* surfaces[DIMENSIONS+1][DIMENSIONS+1], SDL_Surface **mario,SDL_Rect *positionMario)
  81. {
  82. printf("lire niveau " );
  83. int i,j;
  84. FILE* niveau = NULL;
  85. niveau = fopen("niveau", "r" );
  86. if (niveau != NULL)
  87. {
  88.  for (i=1;i<=DIMENSIONS;i++)
  89.  {
  90.   for(j=1;j<=DIMENSIONS;j++)
  91.   {
  92.    coordonnees[i][j] = fgetc(niveau);
  93.    switch(coordonnees[i][j])
  94.    {
  95.     case 'o':
  96.      printf("%d %d ",i,j);
  97.      printf("%c",coordonnees[i][j]);
  98.      surfaces[i][j] = IMG_Load("objectif.png" );
  99.      break;
  100.     case 'm':
  101.      printf("%d %d ",i,j);
  102.      printf("%c",coordonnees[i][j]);
  103.      surfaces[i][j] = IMG_Load("mur.jpg" );
  104.      break;
  105.     case 'c':
  106.      printf("%d %d ",i,j);
  107.      printf("%c",coordonnees[i][j]);
  108.      surfaces[i][j] = IMG_Load("caisse.jpg" );
  109.      break;
  110.     case 'M':
  111.      printf("%d %d ",i,j);
  112.      printf("%c",coordonnees[i][j]);
  113.      *mario = IMG_Load("mario_bas.gif" );
  114.      break;
  115.     default:
  116.      printf("%d %d ",i,j);
  117.      printf("%c",coordonnees[i][j]);
  118.      break;
  119.    }
  120.   }
  121.  fclose(niveau); // On ferme le fichier qui a été ouvert
  122.  }
  123. }
  124. }
  125. void coordonneesVersPosition (int x, int y,SDL_Rect *position)
  126. {
  127. position->x = 12 * x;
  128. position->y = 12 * y;
  129. }
  130. void positionVersCoordonnees (SDL_Rect position, int *x, int *y)
  131. {
  132. *x = position.x /12 ;
  133. *y = position.y /12 ;
  134. }
  135. void afficherNiveau(SDL_Surface *surfaces[DIMENSIONS+1][DIMENSIONS+1], SDL_Surface **ecran)
  136. {
  137. printf("afficher niveau" );
  138. SDL_FillRect(*ecran, NULL, SDL_MapRGB((*ecran)->format, 255, 255, 255));
  139. SDL_Rect position;
  140. int i;
  141. int j;
  142. for(i=1;i<=DIMENSIONS;i++)
  143. {
  144.  for(j=1;j<=DIMENSIONS;j++)
  145.  {
  146.   coordonneesVersPosition (i, j,&position);
  147.   SDL_BlitSurface(surfaces[i][j], NULL, *ecran, &position);
  148.   SDL_Flip(*ecran);
  149.  }
  150. }
  151. }


Message édité par anisometropie le 18-01-2008 à 16:50:09

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
Reply

Marsh Posté le 18-01-2008 à 16:02:28    

Comment est écrit le fichier niveau ?
 
Question subsidiaire : pourquoi tu fais démarrer tes indices à 1 au lieu de 0 ?

Reply

Marsh Posté le 18-01-2008 à 16:08:35    

le fichier niveau est comme ca :
Mmmmm mmm mmm  mmmm mmm mmm     m    mm mmm mm mmm          mmmmmmmmmm          mmmmmmmmmm          mmmmmmmmmm          mmmmmmmmmm          oooo
 
pour les indices c'est pour se reperer plus facilement


---------------
I didn't mean you're useless. I only meant you never do anything of any use.
Reply

Marsh Posté le 18-01-2008 à 16:51:34    

je comprend pas pourquoi à partir du 13 ème caractere fgetc renvoie -1 alors que dans le fichier  il n'y a pas de problemes


Message édité par anisometropie le 18-01-2008 à 16:52:07

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
Reply

Marsh Posté le 18-01-2008 à 17:02:25    

fichtre ! je fermais mon fichier à la fin du premier for, normal qu'il y arrive pas


Message édité par anisometropie le 18-01-2008 à 17:08:14

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
Reply

Marsh Posté le 18-01-2008 à 17:38:37    

J'avais pas vu non plus. [:god]
 
Moralité : une bonne indentation permet de repérer plus facilement ce genre de bévue. [:dawao]

Reply

Marsh Posté le 19-01-2008 à 08:04:43    

Puis fgetc renvoie un int, pas un char. Parce que tu peux très bien avoir un (char)-1 (caractère de code ascii 0x255, je crois que c'est un y avec deux points dessus en iso8859-1) dans ton fichier.

Reply

Sujets relatifs:

Leave a Replay

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