Kuva liikkumaan suunnasta riippuvaisesti

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Kuva liikkumaan suunnasta riippuvaisesti

Post by Sepi »

Kysymykseni siis kuuluu kuinka saada kuva liikkumaan suunnasta riippuvaisesti. Eli samaan tapaan kuin moveobject-komento objekteilla. Kysyn tätä siksi että BlitzPlussassa ei (tietääkseni) ole valmista komentoa kyseiseen tarkoitukseen, mutta jos joku viitsisi valaista asiaa vaikka coolbasic-koodilla niin hyvä olisi :)
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Kuva liikkumaan suunnasta riippuvaisesti

Post by KilledWhale »

Yksinkertaisella trigonometrialla liikutus hoituu. Tässä nyt pieni esimerkki.

Code: Select all

img = LoadImage("Media\guy.bmp")

Dim rot(360)
For i = 0 To 360 // Pyöritellään kuvat valmiiksi koska lennosta operaatio ON liian hidas
	rot(i) = CloneImage(img)
	RotateImage rot(i), -i // Pyörittäessä cb siirtää automaagisesti kontrollin kuvan keskelle. Blitz saattaa vaatia AutoMidHandle tai Handleimage
Next i

angle# = 0.0
x# = 100.0
y# = 200.0

Repeat
	angle# = wrapangle(angle + (LeftKey() - RightKey()) * 2) // Kääntäminen
	x# = x# + Cos(angle) * UpKey() * 2 // Liikutaan vaakatasossa
	y# = y# - Sin(angle) * UpKey() * 2 // Liikutaan pystytasossa
	DrawImage rot(int(angle)), x, y // Piirretään kuva
	DrawScreen
Forever
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Sepi
Member
Posts: 84
Joined: Thu Jun 05, 2008 1:38 pm

Re: Kuva liikkumaan suunnasta riippuvaisesti

Post by Sepi »

Osaako joku sanoa mikä tai mitkä tässä mättää?

Code: Select all

Graphics 640,480

Global Asteita=360

Dim Framet(Asteita)

AutoMidHandle True

Global Kuva = LoadImage("player.bmp")
Global x#=100
Global y#=200

For i = 0 To Asteita-1
	Framet(i)=CopyImage(Kuva)
	RotateImage Framet(i),i*360/Asteita

Next

Global angle#=0

Repeat

Cls

Text 0,0,angle#

If KeyDown(203) Then LeftKey=1 Else LeftKey=False
If KeyDown(205) Then RightKey=1 Else RightKey=False
If KeyDown(200) Then UpKey=1 Else UpKey=False

   angle# = angle + (RightKey-LeftKey) * 2
   x# = x# + Cos(angle) * UpKey * 2 
   y# = y# - Sin(angle) * UpKey * 2 
   DrawImage Framet(Int(angle)), x, y

Flip

Until KeyHit(1)

E: Laitoin tuohon Code-tageihin uusimman yritykseni joka on aikalailla suora käännös tuosta sinun cb-koodistasi, mutta kusee aina vaan. Mikähän on vikana?

E2: No nyt vörkkii, kun laitoin tuon Sinin eteen plussan miinuksen sijaan.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Kuva liikkumaan suunnasta riippuvaisesti

Post by MaGetzUb »

Testaas tätä:

Code: Select all

Graphics 640,480

Global Asteita=360

Dim Framet(Asteita)

AutoMidHandle True

Global Kuva = LoadImage("player.bmp")
Global x#=100
Global y#=200

For i = 0 To Asteita-1
   Framet(i)=CopyImage(Kuva)
   RotateImage Framet(i),i*360/Asteita

Next

Global angle#=0

Repeat

Cls

Text 0,0,angle#

If KeyDown(203) Then LeftKey=1 Else LeftKey=False
If KeyDown(205) Then RightKey=1 Else RightKey=False
If KeyDown(200) Then UpKey=1 Else UpKey=False

   angle# = angle + (RightKey-LeftKey) * 2
	If Angle# < 1 Then Angle = 359
	If Angle# > 359 Then Angle = 0
   x# = x# + Cos(angle) * UpKey * 2 
   y# = y# + Sin(angle) * UpKey * 2 
   DrawImage Framet(Int(angle)), x, y

Flip

Until KeyHit(1)
En kyllä bb:tä osaa koodata, mutta CoolBasicn peusteella tämä oli kakun pala. :D
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Post Reply