Author Topic: Erst im Programm weiter nach komplett feld[x][y] korrekt gefüllt  (Read 1249 times)

x-tra

  • Guest
ich will ein dim[10][10]    alle felder    feld
  • [y].box mit einem rnd wert füllen.


ansich kein problem.

aber es sollen weder nebeneinander noch über einander gleiche werte sein.

die habe ich so gelöst.

Code: (glbasic) [Select]
   IF x >= 0
       IF x < 9
         IF feld[x][y].box = feld[x+1][y].box
            feld[x][y].box = 0
            feld[x+1][y].box = 0
         ENDIF
       ENDIF  
    ENDIF
IF feld[x][0].box = 0 THEN feld[x][0].box = (RND(6)+1)    
// ende rechts
// keine nebeneinander oben unten
IF y >= 0
       IF y < 9
         IF feld[x][y].box = feld[x][y+1].box
            feld[x][y].box = 0
            feld[x][y+1].box = 0
         ENDIF
       ENDIF  
    ENDIF
IF feld[0][y].box = 0 THEN feld[0][y].box = (RND(6)+1)
//unten ende
der wert 0 entspricht einem transparenten wert und soll eigentlich nicht erfüllt werden, ist aber für das spätere vorgehen notwendig.
zuerst soll aber einmal das spielfeld 10x10 gefüllt werden.

dies würde ich gern in eine extra routine bzw. sub packen.

aabbeerr......  es soll erst aus der sub rausspringen, wenn das feld zu den oben genannten bedingungen gefüllt ist.

wie würdet ihr das am elegantesten lösen, da ja mehrer bedingungen zu erfüllen sind.
und das spielfeld erst freigegeben werden soll, wenn es mit werten ausser 0 komplett gefüllt ist und keine gleichen werte neben- oder übereinander liegen.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5111
  • O Rly?
    • View Profile
Wieviele Farben?
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

  • Guest
farben?

achso, du meinst wegen dem zufallswert?

das sind nur zahlen, die später als index für sprites dienen.

nur der wert "0" steht für ein transparentes sprite


so der code um das feld mit zufallswerten zu füllen ohne 3 kombinationen über- oder untereinander.

wert 0 ist aussen vor, und funktioniert alles in einem satz.

Code: (glbasic) [Select]
FOR x = 0 TO tilesX-1
  FOR y = 0 TO tilesY-1
    feld[x][y].box = (RND(5)+1)
    WHILE ( y>1 AND feld[x][y-1].box = feld[x][y].box AND feld[x][y-2].box = feld[x][y].box) OR ( x>1 AND feld[x-1][y].box = feld[x][y].box AND feld[x-2][y].box = feld[x][y].box)
      feld[x][y].box = (RND(5)+1)
    WEND
  NEXT
NEXT