Page 1 of 1

Viholliset sotapeliin

Posted: Tue Mar 08, 2011 5:11 pm
by demoread
Elikkäs, alan tulla siihen vaiheeseen että pitäisi lisätä vihut sotapeliin. Tämä on ensimmäinen pelini, joten tästä ei tuu mitään sen suurempaa, eli tämä on harjoite. Eli miten saan viholliset lisääntymään kartaan automaattisesti, ja miten ne saa hyökkäämään minun kimppuuni, ja jos niiden koulemisen voisi selventää nopeasti.

Ps. en käytä copy pastea.

Re: Viholliset sotapeliin

Posted: Tue Mar 08, 2011 6:02 pm
by Peltsi
Tervetuloa foorumille!
Tässä on kimppuunhyökkäysohje:

Code: Select all

... 'pelin muu koodi
PointObject vihollinen,pelaaja 'suunnataan vihollinen pelaajaan
                
If ObjectSight(vihollinen,pelaaja) Then 'jos vihollinen näkee pelaajan niin...
    MoveObject vihollinen,3 '...liikuta vihollista
    If ObjectsOverlap (vihollinen,pelaaja) Then 'esimerkiksi tässä vihollinen osuu pelaajaan ja pelaaja menettää elämää
   *pelaajan elämä miinus 1* 'tee koodi jossa pelaajan elämästä vähennetään. esim. elämä = elämä - 1
    EndIf
EndIf

... 'pelin muu koodi
Kannattaa jatkossa postata pikkukysymykset "Tyhmät kysymykset" topiciin ;)

PS: Toivottavasti koodi toimii ja oli avuksi! :-D

Re: Viholliset sotapeliin

Posted: Tue Mar 08, 2011 6:06 pm
by TukeKoodi
Jos todella et kaytä CopyPastea, voisin mielelläni auttaa. Ensinnäkin, kuinka suuri pelisi tulee olemaan? Aloittelijan ei kannata aloittaa sotapelistä, mutta aina voi kokeilla. Toiseksi, kuinka paljon projektista on valmiina? Jos valmiina on jo esim. osa grafiikoista ja pelimoottori(ntynkä), voisin mielelläni autella, jotta saisit jotain valmiiksi. Sitten asiaan, ettei tule liian offi. Viholliset lisätään typeillä, joka on tavallaan "ryhmä" asioita (esim. objekteja). Näin helppoa se on:

Code: Select all

Type VIHUT //Luo vihuille tyyppi
Field obj //Tavallaan "alusta" jolle vihu määritellään
End Type //Tai EndType, poistutaan typestä
Tuo koodin alkuun, vaikka Framelimitin ja SCREEN:in jälkeen ;). Sen jälkeen lataa masterobjekti (objekti josta kaikki viholliset kloonataan):

Code: Select all

masterVihu = LoadObject("Media\soldier.bmp", 180)
Kun repeatin sisällä haluat tehdä vihun, niin tee se samaan tapaan kuin oppitunti 18, Ammukset 2:

Code: Select all

vihu.VIHUT = New (VIHUT)//Luodaan uusi jäsen
vihu\obj = CloneObject (masterVihu)//Kloonataan vihu masterVihu -objektista
PositionObject vihu\obj, Rand(-200,200), Rand(-200,200)//Laitetaan vihu random paikkaan
Tarkista vihut:

Code: Select all

For vihu.VIHUT = Each VIHUT
MoveObject vihu\obj, 2
PointObject vihu\obj, (sinun pelaajasi)
Next vihu
Tuota on siis typet, kannattaa opetella oppitunti 18 ulkoa. Jos tarviit apua, lähetä minulle yksityisviesti.
Niin, ja tervetuloa foorumeille!

Re: Viholliset sotapeliin

Posted: Tue Mar 08, 2011 6:07 pm
by TukeKoodi
Peltsi wrote:Tervetuloa foorumille!
Tässä on kimppuunhyökkäysohje:

Code: Select all

... 'pelin muu koodi
PointObject vihollinen,pelaaja 'suunnataan vihollinen pelaajaan
                
If ObjectSight(vihollinen,pelaaja) Then 'jos vihollinen näkee pelaajan niin...
    MoveObject vihollinen,3 '...liikuta vihollista
    If ObjectsOverlap (vihollinen,pelaaja) Then 'esimerkiksi tässä vihollinen osuu pelaajaan ja pelaaja menettää elämää
   *pelaajan elämä miinus 1* 'tee koodi jossa pelaajan elämästä vähennetään. esim. elämä = elämä - 1
    EndIf
EndIf

