ammusten laskenta
ammusten laskenta
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
tee muuttuja jota kasvatat aina kun ammutaan.Kun se on tarpeeksi suuri niin estät ampumasta heti ja nollaat sen.
Code: Select all
laukaustenMäärä=0
if 'ammutaan niin
laukaustenMäärä+1
endif
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
Re: ammusten laskenta
Määkin oon tuota miettiny ja koodi löytyy alhaalt
Löytyy suoraa cb ohjeesta
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()
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: ammusten laskenta
Tarkoitat varmaan lippaita?
Tällä tavalla saisi aika helposti:
Kun ammutaan reload muutetaan vaikka viiteen:
Sitten lippaasta vähennetään yksi:
Kun lipas on tyhjä, latausta lisätään paljon esim. näin:
Toivottavasti oli apua.
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
Code: Select all
panoksia_lippaassa-1
Code: Select all
reload=40
panoksia_lippaassa=20
CoolBasic henkilökuntaa
Graafikko
Graafikko
Re: ammusten laskenta
Lippaitahan minä tarkoitin ja apuahan noista oli.
-
- Newcomer
- Posts: 25
- Joined: Tue Aug 28, 2007 8:29 pm
Re: ammusten laskenta
miten sit sen sais tähän
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
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
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: ammusten laskenta
nassi-setä wrote:miten sit sen sais tähän
oon yrittäny mut siit ei tullu mitään joko ei tullu patii tai lipas meni miinuksen puolelleCode: 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
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