Ich hab mich mal ein bisschen mit den arrays und types hier beschäftigt und würde gern ein spielfeld generieren, sagen wir 10 mal 10 felder, gefüllt mit jeweils einer zufälligen zahl.
Soweit hab ich das auch geschafft, aber wie kann man eine abfrage unterbringen, das weder horizontal noch vertikal 3 gleiche zahlen nebeneinander liegen?
Also soweit hatte ich es ja schon:
FOR x = 0 TO felderx-1
FOR y = 0 TO feldery-1
Arr[x][y].Inhalt = (RND(9)+1)
next
next
Da füllt es aber eben alles zufällig und ich möchte jedoch keine drei aufeinanderfolgende gleiche Zahlen
schreib dir ein zweites Array, daß die Zahlen, die du auf dem Spielfeld haben willst, enthält. Aus diesem Array wählt zu zufällig ein Element aus, überträgst das in dein erstes Array und löschst den Eintrag im zweiten. Damit kannst du sicher sein, daß jeder Eintrag einmalig ist bzw. aus der Menge, die du haben willst.
Beispiel:
DIM array1[10]
DIMDATA array2[], 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
FOR i = 0 TO 9
idx = RND(9-i)
array1[i] = array2[idx]
DIMDEL array2[], idx
NEXT
FOR i = 0 TO 9
PRINT array1[i], 0,i * 20
NEXT
SHOWSCREEN
MOUSEWAIT
naja es dürfen ja schon zwei gleiche nebeneinander liegen.
ich hab da auch mal irgendwo so eine while schleife gesehen irgendwo eben, wo das während des füllens gemacht wird.
es können schon gern zwei nebeneinander liegen, nur 3 eben nicht.