Viholliset sotapeliin
Viholliset sotapeliin
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.
Ps. en käytä copy pastea.
Re: Viholliset sotapeliin
Tervetuloa foorumille!
Tässä on kimppuunhyökkäysohje:
Kannattaa jatkossa postata pikkukysymykset "Tyhmät kysymykset" topiciin
PS: Toivottavasti koodi toimii ja oli avuksi!
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
PS: Toivottavasti koodi toimii ja oli avuksi!
Re: Viholliset sotapeliin
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:
Tuo koodin alkuun, vaikka Framelimitin ja SCREEN:in jälkeen . Sen jälkeen lataa masterobjekti (objekti josta kaikki viholliset kloonataan):
Kun repeatin sisällä haluat tehdä vihun, niin tee se samaan tapaan kuin oppitunti 18, Ammukset 2:
Tarkista vihut:
Tuota on siis typet, kannattaa opetella oppitunti 18 ulkoa. Jos tarviit apua, lähetä minulle yksityisviesti.
Niin, ja tervetuloa foorumeille!
Code: Select all
Type VIHUT //Luo vihuille tyyppi
Field obj //Tavallaan "alusta" jolle vihu määritellään
End Type //Tai EndType, poistutaan typestä
Code: Select all
masterVihu = LoadObject("Media\soldier.bmp", 180)
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
Code: Select all
For vihu.VIHUT = Each VIHUT
MoveObject vihu\obj, 2
PointObject vihu\obj, (sinun pelaajasi)
Next vihu
Niin, ja tervetuloa foorumeille!
Aloittelija, koodaaja, jotain...
Re: Viholliset sotapeliin
Peltsi, tässä kysyttiin, kuinka vihut saa LISÄÄNTYMÄÄN kartalle automaattisestiPeltsi wrote:Tervetuloa foorumille!
Tässä on kimppuunhyökkäysohje:Kannattaa jatkossa postata pikkukysymykset "Tyhmät kysymykset" topiciinCode: 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
PS: Toivottavasti koodi toimii ja oli avuksi!
Aloittelija, koodaaja, jotain...
Re: Viholliset sotapeliin
Tuossa minun Versioni vihu spawnista, pointobjectista ja muusta.
Toivottavati auttoi...
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
...
Re: Viholliset sotapeliin
No kysyttiin myös miten ne saadaan hyökkäämään automaattisesti...TukeKoodi wrote:Peltsi, tässä kysyttiin, kuinka vihut saa LISÄÄNTYMÄÄN kartalle automaattisestiPeltsi wrote:Tervetuloa foorumille!
Tässä on kimppuunhyökkäysohje:Kannattaa jatkossa postata pikkukysymykset "Tyhmät kysymykset" topiciinCode: 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
PS: Toivottavasti koodi toimii ja oli avuksi!
Re: Viholliset sotapeliin
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
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...
Re: Viholliset sotapeliin
Jaa.TukeKoodi wrote:Tällä on noloa laittaa viesti: "Google on keksitty" -tyyliin.
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
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
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
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:
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...
Re: Viholliset sotapeliin
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
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
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
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
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...
Re: Viholliset sotapeliin
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.