array bla(x,y) mit zufallszahlen unter bedingung füllen
Übersicht

X-traBetreff: array bla(x,y) mit zufallszahlen unter bedingung füllen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich mach zwar nicht mehr viel mit bb aber vielleicht kann einer euer schlauen köpfe dennoch helfen.
ich will ein array bla(10,10) mit werten per zufallswerten zwischen 0 und 6 füllen. aber es dürfen nie 3 gleiche werte in x oder y direkt aufeinander folgen. also 000xx000 oder 00x00 00x00 00000 ist okay. aber 00xxx00 oder 00x00 00x00 00x00 ist nicht erlaubt. jemand eine idee? dreamora doch sicher, oder? achja es soll eine sub routine sein, die erst verlassen werden darf wenn die felder so gefüllt worden sind. |
||
Shark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also wenn ich dich richtig verstanden habe, dann willst
du nicht das bei X oder Y 3 Zahlen aufeinander folgen. Kein Plan wie du es bei deinem Beispiel meinst, aber hier ist mal der Code so wie ich es verstanden hab. Code: [AUSKLAPPEN] ;Aufgabe: Nie 3 Werte bei X oder Y sollen aufeinander folgen. SeedRnd = MilliSecs() ;Dim wird erstellt mit 10 * 10 Feld´ Dim test%(10,10) Local temp% Local tempString$ ;Routine For x = 0 To 10 For y = 0 To 10 ;Falls noch keine 3 Werte erstellt wurden sind, ;wird nix überprüft If y < 2 Then test(x,y) = Int(Rnd(0,6)) Else ; .startY test(x,y) = Int(Rnd(0,6)) ;Alle Beide Positionen vor Y werden zu einem String gefügt tempString$=String(test(x,y),1)+String(test(x,y-1),1)+String(test(x,y-2),1) ;Jetzt wird Überprüft ob es 3 aufeinander folgende Zahlen sind Select tempString$ Case "000","111","222","333","444","555","666" ;Falls 3 aufeinander folgende Zahlen vorhanden sind, dann wird ;zu startY gesprungen und von dort aus wird nochmal ein neuer ;Rnd Wert erstellt Goto startY End Select EndIf ;Bei X ist das selbe Schema wie bei Y If x < 2 Then test(x,y) = Int(Rnd(0,6)) Else .startX test(x,y) = Int(Rnd(0,6)) tempString$=String(test(x,y),1)+String(test(x-1,y),1)+String(test(x-2,y),1) Select tempString$ Case "000","111","222","333","444","555","666" Goto startX End Select EndIf Next Next Graphics 800,600,16,2 SetBuffer BackBuffer() ;Feld wird gezeichnet For x = 0 To 10 For y = 0 To 10 Text 10+15*x,10+15*y,test%(x,y) Next Next WaitKey() End Ist es so wie du es gemeint hast? mfg Shark |
||
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab den code von einem anderen post hier übernommen und umgeschrieben für eine andere sprache.
schau dir das spiel bejeweled an, dann weißt du was ich meine. es wird ein spielfeld erstellt mit zufälligen steinen, welche ja zu beginn noch keine dreierkombinationen ergeben sollen. und die werte sind 1-6 also für 7 steine weil 0 ist ein transparentes tile. |
||
Shark |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: es wird ein spielfeld erstellt mit zufälligen steinen, welche ja zu beginn noch keine dreierkombinationen ergeben sollen.
Das macht doch mein Code!? er lässt keine 3 Kombination zu ![]() mfg Shark |
||
X-tra |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dein code funktioniert noch nicht so richtig.
ab und zu gibt es noch 3er kombinationen. hab grad mal getestet und hab mitten drin auf der y achse dreimal die 5 hintereinander gesehen. ich selber weiß aber nun auch nicht, wie man das behebt. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group