ATan2 und RotateImage

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

TimBo

Betreff: ATan2 und RotateImage

BeitragDi, Aug 21, 2007 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hy Leute Laughing

ich beschäftigemich seit ca. 6 Wochen mit BlitzBasic, somit bin ich noch NOOB, und schreibe seit dem an einem SpaceShooter. Bis jetzt habe ich mich durch Robs Tut und einer Hilfestellung was types angeht Wink selbst durchgearbeitet.

So nun brauch ich wohl ein 2tes mal Hilfe!

Ich habe KI's die sich von links nach rechts bewegen und das eigene Flugzeug ansteuern, soweit klapp das auch! Nur mein Problem ist, dass ich nicht weiß wie ich es schaffen kann das Bild zum Raumchiff blicken zu lassen, o. es einfach dahin schauen lassen kann, in welche Richtung die ki auch fliegt.

Ich habe von ATan2, sin und cos und RotateImage gehört,nur ich weiß nicht wie ich die Befehle/Formeln einetzten kann.

Google und BlitzBase hat da auch nicht weitergeholfen. Könnt ihr mir Helfen?
Danke schon ma im Vorraus!
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Smily

BeitragDi, Aug 21, 2007 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
führ dir das mal zu gemüte:
Code: [AUSKLAPPEN]
AutoMidHandle 1
Dim img(360)
img(0) = CreateImage(50,25)
SetBuffer ImageBuffer(img(0))
Line 0,0,0,24
Line 0,0,49,12
Line 0,24,49,13

For ri = 1 To 359
   img(ri) = CopyImage(img(0))
   RotateImage img(ri), ri
next

ri = 0
posx# = 400
posy# = 300
Graphics 800,600,16,2

Repeat
   Cls
   ri = (ATan2(mousey()-posy, MouseX()-posx) + 360) Mod 360
   posx = posx + Cos(ri)
   posy = posy + Sin(ri)
   DrawImage img(ri), posx, posy
   flip
Until KeyHit(1)


Ich glaube da müsste alles drin stehen, was du wissen willst.

Gruß,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

TimBo

BeitragDi, Aug 21, 2007 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Smily! Very Happy

bei mir kommt zwar die Fehlermeldung Image does not exist, aber ich habe durch den Code die Prinzipien endlich mal gerafft.

mfg
Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Beatenvoy

BeitragDi, Aug 21, 2007 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
KEIN copy & past betreiben!

ist klar, wenn du das bild net hast, kanner das auch net laden.


Code: [AUSKLAPPEN]

For ri = 1 To 359
   img(ri) = CopyImage(img(0))
   RotateImage img(ri), ri
next

Repeat
   Cls
   ri = (ATan2(mousey()-posy, MouseX()-posx) + 360) Mod 360
   posx = posx + Cos(ri)
   posy = posy + Sin(ri)
   DrawImage img(ri), posx, posy
   flip
Until KeyHit(1)



der Teil ist für dich wichtig....
Wobei ich keine 360 Bilder pro Gegner machen würde, daher setze lieber mal einen Step von 10 somit haste 36 das reicht voll und ganz.

TimBo

BeitragMi, Aug 22, 2007 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey cool für deine schnelle Antwort, aber bei mir bemangelt Blitz immer die Klammern hinter der BildVariablen..wenn ich sie wegmache findet er kein Fehler aber das PRogramm läuft ja dann logischerweise auch nicht. Sad

Weiß jemand was ich nun tun kann?

mfg
Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Silver_Knee

BeitragMi, Aug 22, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst erst die variable dimmen:
Code: [AUSKLAPPEN]
Dim img(360)


und die grundimage musst du in img(0) abspeichern da diese immer kopiert und danach gedreht wird
 

Beatenvoy

BeitragMi, Aug 22, 2007 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
jow bzw mit Step 10 dann

Code: [AUSKLAPPEN]
DIM img(36)

TimBo

BeitragMi, Aug 22, 2007 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
thx für die antwort ihr seit echt Spitze Very Happy

mh .. aba das habe ich schon gemacht aba es ging nicht, ich werde es trotzdem nochmal probieren!

EDIT:

So das is mien zusammengebastel, vll findet ihr ja den Fehler

