Apuja

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Apuja

Post by demoread »

Noniin, elikkäs koodailen jotain sotapelin tapaista, mutta vihut pitäs ssädä ja ukot, olen kottainut paria neuvvoa kirjoteilla mutta joko ne eivät ole kirjotettu oikeaan kohtaan tai kirjoitin ne vääärin, tai sit ei vaan toimi. Koodini on tässä:

Code: Select all

Text 0,0,"Hello, press enter to start"

DrawScreen

WaitKey

Type AMMUS
    Field obj
End Type


FrameLimit 40 
DrawToWorld ON

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta, 0,0,1

ukko = LoadObject("Media\soldier.bmp",72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF


SetupCollision ukko, kartta, 1, 4, 2

Repeat

   
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2


    If KeyDown(cbKeyRControl) And reload=0 Then   
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
   
        CloneObjectPosition luoti\obj,ukko               
 
        CloneObjectOrientation luoti\obj,ukko
       
        SetupCollision luoti\obj, kartta, 2,4,1
        reload=5       
ResetObjectCollision luoti\obj
    EndIf

    If reload>0 Then reload=reload-1


    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If CountCollisions  (luoti\obj) Or Distance2 (luoti\obj, ukko) > 1000 Then
            DeleteObject luoti\obj
            Delete luoti                                           
        EndIf       
    Next luoti


    UpdateGame
    CloneCameraPosition ukko   
   
    DrawGame
     
    ObjectPick ukko
    e=PickedObject()
   
    DrawGame
   
    If e=kartta Then
        Color cbGreen
        Circle PickedX()-4,PickedY()+4,8,OFF   
   
   EndIf
   
   DrawScreen
   
   
Forever
Saa muokata, tehdä mitä haluaa, mutta kertokaa mihin väliin pitää laittaa ja mitä tekstiä jotta vihut spawnaa ja ukolla on elämät ja vihuilla elämät
Ps, en käytä copy paste menetelmää, koska olisi kiva oppia jotakin
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Apuja

Post by Jonez »

Saadaksesi viholliset peliin: tee tyyppikokoelma nimeltä vihut. Kokoelmassa voi olla mm. kenttä obj, joka säilöö yksittäisen vihuobjektin, kenttä health, sekä reload, joka säilöö vihun reload-tilanteen.

Jos haluat luoda uuden vihollisen, arvo sille koordinaatit väliltä (1, MapWidth()) ja (1, MapHeight()). Tarkasta ainakin nämä asiat, ja jos jokin niistä ei päde, arvo uudet koordinaatit:
1. Onko arvottu koordinaatti edes kartalla (eli ei siellä mustalla alueella): GetMap2()
2. Onko arvottu koordinaatti seinän päällä: Myös GetMap2()
3. Arvotaanko vihu pelaajan näköpiiriin. Distance-funktio.

Tämän jälkeen luo vihollinen (kloonaa se jostain emo-objektista, eli CloneObject()) ja aseta törmäystunnistus, jne. Voit tehdä niin, että vihollien kävelee miten sattuu kunnes näkee pelaajan (Distance2(), ObjectSight()). Kun vastustaja näkee pelaajan, se tähtää sitä (PointObject()) ja ampuu (muista reload).

Pelaajan health menee ihan yksinkertaisella playerHealth-muuttujalla, jota pienennetään aina kun vihollisen ammus osuu (ObjectsOverlap()).

Edit. ja ihan pelattavuuden kannalta: pelistä tulee paljon parempi jos ukko liikkuu ja kääntyy nopeammin.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Post Reply