ammusten laskenta

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
aapeli
Newcomer
Posts: 9
Joined: Sun Sep 16, 2007 4:29 pm

ammusten laskenta

Post by aapeli » Mon Sep 17, 2007 6:12 pm

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.

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: ammusten laskenta

Post by TheFish » Mon Sep 17, 2007 9:20 pm

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.
CoolBasic henkilökuntaa
Kehittäjä

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: ammusten laskenta

Post by MaGetzUb » Tue Sep 18, 2007 1:32 pm

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
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: ammusten laskenta

Post by Pate5 » Tue Sep 18, 2007 5:23 pm

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. ;)
CoolBasic henkilökuntaa
Graafikko

aapeli
Newcomer
Posts: 9
Joined: Sun Sep 16, 2007 4:29 pm

Re: ammusten laskenta

Post by aapeli » Wed Sep 19, 2007 3:52 pm

Lippaitahan minä tarkoitin ja apuahan noista oli.

nassi-setä
Newcomer
Posts: 25
Joined: Tue Aug 28, 2007 8:29 pm

Re: ammusten laskenta

Post by nassi-setä » Fri Sep 21, 2007 11:12 pm

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

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: ammusten laskenta

Post by koodaaja » Sun Sep 23, 2007 8:00 pm

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  

Post Reply