Code: [AUSKLAPPEN]
Dim img(36)
ri=1

img(0) = CreateImage(50,25)
SetBuffer ImageBuffer(img(0))
Line 0,0,0,24
Line 0,0,49,12
Line 0,24,49,13


For ri = 1 To 36
img(ri) = CopyImage(img(0))
RotateImage img(ri), ri
next

Graphics 800,600,24,2
Repeat
ri = (ATan2(MouseY()-posy, MouseX()-posx) + 360) Mod 360
posx = posx + Cos(ri)
posy = posy + Sin(ri)
DrawImage img(ri), posx, posy
Flip:Cls
Until KeyHit(1)


Jetzt kommt aber immer der Fehler "Arry Index Out Of Bounds" oder wieder "image does not exist"
häää?? ich verstehe das nicht ich hab doch mit dim einen arry gemacht?!

mfg
Core 2 Duo
 

Dreamora

BeitragMi, Aug 22, 2007 23:59
Antworten mit Zitat
Benutzer-Profile anzeigen
jo weil du von 0 bis 359 erzeugst, was nicht sein kann. du musst ri noch durch 10 teilen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TimBo

BeitragDo, Aug 23, 2007 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
du meinst bei mod 360 bei atan2? also da habe ich jetz 35 eingesetzt kommt immer noch "Image does not exist" Sad

mfg
Core 2 Duo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Silver_Knee

BeitragDo, Aug 23, 2007 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
nee nee die ganze variable ri ist 10 mal so groß wie sie sein sollte da sie von 0-359 geht und dein Array nur von 0-36 damit da die richtigen zahlen rauskommen musst du diese ewig lange zeile in klammern setzten und /10 hintendranne schreiben.
dann kommt bei 10 grad 1 raus bei 20 grad 2 und so weiter

entsprechend musst du oben wenn du die bilder drehst noch den winkel mal 10 nehmen
Code: [AUSKLAPPEN]
RotateImage img(ri), ri *10

sodass img(1) um 10 grad gredreht ist img(2) um 20 usw.

TimBo

BeitragDo, Aug 23, 2007 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
soo ich habe es dann doch via PM mit Silver_Knee gelöst!

Danke euch allen!

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



Dim img(360)

img(0) = CreateImage(50,25)
SetBuffer ImageBuffer(img(0))
Line 0,0,0,24
Line 0,0,49,12
Line 0,24,49,13
SetBuffer BackBuffer()


MidHandle img(0)
For ri = 1 To 360
img(ri) = CopyImage(img(0))
RotateImage img(ri), ri
Next

Repeat
ri = (ATan2(MouseY()-posy, MouseX()-posx) + 360) Mod 360
posx = posx + Cos(ri)
posy = posy + Sin(ri)
DrawImage img(ri), posx, posy, 0
Flip:Cls
Until KeyHit(1)
Very Happy


mfg
Core 2 Duo[/code]
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Beatenvoy

BeitragDo, Aug 23, 2007 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
teils besser noch durch 10 wie es Dreamora und ich schon sagten:

Code: [AUSKLAPPEN]
DIM img(36)
...


For ri = 1 To 360 Step 10
    bild = ri /10
    img(bild) = CopyImage(img(0))
    RotateImage img(bild), ri
Next


Habs jetzt net getestet aber müsste so gehen, ist schneller und verbraucht weniger speicher

Die Var "bild" hab ich nur fürs verständnis gemacht, kannst auch direkt umrechen
  • Zuletzt bearbeitet von Beatenvoy am Do, Aug 23, 2007 23:15, insgesamt einmal bearbeitet

Eingeproggt

BeitragDo, Aug 23, 2007 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ausn Bauch heraus würd ich sagen, dass man
Code: [AUSKLAPPEN]
RotateImage img(bild), ri

machen müsste.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

TimBo

BeitragDo, Aug 23, 2007 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
jo ich denke auch das 360° spätestens bei 2 verschiedenen bildern mit ImagesCollide das Programm sehr abbremst Wink
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Beatenvoy

BeitragDo, Aug 23, 2007 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
jow ist auch so Wink

ach und danke Eingeproggt, du hast natürlich recht, habs geändert

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group