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 :D

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:

Code: Select all

panoksia_lippaassa-1
Kun lipas on tyhjä, latausta lisätään paljon esim. näin:

Code: Select all

reload=40
panoksia_lippaassa=20
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