Ampuminen MAVittaa

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
FuJi
Member
Posts: 70
Joined: Tue Aug 28, 2007 3:09 pm

Ampuminen MAVittaa

Post by FuJi » Fri Sep 21, 2007 9:32 pm

Tein pienen pelinalun, jossa täytyy ampua vihollisia ja kun meinaa ampua tulee MAV.

Tässä sen koodi:

Code: Select all

// Vihut
Type VIHUT
    Field obj
End Type

// Ammukset
Type AMMUS
    Field obj
End Type 

SCREEN 800,600
FrameLimit 40

// Ladataan ukko-objekti
ukko = LoadObject("media/soldier.bmp",72)

// Ladataan ammusobjekti
pati = LoadObject("media\bullet.bmp")
ShowObject pati, OFF 

// Ladataan vihu ja piilotetaan se
vihuobj = LoadObject("media/guy.bmp",72)
ShowObject vihuobj, OFF

// Luodaan uusi vihu
vihu.VIHUT = New (VIHUT)
vihu\obj = CloneObject (vihuobj)
vihu_elossa = 1
       
// Asetetaan vihu randomisto jonnekkin
ScreenPositionObject vihu\obj, Rand(ScreenHeight()), Rand(ScreenWidth())
CloneObjectOrientation vihu\obj, ukko
TranslateObject vihu\obj, 50, 50

// Pääluuppi
Repeat
    
    // pelihahmon ohjaus
    TurnObject ukko, ( KeyDown(cbKeyA) - KeyDown(cbKeyD))*4
    MoveObject ukko,( KeyDown(cbKeyW) - KeyDown(cbKeyS) )*3
       
    // Käydään kaikki vihut läpi
    For vihu.VIHUT = Each VIHUT
        PointObject vihu\obj, ukko
        MoveObject vihu\obj, 2
        
        // Jos vihu_elossa = 0 luodaan uusi vihu ja asetetaan se randomisti näytölle
        If vihu_elossa = 0 Then 
            vihu.VIHUT = New (VIHUT)
            vihu\obj = CloneObject (vihuobj)
            PositionObject vihu\obj, Rand(ScreenHeight()), Rand(ScreenWidth())
            // Uutta vihollista ei luoda ennen kuin vanha on tapettu
            vihu_elossa = 1
        EndIf 
    Next vihu
    
    // Ampumis-sydeemi
    If KeyDown(cbKeyRControl) Then    
        luoti.AMMUS = New(AMMUS) //luo uusi ammus
        luoti\obj=CloneObject(pati) //tee klooni
        //asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,ukko                
        //käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,ukko                    
    EndIf

    //Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If ObjectsOverlap(vihu\obj, luoti\obj, 2) Then // Jos ammus osuu vihuun tuhotaan ammus    
            DeleteObject luoti\obj //poista objekti
            Delete luoti //poista luoti kokonaan
        EndIf        
    Next luoti
      
       
    DrawScreen
Forever
Ja sitten kun luoti ja vihu törmäävät pitäisi ammus sekä vihu tuhota, mutta sitä en ole saanut toimimaan, joten ehkä joku vähän taitavampi voisi kertoa miten tällaisen saisi tehtyä?

User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Ampuminen MAVittaa

Post by KillBurn » Mon Sep 24, 2007 9:54 pm

Siirrä next vihu-> next luodin alle, se ainakin toimii ilman MAVia
Sumu Games: Sam, Ur eye!

Post Reply