mein pc überlässt nichts dem zufall!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Rotes_Eichhörnchen

Betreff: mein pc überlässt nichts dem zufall!

BeitragSo, Feb 05, 2006 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

ich schreib gerade ein mammory-programm, und muss am Anfang, 16 Werte für 16 variabeln finden. Also denke ich mir: "hmm...ich mach das mit rand!"

aber jetzt habe ich 2 probleme: 1.: er braucht, um alle 16 zahlen herauszufinden 2 sec. bei meinem 512 MB-Computer...

2.: wenn ich die 16 Zahlen generiere, dann schaut das so aus:

ich starte das game:

die zahlen:
1
12
15
...

kommen, ich beende das game. Ich starte es wieder. und es kommen die zahlen:
1
12
15
...

also immer nach dem gleichen schema... wer kann mir helfen?

PS.: der Code: (nicht umfallen)


Code: [AUSKLAPPEN]

While wert1=wert2 Or wert1=wert3 Or wert1=wert4 Or wert1=wert5 Or wert1=wert6 Or wert1=wert7 Or wert1=wert8 Or wert1=wert9 Or wert1=wert10 Or wert1=wert11 Or wert1=wert12 Or wert1=wert13 Or wert1=wert14 Or wert1=wert15 Or wert1=wert16 Or  wert2=wert3 Or wert2=wert4 Or wert2=wert5 Or wert2=wert6 Or wert2=wert7 Or wert2=wert8 Or wert2=wert9 Or  wert2=wert10 Or wert2=wert11 Or wert2=wert12 Or wert2=wert13 Or wert2=wert14 Or wert2=wert15 Or wert2=wert16 Or  wert3=wert4 Or wert3=wert5 Or wert3=wert6 Or wert3=wert7 Or wert3=wert8 Or wert3=wert9 Or  wert3=wert10 Or wert3=wert11 Or wert3=wert12 Or wert3=wert13 Or wert3=wert14 Or wert3=wert15  Or wert3=wert16 Or  wert4=wert5 Or wert4=wert6 Or wert4=wert7 Or wert4=wert8 Or wert4=wert9 Or wert4=wert10 Or wert4=wert11 Or wert4=wert12 Or wert4=wert13 Or wert4=wert14 Or wert4=wert15 Or wert4=wert16 Or  wert5=wert6 Or wert5=wert7 Or wert5=wert8 Or wert5=wert9 Or wert5=wert10 Or wert5=wert11 Or wert5=wert12 Or wert5=wert13 Or wert5=wert14 Or wert5=wert15 Or wert5=wert16 Or  wert6=wert7 Or wert6=wert8 Or wert6=wert9 Or wert6=wert10 Or wert6=wert11 Or wert6=wert12 Or wert6=wert13 Or wert6=wert14 Or wert6=wert15 Or wert6=wert16 Or  wert7=wert8 Or wert7=wert9  Or wert7=wert10 Or wert7=wert11 Or wert7=wert12 Or wert7=wert13 Or wert7=wert14 Or wert7=wert15 Or wert7=wert16 Or  wert8=wert9 Or  wert8=wert10 Or  wert8=wert11 Or  wert8=wert12 Or  wert8=wert13 Or  wert8=wert14 Or  wert8=wert15 Or  wert8=wert16 Or  wert9=wert10 Or  wert9=wert11 Or  wert9=wert12 Or  wert9=wert13 Or  wert9=wert14 Or  wert9=wert15 Or  wert9=wert16 Or  wert10=wert11 Or  wert10=wert12 Or  wert10=wert13 Or  wert10=wert14 Or  wert10=wert15 Or  wert10=wert16 Or  wert11=wert12 Or  wert11=wert13 Or  wert11=wert14 Or  wert11=wert15 Or  wert11=wert16 Or  wert12=wert13 Or  wert12=wert14 Or  wert12=wert15 Or  wert12=wert16 Or  wert13=wert14 Or  wert13=wert15 Or  wert13=wert16 Or  wert14=wert15 Or  wert14=wert16 Or  wert15=wert16
wert1=Rand(1,16)
wert2=Rand(1,16)
wert3=Rand(1,16)
wert4=Rand(1,16)
wert5=Rand(1,16)
wert6=Rand(1,16)
wert7=Rand(1,16)
wert8=Rand(1,16)
wert9=Rand(1,16)
wert10=Rand(1,16)
wert11=Rand(1,16)
wert12=Rand(1,16)
wert13=Rand(1,16)
wert14=Rand(1,16)
wert15=Rand(1,16)
wert16=Rand(1,16)

tyty

BeitragSo, Feb 05, 2006 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
SeedRnd MilliSecs()
User posted image

Kaikille suomea puhuville ihmisille: tyty = tyty the technical youngster!!!

Cardonic

BeitragSo, Feb 05, 2006 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hi du eichhörnchen

damit nicht jedesmal die gleichen zufallszahlen kommen musst du folgende codezeile benutzen:
Code: [AUSKLAPPEN]
Seedrnd MilliSecs()


(mist, ist mir jemand zuvorgekommen)

zu der anderen frage : ich würde das etwa so schreiben:
Code: [AUSKLAPPEN]
Dim werte(15)

