Viholliset sotapeliin

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

Viholliset sotapeliin

Post 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.
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Viholliset sotapeliin

Post 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
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post 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!
Aloittelija, koodaaja, jotain...
CbFUN :D
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post 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 ;)
Aloittelija, koodaaja, jotain...
CbFUN :D
User avatar
ukkeli
Active Member
Posts: 123
Joined: Thu Jan 28, 2010 9:01 pm

Re: Viholliset sotapeliin

Post 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...
...
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: Viholliset sotapeliin

Post 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... ;)
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Re: Viholliset sotapeliin

Post 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.
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post 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.
Aloittelija, koodaaja, jotain...
CbFUN :D
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Viholliset sotapeliin

Post 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.
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Re: Viholliset sotapeliin

Post 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
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post by TukeKoodi »

Laitahan koodia niin koitan ratkoa...
Aloittelija, koodaaja, jotain...
CbFUN :D
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Re: Viholliset sotapeliin

Post 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
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post 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
Aloittelija, koodaaja, jotain...
CbFUN :D
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Re: Viholliset sotapeliin

Post 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
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post by TukeKoodi »

?, tän täytyy olla joku cb:n bugi...
Aloittelija, koodaaja, jotain...
CbFUN :D
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Viholliset sotapeliin

Post 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.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Re: Viholliset sotapeliin

Post 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
User avatar
TukeKoodi
Active Member
Posts: 142
Joined: Thu Feb 03, 2011 7:40 pm
Location: C:\Työpöytä

Re: Viholliset sotapeliin

Post 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ää.
Aloittelija, koodaaja, jotain...
CbFUN :D
demoread
Newcomer
Posts: 8
Joined: Tue Mar 08, 2011 4:18 pm

Re: Viholliset sotapeliin

Post 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.
Post Reply