GLBasic forum

Other languages => GLBasic - de => Topic started by: x-tra on 2008-Apr-04

Title: Erst im Programm weiter nach komplett feld[x][y] korrekt gefüllt
Post by: x-tra on 2008-Apr-04
ich will ein dim[10][10]    alle felder    feld

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.
Title: Erst im Programm weiter nach komplett feld[x][y] korrekt gefüllt
Post by: Schranz0r on 2008-Apr-04
Wieviele Farben?
Title: Erst im Programm weiter nach komplett feld[x][y] korrekt gefüllt
Post by: x-tra on 2008-Apr-04
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