Page 1 of 1
ammusten laskenta
Posted: Mon Sep 17, 2007 6:12 pm
by aapeli
joo eli miten saisi toteutettua ammusten laskennnan. Siis tarkemmin: kun ukko ampuu tietyn määrän ammuksia niin joutuu odottamaaan tietyn ajan että ase "latautuu" ja ampuminen on taas mahdollista. Haulla ei löytynyt paljon mitään.
Re: ammusten laskenta
Posted: Mon Sep 17, 2007 9:20 pm
by TheFish
tee muuttuja jota kasvatat aina kun ammutaan.
Code: Select all
laukaustenMäärä=0
if 'ammutaan niin
laukaustenMäärä+1
endif
Kun se on tarpeeksi suuri niin estät ampumasta heti ja nollaat sen.
Re: ammusten laskenta
Posted: Tue Sep 18, 2007 1:32 pm
by MaGetzUb
Määkin oon tuota miettiny ja koodi löytyy alhaalt
Code: Select all
Type BULLETS
Field obj
End Type
'- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
'MAIN PROGRAM
'- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
FrameLimit 40
'load the soldier, turning detail 72
guy=LoadObject("Media\soldier.bmp",72)
'load the bullet (master-object) and hide it
bullet=LoadObject("Media\bullet.bmp")
ShowObject bullet,OFF
ClsColor cbdark
AddText "Arrows to turn, SPACE to shoot"
'MAIN LOOP
Repeat
'Update turning
If LeftKey() Then TurnObject guy,5
If RightKey() Then TurnObject guy, -5
'Shoot?
If KeyDown(cbkeyspace) And reload=0
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(bullet)
CloneObjectPosition newBullet\obj,guy
CloneObjectOrientation newBullet\obj,guy
'put the bullet at the end of the barrel
MoveObject newBullet\obj,24
reload=4
EndIf
'Update all BULLETS (move them forward)
i=0
For iBullet.BULLETS= Each BULLETS
MoveObject iBullet\obj,6 'speed=6
'delete bullet from collection if it
'gets too far away
If Distance2(iBullet\obj,guy)>200 Then
DeleteObject iBullet\obj
Delete iBullet
EndIf
i=i+1
Next iBullet
'Update reloading
If reload>0 Then reload=reload-1
Text 30,30,"Bulets to update: "+i
'Don't forget this :)
DrawScreen
Until EscapeKey()
Löytyy suoraa cb ohjeesta
Re: ammusten laskenta
Posted: Tue Sep 18, 2007 5:23 pm
by Pate5
Tarkoitat varmaan lippaita?
Tällä tavalla saisi aika helposti:
Kun ammutaan reload muutetaan vaikka viiteen:
Code: Select all
//Ampuminen tässä. Vain jos reload=0 ja panoksia_lippaassa>0
reload=5
Sitten lippaasta vähennetään yksi:
Kun lipas on tyhjä, latausta lisätään paljon esim. näin:
Toivottavasti oli apua.
Re: ammusten laskenta
Posted: Wed Sep 19, 2007 3:52 pm
by aapeli
Lippaitahan minä tarkoitin ja apuahan noista oli.
Re: ammusten laskenta
Posted: Fri Sep 21, 2007 11:12 pm
by nassi-setä
miten sit sen sais tähän
Code: Select all
If MouseDown(1) And reload=0 Then
PlaySound ammu
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,ase
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,ase
EndIf
'päivitä aseen lataaminen
If reload=>0 Then reload=reload-1
'Päivitä kaikki ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,20
If Distance2(luoti\obj,ase)>200 Then
DeleteObject luoti\obj
Delete luoti
ElseIf ObjectsOverlap(luoti\obj,vihu,3) then
elu=elu-+damage
PlaySound osuma,50
EndIf
Next luoti
oon yrittäny mut siit ei tullu mitään joko ei tullu patii tai lipas meni miinuksen puolelle
Re: ammusten laskenta
Posted: Sun Sep 23, 2007 8:00 pm
by koodaaja
nassi-setä wrote:miten sit sen sais tähän
Code: Select all
If MouseDown(1) And reload=0 Then
PlaySound ammu
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,ase
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,ase
EndIf
'päivitä aseen lataaminen
If reload=>0 Then reload=reload-1
'Päivitä kaikki ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,20
If Distance2(luoti\obj,ase)>200 Then
DeleteObject luoti\obj
Delete luoti
ElseIf ObjectsOverlap(luoti\obj,vihu,3) then
elu=elu-+damage
PlaySound osuma,50
EndIf
Next luoti
oon yrittäny mut siit ei tullu mitään joko ei tullu patii tai lipas meni miinuksen puolelle
Code: Select all
If MouseDown(1) And reload=0 Then
PlaySound ammu
luoti.AMMUS = New(AMMUS) 'luo uusi ammus
luoti\obj=CloneObject(pati) 'tee klooni
'asetetaan pati samaan paikkaan
CloneObjectPosition luoti\obj,ase
'käännetään pati samaan suuntaan
CloneObjectOrientation luoti\obj,ase
reload = 5
panokset = panokset - 1
if panokset=0 then panokset = 5: reload = 50
EndIf
'päivitä aseen lataaminen
If reload=>0 Then reload=reload-1
'Päivitä kaikki ammukset
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,20
If Distance2(luoti\obj,ase)>200 Then
DeleteObject luoti\obj
Delete luoti
ElseIf ObjectsOverlap(luoti\obj,vihu,3) then
elu=elu-+damage
PlaySound osuma,50
EndIf
Next luoti