... 'pelin muu koodi
Kannattaa jatkossa postata pikkukysymykset "Tyhmät kysymykset" topiciin ;)

PS: Toivottavasti koodi toimii ja oli avuksi! :-D
Peltsi, tässä kysyttiin, kuinka vihut saa LISÄÄNTYMÄÄN kartalle automaattisesti ;)

Re: Viholliset sotapeliin

Posted: Tue Mar 08, 2011 6:11 pm
by ukkeli
Tuossa minun Versioni vihu spawnista, pointobjectista ja muusta.

Code: Select all

'Vihu engine. copyright to Ukkeli. Ei saa copy-pastea ilman tätä! 

'luo uuden tyypin
Type vihut
Field obj
End Type

ukko=LoadObject("media\guy.bmp", 360)
vihu=LoadObject("media\soldier.bmp", 360)

ShowObject vihu, OFF 

Repeat 

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

'Aika
If Timer() - aik> 3000
'Päivitetään se
  aik=Timer()
'Uusi vihu kansioon :D.
    vih.vihut = New(vihut)
'Copsataan vihu objecti.
    vih\obj=CloneObject(vihu)
'asetetaan kartalle
    PositionObject vih\obj,Rand(150,-150),Rand(200,-200)  
'lopeta lauseke
End If 

'Vihut läpikäydään! 
For vih.vihut = Each vihut
'Liikuta pahista.
 MoveObject vih\obj, 2
'Osoita tämä objecti pelaajaan.
 PointObject vih\obj, ukko
'Seuraava
Next vih 

DrawScreen 

Forever 
Toivottavati auttoi...

Re: Viholliset sotapeliin

Posted: Tue Mar 08, 2011 6:17 pm
by Peltsi
TukeKoodi wrote:
Peltsi wrote:Tervetuloa foorumille!
Tässä on kimppuunhyökkäysohje:

Code: Select all

... 'pelin muu koodi
PointObject vihollinen,pelaaja 'suunnataan vihollinen pelaajaan
                
If ObjectSight(vihollinen,pelaaja) Then 'jos vihollinen näkee pelaajan niin...
    MoveObject vihollinen,3 '...liikuta vihollista
    If ObjectsOverlap (vihollinen,pelaaja) Then 'esimerkiksi tässä vihollinen osuu pelaajaan ja pelaaja menettää elämää
   *pelaajan elämä miinus 1* 'tee koodi jossa pelaajan elämästä vähennetään. esim. elämä = elämä - 1
    EndIf
EndIf

... 'pelin muu koodi
Kannattaa jatkossa postata pikkukysymykset "Tyhmät kysymykset" topiciin ;)

PS: Toivottavasti koodi toimii ja oli avuksi! :-D
Peltsi, tässä kysyttiin, kuinka vihut saa LISÄÄNTYMÄÄN kartalle automaattisesti ;)
No kysyttiin myös miten ne saadaan hyökkäämään automaattisesti... ;)

Re: Viholliset sotapeliin

Posted: Wed Mar 09, 2011 8:06 pm
by demoread
Joo, enkäytä copy pastea, koska haluan oppia jotain, ja sotapeliäni on grafiikat valmiina, mutta vihut, ja muita pikkuseikkoja, jotka onnistun itse tekemään, ja joku tarjosi yhteistyötä, mutta tämän pelin tahtoisin tehdä itse, mutta sitten seuraavat projektit on eri asia, ja kiitos kaikille, tässä taisi olla kaikki mitä tarvitsin, jos löydätte jotain mitä kannataa lisätä niin kertokaa ihmees. Täälä ei taida hirveemmin olla ketään valittajaa joka on huutamassa että sinne jä tänne nää asiat, ja käytä hakua. Mutta viellä kerran kiitos.

Re: Viholliset sotapeliin

Posted: Wed Mar 09, 2011 9:26 pm
by TukeKoodi
Joo, täällä porukka on keskivertoa järkevämpää. Tällä on noloa laittaa viesti: "Google on keksitty" -tyyliin. Aina löytyy apua. Mutta tosiaa jos törmäät johonkin niin voisin autella, aloittelijoilla kun tuppaa projut äkkiä jäätymään. Voin kyllä kirjoittaa koodia jos haluut.

Re: Viholliset sotapeliin

Posted: Wed Mar 09, 2011 10:28 pm
by esa94
TukeKoodi wrote:Tällä on noloa laittaa viesti: "Google on keksitty" -tyyliin.
Jaa.

Itse ainakin olen nähnyt sitä käytettävän aina tarpeen vaatiessa.