For i = 1 To 16
   z = Rand(15)
   While werte(z) > 0
      z = (z + 1) mod 15
   Wend
   werte(z) = i
Next


das braucht nicht ganz so viel zeit Laughing

mfg cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Rotes_Eichhörnchen

BeitragSo, Feb 05, 2006 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
das mit millisec() verstehe ich, aber das andere...

das geht ned, und mein PC hängt sich auf^^.

wert1, ist eine variable...

villeicht liegt da das problem...

YellowRider

Ehemaliger Admin

BeitragSo, Feb 05, 2006 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.

Cardonic

BeitragSo, Feb 05, 2006 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hi nochmals

Ich hab's mit BlitzPlus getestet und es funktionierte.
Für BlitzBasic2D müsste das so aussehen:

Code: [AUSKLAPPEN]
Dim werte(15)

For i = 1 To 16
   z = Rand(15)
   While werte(z) > 0
      z = z + 1
      If z > 15 Then z = 0
   Wend
   werte(z) = i
Next


Ich hoffe, dass es dieses mal funktioniert Rolling Eyes

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Rotes_Eichhörnchen

BeitragSo, Feb 05, 2006 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
habe blitz plus... werde es nochmal testen!

Cardonic

BeitragSo, Feb 05, 2006 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

Die neue Version funktioniert auch mit BlitzBasic (ich hab's getestet)

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Rotes_Eichhörnchen

BeitragSo, Feb 05, 2006 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm... jetzt hängt sich zu mindest mein PC nicht mehr auf... aber es werden keine zahlen geliefert, wenn ich das folgendermasßen mache:

Code: [AUSKLAPPEN]

Graphics 800,600,32,1

SetBuffer BackBuffer()
hintergrund=LoadImage("bg.bmp")
MaskImage maus, 255, 0, 255


While Not KeyHit(1)
   X=MouseX()
   Y=MouseY()
   Cls

DrawImage hintergrund,0,0

SeedRnd MilliSecs()

Dim werte(15)

For i = 1 To 16
   z = Rand(15)
   While werte(z) > 0
      z = z + 1
      If z > 15 Then z = 0
   Wend
   werte(z) = i
Next

Color 0,0,0
Text 50,30, "" +wert1
Text 50,40, "" +wert2
Text 50,50, "" +wert3
Text 50,60, "" +wert4
Text 50,70, "" +wert5
Text 50,80, "" +wert6
Text 50,90, "" +wert7
Text 50,100, "" +wert8
Text 50,110, "" +wert9
Text 50,120, "" +wert10
Text 50,130, "" +wert11
Text 50,140, "" +wert12
Text 50,150, "" +wert13
Text 50,160, "" +wert14
Text 50,170, "" +wert15
Text 50,180, "" +wert16

Flip
Wend
End
 

Gerhard

BeitragSo, Feb 05, 2006 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach mal ein Waitkey() nach Flip.
Du erstellst ja bei jedem Schleifendurchlauf neue Zahlen.
Und: Schrift wirklich in schwarz?

ChaosCoder

BeitragSo, Feb 05, 2006 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
So... hab mal schnell das ganze umgeschrieben!
Sollte jetzt richtig sein!
Musst aber das mit deinen Bildern noch einfügen!

Code: [AUSKLAPPEN]
Graphics 800,600,32,2

SetBuffer BackBuffer()

SeedRnd MilliSecs() ;Aus der Schleife raus ;)

Dim werte(15) ;Auch aus der Schleife raus

For i = 0 To 15 ;Keine Ahnung was du genau machen willst aber ich würds aus der Schleife rausnehmen!
   z = Rand(15)
   z=z+1
   werte(i) = z
Next

While Not KeyHit(1)

   X=MouseX()
   Y=MouseY()
   Cls 

   For i=0 To 15
      Text 50,30+i*20, "" +werte(i) ;Hier werden alle Werte ausgegeben
   Next

   If KeyHit(57) ;Wenn du Leertaste drückst wird ein neuer Satz Zahlen generiert
      For i = 0 To 15
      z = Rand(15)
      z=z+1
      werte(i) = z
      Next
   EndIf

Flip
Wend
End
Projekte: Geolaria | aNemy
Webseite: chaosspace.de
 

Gerhard

BeitragSo, Feb 05, 2006 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Da kommen doch wieder gleiche Werte mehrfach vor.
Die For...next - Schleife war vorher besser.

Cardonic

BeitragSo, Feb 05, 2006 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

Ich habe mein Beispiel noch etwas ausgebaut, damit alle verstehen, wie es gemeint war.

Hier der Code:

Code: [AUSKLAPPEN]
Dim werte(15)

SeedRnd MilliSecs()

Repeat

   For i = 0 To 15
      werte(i) = 0
   Next

   For i = 1 To 16
      z = Rand(0,15)
      While werte(z) > 0
         z = (z+1) Mod 16
      Wend
      werte(z) = i
   Next

   Cls
   Locate 0,0
   
   For i = 0 To 15
      Print werte(i)
   Next

   WaitKey()

Until KeyHit(1)

End


Falls jemand jetzt noch behauptet, dass es nicht funktioniert ... Twisted Evil

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group