variablen problem zufälliges verteilen von steinen !

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

xverbatimbasic

Betreff: variablen problem zufälliges verteilen von steinen !

BeitragDo, Feb 17, 2005 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

schon wieder so ein arrayproblem Sad

ich möchte auf einem 10*10 array
zufällig 14 mal den Wert 1 verteilen(was jetzt läuft), nur es darf aber nicht vorkommen, daß zwei Einser also 1 untereinander liegen.

also nicht so
123232323
123232321
332323231

Ich hoffe, es ist verständlich
unterer Code läuft nicht Sad(

Wäre dankbar für Hilfe !!!!



Code: [AUSKLAPPEN]

; setze 10*10 Feld mit 0 also leer
For x=1 To 10
For y=1 To 10
feld(x,y)=Rand(2,3)
Next
Next


SeedRnd MilliSecs()
.weiter1
For i = 1 To 14
  r1=Rand(1,10)
  r2=Rand(1,10)
 
; so werden 14 Werte zufällig verteilt nur wie kann ich es schaffen,
; das keine Einser untereinander liegen  ???

; so geht es auch nicht If feld(r1,r2) <> 1  and feld(r1,r2+1)<>1   Then

  If feld(r1,r2) <> 1     Then
    feld(r1,r2)=1
 
  Else
    i=i-1
  End If
 

Hot-Bit

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragDo, Feb 17, 2005 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi.

Dann frag einfach im Array ab, ob da schon der Wert steht !

tztztztz...

Toni
... ..... .i.. ...

***
Sieger des BB-Gameboy-Contest 2004
Sieger des Blitzbaster 2D-Minigolf-Contest 2005
***

Lumne

BeitragDo, Feb 17, 2005 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Also erstmal brauchst du nur Dim feld (9,9) ausführen, da die 0 mitgezählt wird. Und dann brauchst du halt ein paar Abfragen in der for-Schleife, ob in dem Feld darüber oder darunter schon eine 1 ist. Allerdings musst du hierbei darauf achten, vorher zu überprüfen, ob es überhaupt ein Feld darüber oder darunter gibt, denn sonst gibt es eine Fehlermeldung.
Das ganze würde dann ungefähr so aussehen:
Code: [AUSKLAPPEN]
Dim feld(9,9)

For x=0 To 9
For y=0 To 9
feld(x,y)=Rand(2,3)
Next
Next

SeedRnd MilliSecs()
.weiter1
For i = 1 To 14
  r1=Rand(0,9)
  r2=Rand(0,9)

  If feld(r1,r2) = 1 Then
   i = i - 1
  Else If r2 > 0 Then
   If feld(r1,r2-1) = 1 Then i = i - 1
  Else If r2 < 9 Then
   If feld(r1,r2+1) = 1 Then i = i - 1
  Else
   feld(r1,r2) = 1
  End If
Next

Ich hoffe das hilft dir... Mann, Hot-Bit ist ja heute wieder hilfreich...
Nie aufgeben.
 

Hot-Bit

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragDo, Feb 17, 2005 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi.

Was heißt hilfreich ?

Hilfreich ist es, wenn man ihm sagt, was er machen soll, und nicht, daß er den Code-schnipsel nimmt, und in sein bestehendes Prog einbaut.

Denn dann hat er es noch immer nicht kapiert !

Nur was man sich selbst erarbeitet, das versteht man !

Toni
... ..... .i.. ...

***
Sieger des BB-Gameboy-Contest 2004
Sieger des Blitzbaster 2D-Minigolf-Contest 2005
***

Lumne

BeitragDo, Feb 17, 2005 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vertrete zwar auch die Ansicht, dass man durchs Selbermachen mehr lernt, allerdings war aus seinem Code ersichtlich, dass er schon von selbst auf dein Zitat:
Dann frag einfach im Array ab, ob da schon der Wert steht !
gekommen ist, er aber nicht wusste, was er dann damit tun sollte. Also habe ich ihm das halt vorgemacht, und wenn er wirklich was lernen will, dann wird er sich das genau angucken und es verstehen wollen. Auch so kann man sehr gut lernen.
 

xverbatimbasic

BeitragDo, Feb 17, 2005 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Lumne ,

vielen dank für die anregungen, dank deiner hilfe bin ich darauf gekommen

SeedRnd MilliSecs()
.weiter1
For i = 1 To 14
r1=Rand( 1,10)
r2=Rand(2,10)

If feld(r1,r2) = 1 Then i = i - 1 :goto hierher
If feld(r1,r2-1) = 1 Then i = i - 1 :goto hierher
If feld(r1,r2+1) = 1 Then i = i - 1 :goto hierher

feld(r1,r2) = 1
.hierher

Next


habe es jetzt 20 mal getestet und läuft wohl richtig Smile))

dank auch dir hot-bit
xvb

grüße aus berlin

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group