Rotateimage problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

sili95

Betreff: Rotateimage problem

BeitragSa, Jul 18, 2009 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ich möchte ein bild drehen wenn man die Taste drückt aber das bild verschwimmt und das programm wird immer langsamer. hier mein Code

Graphics 640,480
SetBuffer BackBuffer()
Global ground = LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\land.bmp")
Global pfosten=LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\Unbenannt.bmp")
Global auto= LoadImage ("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\auto.bmp")
tempo=2
x=100
y=100

Repeat
Cls
DrawImage ground ,1,0,0
DrawImage pfosten,180,100,0
DrawImage pfosten,190,150,0
MidHandle auto


DrawImage auto,x,y
If KeyDown(203) Then x=x-tempo
If KeyDown(205) Then x=x+tempo
If KeyDown (200) Then y=y-tempo
If KeyDown (208) Then y=y+tempo
If ImagesCollide (auto,x,y,0,pfosten,180,100,0) Then print "bumm
If ImagesCollide (auto,x,y,0,pfosten,190,150,0) Then Print "crash!!"
If KeyDown(203) Then RotateImage auto,25
Flip
Until KeyDown(1)

ich hoffe auf eine gute ant. Very Happy

Nicdel

BeitragSa, Jul 18, 2009 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutze bitte Codeboxen: [code.][/code.] (Ohne die Punkte hinter code).
Zu deinem Problem: RotateImage ist sehr langsam. Es sollte nicht in der Hauptschleife verwendet werden. Hier ist ein Tutorial für sowas: http://home.arcor.de/inpac/tut1.htm.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

sili95

BeitragSa, Jul 18, 2009 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
was meinst du mit Codeboxen ich weiss nicht was das ist. Embarassed

und dieses toturial. bei dem ist die steuerung irgendwie sehr komisch es fährt immer irgendwohin.man hat gar kein richtiges handling

gruss sili Shocked

ComNik

BeitragSa, Jul 18, 2009 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses Problem hatten wir schon öfters^^
Also:
Du musst ein Array erstellen und in jedes Element eine Kopie des Bildes speichern. Diese Kopie wird aber immer ein Stück gedreht. (36 Elemente reichen vollkommen aus!) Dann errechnest du mit hilfe von atan2 den winkel.
Such mal einfach im Forum.

Die Codeboxen stehen über deinem Textfeld. Unter den ganzen Smilys.
So sehen sie aus:
Code: [AUSKLAPPEN]

          print("Hello World!")
          ;code
          ;code
       


mfg ComNik
WIP: Vorx.Engine

Nicdel

BeitragSa, Jul 18, 2009 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Tutorial zeigt, wie man das Auto schon vor der Schleife dreht und in ihr benutzt. Codeboxen kannst du machen indem du oben unter den Smilys auf "Code" drückst.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

sili95

BeitragSa, Jul 18, 2009 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ok das habe ich jetzt einigermasen verstanden aber jetzt dreht das Auto um eine bildecke und es fähr seitlich und wuselt irgendwo rum (diese steuerung könnte man benutzen wemm man durch eine Ölpfütze fährt Wink ) wie macht man denn ,dass mann immer mit dem vorderteil voraus fährt und um die mitte dreht?? (mit midhandle oder so vielleich?)

DaysShadow

BeitragSa, Jul 18, 2009 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Du nimmst deine x-variable mit einem Vielfachen von Cosinus deines aktuellen Winkels.
Für y das gleiche nur mit Sinus

also:
Code: [AUSKLAPPEN]
x = x + 100 * Cos(angle - 90)
y = y + 100 * Sin(angle - 90)


wobei die 100 auch durch eine Variable "speed" ersetzt werden könnte Wink

MfG DaysShadow

sili95

BeitragSa, Jul 18, 2009 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ok vielen dank das funkzt. aber könne irgeindeiner mir noch sagen wie den drehpunkt des autos in die mitte des bildes setzten kann, denn jetzt dreht es einfach an der Ecke. ich habe gemeint man muss irgendetwas mit midhandle machen aber ich weiss nicht recht wie das geht. Very Happy
gruss sil

Chrise

BeitragSa, Jul 18, 2009 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
HandleImage
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

sili95

BeitragSa, Jul 18, 2009 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funkzt irgendwie nicht recht und mit dieser Steuerung ist die kollision sehr ungenau geworden.
Code: [AUSKLAPPEN]
Graphics 640,480,16,1
SetBuffer BackBuffer()
Global ground = LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\land.bmp")
Global pfosten=LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\Unbenannt.bmp")
Global auto= LoadImage ("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\auto.bmp")

 tempo=2
x=100
y=100

;--------------------
Dim Auto3 (359)
TFormFilter =0
For winkel = 0 To 359
Auto3(winkel)=LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\auto.bmp")
RotateImage Auto3(winkel),winkel
MaskImage Auto3(winkel),0,0,0
Next



While Not KeyHit(1)     

Cls


If KeyDown(203) Then winkel= winkel -1     

If KeyDown(205) Then winkel= winkel +1

If winkel > 359 Then winkel = 0

If winkel < 0 Then winkel = 359


If KeyDown(200) Then

x = x + tempo * Cos(winkel - 90)
y = y + tempo * Sin(winkel - 90)

EndIf


DrawImage ground ,1,0,0
DrawImage pfosten,180,100,0
DrawImage pfosten,190,150,0


DrawImage Auto3(winkel),x,y

If ImagesCollide (auto,x,y,0,pfosten,180,100,0) Then Print"warumm"
If ImagesCollide (auto,x,y,0,pfosten,190,150,0) Then Print "warerdfsfdgfsgfwwsw"

Flip
Wend
End


dass kann doch nicht so schwer sein Mad

Xeres

Moderator

BeitragSa, Jul 18, 2009 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Vorzeichen beim Sinus sollte korrekterweise Negativ sein:
Code: [AUSKLAPPEN]
x = x + 100 * Cos(angle - 90)
y = y - 100 * Sin(angle - 90)

Ansonsten würde ich Midhandle oder AutoMidHandle verwenden.
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)

sili95

BeitragSa, Jul 18, 2009 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
also das mit midhandle ist kapiert aber wenn ich bei Sinus ein minus hinsetzte dann ist die steuerung wieder Krüppel und die kollision ungenau um fast einen halben cm also mit dem +beim Sinus läufts viiiiel besser aber wieso kollidiert es nicht mehr richtig?

Xeres

Moderator

BeitragSa, Jul 18, 2009 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Das passende Bild zum Winkel ist in Auto3(Winkel), das zeichnest du auch. Auf Kollision prüfst du mit dem Bild auto...
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)

sili95

BeitragSo, Jul 19, 2009 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach ok hab alles verstand vielen Dank für die vielen guten Tipps Very Happy Very Happy Wink Cool Cool Cool Cool Smile Very Happy Very Happy Very Happy Laughing

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group