Zufallszahlen überprüfen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Bluejuce

Betreff: Zufallszahlen überprüfen

BeitragSo, Jun 22, 2008 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,

ich versuche gerade 50 Bilder zufällig auf dem Bildschirm erscheinen zu lassen. Die Koordinaten habe ich vorher in einer zufälligen Reihenfolge mit "Rand" erstellt und in zwei Dim-Felder gespeichert. Dadurch entstand folgendes Problem. Einige der Bilder lagen nach der Berechnung übereinander. Wie kann ich die Zahlen so überprüfen lassen das diese einen Mindestabstand von 10 Zahlen haben, da die Bilder 10x10 Pixel gross sind? Würde mich sehr über eure Hilfe freuen.
 

DjDETE

BeitragSo, Jun 22, 2008 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Maximale x und y koordinate durch 10 teilen (beim zufall berechnen also anstat rand(100,100) rand(10,10) und dann beim Drawen wieder mit 10 multiplizieren...
müsste funktionieren
MfG DjDETE
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

Bluejuce

BeitragSo, Jun 22, 2008 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey DjDETE,
danke für die sehr schnelle antwort Very Happy .
Genau das habe ich gesucht. Funktioniert super.
 

DjDETE

BeitragSo, Jun 22, 2008 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
kein Problem Wink
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

Shark

BeitragSo, Jun 22, 2008 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei DJDetes Lösungsansatz gibt es nur noch ein Problem es können Bilder von andern Bilder überzeichnet werden...

Falls du das nicht willst musst du testen ob schon ein Bild auf dem feld ist wenn ja dann musst du mithilfe von Goto nochmal eine Zufallszahl auswählen Smile

mfg Shark

ToeB

BeitragSo, Jun 22, 2008 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach es lieber so (Statt mit GOTO Shocked ) :

Code: [AUSKLAPPEN]
For i = 1 to 50
    weiter = 0
    While weiter = 0
        xx = Rand(10)
        yy = Rand(10)
        anz = 0
        For j = 1 to 50
            If xx = xPos(j) And yy = yPos(j) then ;Wenn ungleiche Positionen
                anz = 1:Exit;Sagen, dass gleich sind
            EndIf
        Next
        If anz = 0 weiter = 1
    Wend
    xPos(i) = xx
    yPos(i) = yy
Next


So geht das gaaaanz einfach Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

DjDETE

BeitragSo, Jun 22, 2008 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm die Bilder können sich nicht überschneiden, da sie ja immer im abstand von 10 Pixeln sind, und die Bilddateien ja ebensoviele hoch/breit sind.
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.
 

Shark

BeitragSo, Jun 22, 2008 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Die meisten haben Angst vor Goto pfff Rolling Eyes

Zitat:
Ähm die Bilder können sich nicht überschneiden, da sie ja immer im abstand von 10 Pixeln sind, und die Bilddateien ja ebensoviele hoch/breit sind.


Was ich damit meine ist, dass es doch sein kann, dass eine Zufallszahl gleich der vorherigen ist....

Zum Beispiel:
1. Zahl 2
2. Zahl 5
3. Zahl 2

So jetzt ist die Zahl 2 doppelt und das Bild wird ja wohl jetzt vom andern Bild übermalt....

mfg Shark

ToeB

BeitragSo, Jun 22, 2008 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Was er meint ist das :
Code: [AUSKLAPPEN]
xPos(1) = 5
yPos(1) = 5
xPos(2) = 5
yPos(2) = 5
For i = 1 to 2
    DrawImage BILD,xPos(i)*10,yPos(i)*10
Next


Bild 1+2 Überschneiden sich Wink

mfg ToeB

Edit: Zu langsam...
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Shark

BeitragSo, Jun 22, 2008 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mal eine Alternative zu Toebs Code geschrieben, die ich persönlich finde und du kannst es sofort testen Wink
Ich hoffe du lernst draus, indem du den Code verstehst Smile

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()
;Dadurch ist der nachfolgende Code schneller,
;weil öfters nicht die gleiche Zahl nacheinander
;entsteht... größere Chance das ein Feld noch nicht
;besetzt wird ;)
SeedRnd = MilliSecs()
Dim map(10,10)
For z = 1 To 50
   .start
   map_x = Rnd(10)
   map_y = Rnd(10)
   ;Es wird getestet ob ein Feld schon mit einer Grafik
   ;besetzt ist, falls nicht, dann wird das Feld durch
   ;den Wert 1 gesetzt
   If map(map_x,map_y) = 1 Then
      Goto start
   Else
      map(map_x,map_y) = 1
   EndIf
Next

;Die Bilder werden gezeichnet
Color 255,0,0
For x = 1 To 10
   For y = 1 To 10
      If map(x,y) = 1 Then   
         Rect x*10,y*10,10,10
      EndIf
   Next
Next

Flip
WaitKey()
End


mfg Shark

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group