Havaitsemasi ilmiö lienee siinä, että tämä on ainoa resurssi, josta löytyy apua CB:n kanssa.

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 4:35 pm
by demoread
Jatkan nyt vähän tätä ketjua, että äsken huomasin yhden ongelman pelissäni, ukko ampuu seinien läpi, en ollut josatin syystä huomannut moista asiaa, mutta nyt pisti silmään, niin miteäs tähän voip autaa, kokeilin jo paria muuta yritystä, joita sovelsiun mutta eivät toimineet

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 4:38 pm
by TukeKoodi
Laitahan koodia niin koitan ratkoa...

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 4:51 pm
by demoread
Joo, Nyt menee tää homma ihan rakoon, korjaile sitten jonkun verran sitä, muuten tässä menis ainakin pien hetki jos rupeisin ite ratkoon tätä, ja voi olla vähän sekava kun en älynny laittaaa mitä mikäkin kooodi tekee. Olen myös ottanut maillia oppitunneista, esim poiminta, mutta en käytä copy pastea

Code: Select all

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

DrawScreen

WaitKey

Type AMMUS
    Field obj
End Type 


FrameLimit 40  
DrawToWorld ON 



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            
        reload=5       
    EndIf
 
    If reload>0 Then reload=reload-1


    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If ObjectX(luoti\obj)<-180 Or ObjectX(luoti\obj)>180 Or ObjectY(luoti\obj)<-130 Or ObjectY(luoti\obj)>130 Then
                                             
        EndIf        
    Next luoti


    UpdateGame
    CloneCameraPosition ukko    
    
    DrawGame 
     
    ObjectPick ukko
    e=PickedObject()
    
    
   
    If e=kartta Then
        Color cbGreen
        Circle PickedX()-4,PickedY()+4,8,OFF    
   
   EndIf
   
   DrawScreen
   
   
Forever

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 5:27 pm
by TukeKoodi
1) Sinulla oli väärä törmäystarkistus luodin ja kartan välissä, jonka takia luoti ei näkynyt. Korjattu.
2) Lisäsin luotien tarkistukseen komennoilla CountCollisions ja Distance2, tarkistuksen luodeille. Jos luodin ja pelaaja välimatka on yli 1000 pikseliä tai luoti törmää johonkin, se poistetaan. Jos ammuksia ei poisteta, peli alkaa hidastumaan kun ohjelma joutuu käsittelemään tuhansia objekteja kerrallaan (kuten varmaan arvasit)
3) Koodi:

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

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 7:32 pm
by demoread
Kiitos todella paljon! Turvaudun sinuun, jos vain sallit kun tulee ongelmia. Kiitos!

Edit, hei tukekoodi, kokeileppa mennä tossa koodissa niin meet siin ikkuna jutussa alaspäin ja vasemmalle ja kokeile ampua. Minulla kun menin alas ja vasemmalle tietyssä kohdassa se ei enää ammu, muttakun palaan takaisin niin se alkaa taas ampua, ja yhdessä kohtaa vilkkuu ammus

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 9:27 pm
by TukeKoodi
?, tän täytyy olla joku cb:n bugi...

Re: Viholliset sotapeliin

Posted: Thu Mar 10, 2011 11:05 pm
by Jonez
Lisää "ResetObjectCollision luoti\obj" riville 43. Ongelma siis johtuu cb:n törmäystunnistuksesta: luoti luodaan mapin keskelle ja siirretään heti pelaajan piipun kohdalle. Mutta jos pelaaja liikkuu seinän taakse, luoti liikkuu seinän yli, tapahtuu törmäys (vaikka näin ei haluta) ja luoti poistetaan.

Re: Viholliset sotapeliin

Posted: Fri Mar 11, 2011 2:00 pm
by demoread
Kiitos kaikille ketka autto. Tästä edes pistän kysymykset sinne "Tyhmät kysysmykset" osioon. Nyt tarvii enään jaksaa laittaa vihut tonne ja muuta pientä hieno säätöö. Kiitooos

Re: Viholliset sotapeliin

Posted: Sun Mar 20, 2011 12:56 am
by TukeKoodi
Sori ku nostan vanhan aiheen ylös mutta missä vaiheessa proju? Eteneekö vielä vai jäätyikö jo. Jos etenee, niin onnittelut, harvalla ensipelin tekijällä säilyy proju yli 4 päivää.

Re: Viholliset sotapeliin

Posted: Sun May 15, 2011 8:40 pm
by demoread
Joo, ei oo jäätyny, tosin on vähän ollu taukoa, mut nyt jatkuu, viimeksi kun tein niin tais tulla vähän takapakkia kun en osannu kirjotella niitä tähän ketjuuu laitettuja apuja oikeisii kohtii. mutta eiköhän tää tästä lähe.