Minesweeper - Minen legen

  • GM 8

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

  • Minesweeper - Minen legen

    Hallo! :)

    Ich mache gerade ein Minesweeper und habe folgendes Problem:

    Ich möchte, dass beim Spielstart die Minen zufällig gelegt werden. Dazu habe ich folgenden Code verwendet:

    GML-Quellcode

    1. b=0
    2. while (b < global.Minen_anzahl) //Minen legen
    3. {
    4. for (i=0; i<global.Feld_x; i+=1)
    5. {
    6. for (j=0; j<global.Feld_y; j+=1)
    7. {
    8. var a;
    9. a = random(1000)
    10. if (a < 1)
    11. {
    12. global.Feld[i,j] = MINE
    13. b+=1
    14. }
    15. if (b == global.Minen_anzahl) break
    16. }
    17. if (b == global.Minen_anzahl) break
    18. }
    19. }
    Alles anzeigen


    global.Minen_anzahl = 10

    Eigentlich sollten jetzt 10 Minen erzeugt werden, doch aus einem mir leider nicht ersichtlichem Grund erzeugt dieser Code manchmal 8, 9 oder 11 Minen...

    Ich wäre für hilfreiche Antworten sehr froh!

    LG NONO120. 8)
  • Der Fehler liegt daran, dass es sein kann, dass das Feld schon durchlaufen wurde, obwohl das Ereigniss, dass eine Mine gelegt wird (Zufall) noch keine 10 Mal eingetreten ist.
    An deiner Stelle würde ich statt, das Feld zu durchlaufen lieber so oft wiederholen, wie es global.Minen_anzahl angibt und für jede Mine zufällige x/y Koordinaten auswählen.