GLBasic forum

Other languages => GLBasic - de => Topic started by: Veritas on 2008-Apr-22

Title: Zufallswiedergabe von Bildern / Zufallswert RND transferieren
Post by: Veritas on 2008-Apr-22
Hallo, ich bin Neuling und habe erst vor wenigen Tagen angefangen die Befehle kennenzulernen.
Ich möchte, am besten mit Tastendruck eine Zufallswiedergabe von Bildern starten.
Soll später wenn ich etwas mehr kapiere so etwas werden wie ein einarmiger Bandit.
Möchte mich deswegen stückweise Vorwärtsbewegen.
Daher setze ich erstmal ab der Zufallswiedergabe der Bilder. Dazu möchte ich erstmal den RND Befehl nutzen.

Code (glbasic) Select
LOADFONT "smalfont.png", 0
LOADSPRITE "Pics/01.png", 1
LOADSPRITE "Pics/02.png", 2
LOADSPRITE "Pics/03.png", 3
LOADSPRITE "Pics/04.png", 4
LOADSPRITE "Pics/05.png", 5
LOADSPRITE "Pics/06.png", 6
LOADSPRITE "Pics/07.png", 7
LOADSPRITE "Pics/08.png", 8
LOADSPRITE "Pics/09.png", 9

LET i=a
LET a=45
LET b=9


SETFONT 0
BLACKSCREEN
PRINT "Liberty City", 165, 40

DRAWRECT 50, 100, 200, 200, RGB(255, 102, 0)

[i]
FOR i=a TO 1=RND(b) STEP -1
DRAWSPRITE b, 50, 100 [/i]
NEXT

SHOWSCREEN
MOUSEWAIT

END
Der kursive Teil ist mein Problem. Ich möchte das der Wert, der dabei herauskommt später dann bei Drawsprite verwendet wird.
Wenn ihr euch jetzt fragt warum ich nicht einfach nur Drawsprite 1=RND(b) , 50, 100 dann kann ich das erklären. Ich möchte das es wie bei einem einarmigen Banditen, in diesem Fall jetzt 45 Runden "dreht" und dann beim letzten Wert wenn die Schleife stoppt stehen bleibt. Das nächste Problem wäre natürlich dann noch die 45 Runden sichtbar zu machen, sonst rattert er ja alles durch bis und startet dann das programm. Dazu aber später.

Danke LG Veritas :)
Title: Zufallswiedergabe von Bildern / Zufallswert RND transferieren
Post by: HeikoJ on 2008-Apr-22
Hallo Veritas,

ich würde es so machen :
Code (glbasic) Select
dreh      = 45  // Anzahl der Drehungen
anz_sp = 9   // Anzahl der Sprite
warten = 1

DRAWRECT 50, 100, 200, 200, RGB(255, 102, 0)

UseAsBMP // Damit das Rechteck als Hintergurnd stehen bleibt

for i=1 to dreh

  sp = RND(anz_sp)
  DRAWSPRITE sp, 50, 100

  sleep(warten*100)
  inc(warten,1)
  // Damit entsteht der Eindruck, als wenn sich das Bild immer langsamer ändert

 Showscreen  // und nun Anzeigen

next

Mousewait
Ich hoffe das ist gewünscht und hilt Dir weiter.

Gruß Heiko
Title: Zufallswiedergabe von Bildern / Zufallswert RND transferieren
Post by: Veritas on 2008-Apr-22
Ja, danke das ist schon mal ne Super Idee, habs auch gleich umgesetzt, der Effekt funktioniert auch nur hat
 
Code (glbasic) Select
sleep(warten*100)
  inc(warten,1)
das mit den Klammern bei mir nicht so funktioniert und ich musste drauf verzichten. Hab 100 auch auf 7 veringert, sonst wirkt es so als würde der computer permanent hängen, tut er ja auch ^^ er pennt ja schließlich. Der Effekt ist gut, aber wirkt leider noch nicht flüssig genug.
Danke LG Veritas