Sprite auf Bildschirm verteilen ...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

BlackCat

Betreff: Sprite auf Bildschirm verteilen ...

BeitragDo, Okt 23, 2008 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Very Happy

Hab da ein Problem (wer haette das gedacht Laughing )

Ich moechte ein Sprite mehrmals auf den Bildschirm zeichnen... Hab hab den Sprite wunderbar mit LoadAnimImage geladen, nur wenn ich ihn mehrmals auf den Bildschirm zeichnen will bleibt er immer nur an einer Stelle. Wie kann man dieses Problem effezient (!) loesen...

BladeRunner

Moderator

BeitragDo, Okt 23, 2008 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Code nix los.
Für jedes Zeichnen andere Koordinaten verwenden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Okt 23, 2008 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Willst du 2D Sachen zeichnen mit 3D Unterstützung, oder 3D Objekte im 3D Raum zeichnen.

Also: Wird es ein 2D-Spiel oder ein 3D-Spiel?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

BlackCat

BeitragDo, Okt 23, 2008 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
nix da 3D - davon hab ich ja ueberhaupt keinen Plan Laughing

Hier die Main-Loop mit allen Variablendeklarationen:

Code: [AUSKLAPPEN]
Dim quallex(20)
Dim qualley(20)
netz = LoadImage("netz.png")
MaskImage netz, 253, 253, 253
back = LoadImage("background.png")
qualle = LoadAnimImage("qualletest.png", 100, 120, 0, 4)
MaskImage qualle, 16, 128, 248
MausX = MouseX()
MausY = MouseY()

newtime = CreateTimer(60)
frame = 0
qualle_time = MilliSecs()

For i = 1 To 10
   SeedRnd(MilliSecs())
   quallex(i) = Rand(1, 573)

   SeedRnd(MilliSecs())
   qualley(i) = Rand(1, 411)
Next

summen = LoadSound("summen.wav")
LoopSound summen
channel2 = PlaySound(summen)

Repeat
WaitTimer(newtime)
Cls
MausX = MouseX()
MausY = MouseY()
If MausX > 573 Then MausX = 573
If MausY > 411 Then MausY = 411

If qualle_time + 300 < MilliSecs() Then
   qualle_time = MilliSecs()
   frame = frame + 1
EndIf

DrawBlock back, 0, 0
DrawImage netz, MausX, MausY

For i = 1 To 10
   DrawImage qualle, quallex(i), qualley(i), frame Mod 4
Next

Flip

Until KeyDown(1)
 

Fredko

BeitragDo, Okt 23, 2008 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du eine Variable erstellst,hat sie den Wert 0, bzw. ""
Nun willst du mehrere Quallen malen, dass heißt mehrere Werte.
Ich seh aber nicht, wo die Quallen XY Position in der Hauptschleife verändert wird, also sind ALLE XY Positionen 0, oder anders, du malst sie 20 mal auf der selben Stelle Wink
!
 

BlackCat

BeitragDo, Okt 23, 2008 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Fredkostudio hat Folgendes geschrieben:
Wenn du eine Variable erstellst,hat sie den Wert 0, bzw. ""
Nun willst du mehrere Quallen malen, dass heißt mehrere Werte.
Ich seh aber nicht, wo die Quallen XY Position in der Hauptschleife verändert wird, also sind ALLE XY Positionen 0, oder anders, du malst sie 20 mal auf der selben Stelle Wink


Verstehe ich nicht ... Ich setze die Koordinaten doch ... (mittels einer Schleife in ein Array)

Code: [AUSKLAPPEN]
For i = 1 To 10
   SeedRnd(MilliSecs())
   quallex(i) = Rand(1, 573)

   SeedRnd(MilliSecs())
   qualley(i) = Rand(1, 411)
Next


jeweils 10 x und y- koordinate einer qualle werden gesetzt, per zufall. somit habe ich dann 10 Quallenpositionen.

In der Main-Loop male ich sie dann durch eine for-schleife:

Code: [AUSKLAPPEN]
For i = 1 To 10
   DrawImage qualle, quallex(i), qualley(i), frame Mod 4
Next



jetzt muesste der bildschirm voller quallen sein .. ist er aber nicht, denn es erscheint immer nur eine .... wo ist der fehler?

Xeres

Moderator

BeitragDo, Okt 23, 2008 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
SeedRnd() nur am Anfang des Codes ausführen! Die winzige Schleife packt dein Rechner in weniger als 1 ms was dazu führt, das der Startwert für die Zufallsberechnung immer gleich ist und daher auch immer die gleiche Zahl liefert.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

BlackCat

BeitragDo, Okt 23, 2008 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab verstanden + es funktioniert jetz
Dankeschoen Very Happy
 

BlackCat

BeitragDo, Okt 23, 2008 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab da ein weiteres Problem und komme einfach nicht weiter ... wenn ich die 10 Zufallskoordinaten erstelle und dann kommt es oefter fuer, dass zwei (oder mehr) Quallen koollidieren ... ich will das aber nicht... wie kann ich das verhindern?

Habs schon mit ImagesCollide versucht aber ich krieg das einfach nicht hin ... Kann mir jemand helfen?

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group