Spieler Drehen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Sephka

Betreff: Spieler Drehen

BeitragMi, Nov 03, 2010 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich möcht die Bilder des Spielers in einer Array speichern:
Code: [AUSKLAPPEN]
TFormFilter 0

Dim spieler(359)
Global spielerb=LoadImage("P.png")
For winkel%=0 To 359
spieler(winkel%)=RotateImage spielerb,winkel
MaskImage spieler(winkel),255,255,255
Next

Es kommt aber die Fehlermeldung:
Expecting 'Next' hinter dem Rotateimage spielerb
Warum? such schon seit ner Stunde den Fehler....
Mein Freund und Helfer:
Win7 Home Premium SP1
AMD Athlon II X4 645 3.1GHZ
8GB Ram
64bit
 

Freak123

BeitragMi, Nov 03, 2010 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
spieler(winkel%)=RotateImage spielerb,winkel

kann nicht funktionieren.
du möchtest etwas zurückgeben, also musst du ( und ) verwenden.

also:

spieler(winkel%)=RotateImage( spielerb,winkel )

aber ich glaube Rotateimage gibt keinen Wert zurück,
sondern du musst spielerb speichern


also:

spieler(0)=loadimage("...")
For i=1 To 359
spieler(i)=CopyImage(spieler(0))
RotateImage spieler(i), i
Next

ich hoffe das wars.

Xeres

Moderator

BeitragMi, Nov 03, 2010 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Schaut doch in die Online Hilfe...
Arrow RotateImage
Erklärung mit Beispiel.
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)

Raiden93

BeitragMi, Nov 03, 2010 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das mal ausprobiert aber irgendwie schmiert das Programm beim Start ab?
Code: [AUSKLAPPEN]
AppTitle "Rotate"
Graphics 800,600,32,2
SetBuffer BackBuffer()
Global FPS_Timer = CreateTimer(60)
TFormFilter = 0

Global GFX_Hero = LoadImage("GFX/Hero.png")
MaskImage GFX_Hero,255,0,255
SetBuffer ImageBuffer(GFX_Hero)


Global TEMP
Global i

SetBuffer FrontBuffer()
Repeat
   Cls
   
   For i=0 To 359
      TEMP=CopyImage(GFX_Hero)
      RotateImage TEMP,i
      
   Next
   
   Flip 0
   WaitTimer (FPS_Timer)
Until KeyHit(1)

Hubsi

BeitragDo, Nov 04, 2010 0:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Du müllst in der Repeat-Schleife den Grafikspeicher voll das es nur so raucht Mr. Green Schau Dir nochmal das Beispiel in der Hilfe an, dann machts sicher *klick* Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Raiden93

BeitragDo, Nov 04, 2010 6:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm ich habe es mir die Nacht ein par mal angeschaut und rum Experimentiert aber immer das gleiche ... könnte mir jemand mein Beispiel mal richtig machen das ich gucken kann was ich Falsch gemacht habe :/ ?
Code: [AUSKLAPPEN]
AppTitle "Rotate"
Graphics 800,600,32,2
SetBuffer BackBuffer()
Global FPS_Timer = CreateTimer(60)
TFormFilter = 0


Global GFX_Hero = LoadImage("GFX/Hero.png")
MaskImage GFX_Hero,255,0,255



Global Hero_X#
Global Hero_Y#
Global Hero_Speed#

Global Winkel
;<-------------- ROTATE
Dim Hero(359)
For Winkel = 0 To 359
   Hero(Winkel) = LoadImage("GFX/Hero.png")
   RotateImage Hero(Winkel),Winkel
   MaskImage Hero(Winkel),255,0,255
Next
Repeat
   Cls
   DrawImage Hero(Winkel),50,50
   
   Flip 0
   WaitTimer (FPS_Timer)
Until KeyHit(1)

Hubsi

BeitragDo, Nov 04, 2010 8:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein letzter Code würde erstmal funktionieren (wenn auch mit einfachsten Mitteln optimierbar), nur wird er beim DrawImage, bzw. dem Zugriff auf das Array durch DrawImage, abschmieren. Nach dem verlassen der For...Next zum drehen der Bilder hat "Winkel" einen Wert von 360.... Wink Der Rest ist klar? Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Raiden93

BeitragDo, Nov 04, 2010 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok sonst gibt es keine besseren Alternativen für B3d? da die Ladezeiten wirklich hoch sind.

Hubsi

BeitragDo, Nov 04, 2010 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Gäbe es indem man ein Sprite lädt, das Bild als Textur verwendet und das Sprite nach Bedarf dreht. Was aber, mal frei aus der Ferne betrachtet, Deine Programmierkünste im jetzigen Stadium um ein paar Meter überholen würde, denke ich. Ich habs jetzt nicht probiert, aber es könnte schon einen Speedvorteil bringen das Bild nicht stetig neu zu laden, sondern mit CopyImage im Speicher zu vervielfältigen. Ich bin jetzt nicht wirklich ein Hardwarefreak, kann mir aber gut vorstellen das der Grafikspeicher alleine schneller ist als mit Festplatte im Schlepptau.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Xeres

Moderator

BeitragDo, Nov 04, 2010 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
... genau das macht Hectics Draw3D Wink
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)

Raiden93

BeitragDo, Nov 04, 2010 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja mein Rechner ist nicht gerade der Schlechteste ^^.Aber ich werde mich erstmal mit den Copy Sachen beschäftigen, den ich will ja alles etwas bis gut können Wink.

Sephka

BeitragDo, Nov 04, 2010 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
HAAAALLLLLOOOO schon längstens gelöst!!!!
Trotzdem Danke!
Mein Freund und Helfer:
Win7 Home Premium SP1
AMD Athlon II X4 645 3.1GHZ
8GB Ram
64bit

worschtbrot

BeitragDo, Nov 04, 2010 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Raiden93 hat Folgendes geschrieben:
Ok sonst gibt es keine besseren Alternativen für B3d? da die Ladezeiten wirklich hoch sind.


Ich hatte vor einiger Zeit das selbe Problem, welches ich ganz einfach dadurch gelöst habe, dass ich nur jeden dritten, vierten oder fünften Winkel geladen habe. Allein das verkürzt die Ladezeit enorm. Zudem solltest du, wenn du mehrere Bilder in der Form rotieren lassen willst, alles mit nur einer einigen For-Schleife drehen, auch das verkürzt die Ladezeit.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group