Spiel des Lebens - Fehlersuche

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Spiel des Lebens - Fehlersuche

    Hi!

    Ich muss bzw. möchte noch diese Aufagbe bearbeiten:

    [Blockierte Grafik: http://bildupload.sro.at/images/1-sdl.JPG]

    Weiter unten seht ihr mein Quellcode. Das programm funktioniert auch, aber irgendwie sieht die Ausgabe der Lebesräume komisch aus. Ich habe auch kein Vergleich, wie es richtig aussehen soll. Es kann ja auch sein, dass das Programm so schon richtig ist. Ich weiß es aber nicht und wollte euch jetzt bitten, dass ihr es euch mal angucken und/oder ausprobieren könntet und mir sagen könntet, was ich besser machen kann bzw. falsch gemacht habe!

    Hier also mein Quellcode:

    Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <time.h>
    4. #define X 10 /* Zeile */
    5. #define Y 10 /* Spalte */
    6. void init_world(char (*)[Y]);
    7. void next_gen(char (*)[Y], char (*)[Y]);
    8. void put_world(char (*)[Y]);
    9. int main(void)
    10. {
    11. int x=0;
    12. char gen1[X][Y];
    13. char gen2[X][Y];
    14. srand(45); /* Zufallsgenerator bei der Zahl 45 starten */
    15. init_world(gen1);
    16. put_world(gen1); /* (KANN AUCH ENTFALLEN)Ausgabe der ersten Zufallsmatrix / Zur Kontrolle, ob sie zufällig initialisiert wurde */
    17. do
    18. {
    19. next_gen(gen1,gen2);
    20. put_world(gen1);
    21. x++;
    22. }while(x<10);
    23. getchar();
    24. return 0;
    25. }
    26. void init_world(char (*world)[Y])
    27. {
    28. int i, k;
    29. for(i=0; i<X; i++)
    30. {
    31. for(k=0; k<Y; k++)
    32. {
    33. world[i][k]=rand()%2; /* Zufallsgenerator weist dem array 0 oder 1 zu */
    34. }
    35. }
    36. }
    37. void next_gen(char (*now)[Y], char (*next)[Y])
    38. {
    39. int i, k, star=0;
    40. for(i=0; i<X; i++)
    41. {
    42. for(k=0; k<Y; k++)
    43. {
    44. if((i-1>=0)&&(k-1>=0)) /* oben links */
    45. {
    46. if(now[i-1][k-1]==1)
    47. {
    48. star++;
    49. }
    50. }
    51. if(i >= 0) /* oben */
    52. {
    53. if(now[i-1][k]==1)
    54. {
    55. star++;
    56. }
    57. }
    58. if((i-1>=0)&&(k+1<=Y)) /* oben rechts*/
    59. {
    60. if(now[i-1][k+1]==1)
    61. {
    62. star++;
    63. }
    64. }
    65. if(k-1>=0) /* links */
    66. {
    67. if(now[i][k-1]==1)
    68. {
    69. star++;
    70. }
    71. }
    72. if(k+1<=Y) /* rechts */
    73. {
    74. if(now[i][k+1]==1)
    75. {
    76. star++;
    77. }
    78. }
    79. if((i+1<=X)&&(k-1>=0)) /* unten links */
    80. {
    81. if(now[i+1][k-1]==1)
    82. {
    83. star++;
    84. }
    85. }
    86. if(i+1<X) /* unten */
    87. {
    88. if(now[i+1][k]==1)
    89. {
    90. star++;
    91. }
    92. }
    93. if((i+1<=X)&&(k+1<=Y)) /* unten rechts */
    94. {
    95. if(now[i+1][k+1]==1)
    96. {
    97. star++;
    98. }
    99. }
    100. /* Leben oder Tod */
    101. if((star < 2) || (star > 3) )
    102. {
    103. next[i][k]=0;
    104. }
    105. else if(star == 3)
    106. {
    107. next[i][k]=1;
    108. }
    109. else if(star == 2)
    110. {
    111. next[i][k]=now[i][k];
    112. }
    113. }
    114. }
    115. for(i=0; i<X; i++)
    116. {
    117. for(k=0; k<Y; k++)
    118. {
    119. now[i][k]=next[i][k];
    120. }
    121. }
    122. }
    123. void put_world(char (*pgen)[Y])
    124. {
    125. int i, k;
    126. for(i=0; i<X; i++)
    127. {
    128. for(k=0; k<Y; k++)
    129. {
    130. if(pgen[i][k] == 0)
    131. {
    132. printf("%c",' ');
    133. }
    134. else
    135. {
    136. printf("%c",'*');
    137. }
    138. }
    139. printf("\n");
    140. }
    141. printf("\n--------------\n");
    142. }
    Alles anzeigen


    Hier gibt es die .c-Datei nocheinmal als Download.

    Vielen Dank schon mal im Voraus.
    Ich suche nach dem fehler schon seit Tagen und weiß nicht wo der ist bzw. ob überhaupt einer besteht! :(

    Gruß Sheddy