Voit pyytää apua ohjelmointiongelmiin täältä.
-
kysymys
Post
by kysymys » Fri Sep 12, 2008 7:58 pm
Miten voisin poistaa/piillottaa objecktista palasia? Esim. kun ammus obj osuu seinä objektiin, niin miten voisin saada seinästä palan piilotettua/poistettua? Itse tein osumakohtaan uuden objecktin, joka luo aukon tunnelman seinään.. Ongelmaksi kuitenkin osottautui, että ohjelmani ei tunnista klommoa seinässä ja klommo ei suurene, kun osuu samaan kohtaan toisenkerran
Muutenkin klommojen piirtäminen vie aika paljon konetehoa =( Onko muita ideoita?
-
Koodiapina
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
-
Contact:
Post
by Koodiapina » Fri Sep 12, 2008 8:39 pm
Jos on pakko käyttää objekteja, niin keksin ainoastaan tämmöiseen hitaan purkka ratkaisun:
Code: Select all
map = LoadImage("media/map.bmp")
obj = MakeObject()
PaintObject obj,-map
While 1
// eka hiiren nappi alas
If MouseDown(1) Then
DrawToImage map
Color 0,0,0
Circle MouseX()-10,MouseY()-10,20
DrawToScreen
PaintObject obj,-map
EndIf
DrawScreen
Wend
Käytännöllisempää olisi käyttää pelkkiä kuvia, koska paintobject on todella hidas.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.
-
valscion
- Moderator

- Posts: 1593
- Joined: Thu Dec 06, 2007 8:46 pm
- Location: Espoo
-
Contact:
Post
by valscion » Fri Sep 12, 2008 8:41 pm
kysymys wrote:Miten voisin poistaa/piillottaa objecktista palasia? Esim. kun ammus obj osuu seinä objektiin, niin miten voisin saada seinästä palan piilotettua/poistettua? Itse tein osumakohtaan uuden objecktin, joka luo aukon tunnelman seinään.. Ongelmaksi kuitenkin osottautui, että ohjelmani ei tunnista klommoa seinässä ja klommo ei suurene, kun osuu samaan kohtaan toisenkerran
Muutenkin klommojen piirtäminen vie aika paljon konetehoa =( Onko muita ideoita?
Jos klommot löytyvät aina tietystä kohtaa, voit paintobjectilla vaihtaa objektin grafiikkaa. CoolBasicissa ei ole myöskään pikselintarkkaa törmäyksentunnistinta, niin jos palanen mikä lähtee seinästä "pois" muodostaa ei-laatikko/ympyrämäisen palasen niin törmäyksentunnistin bugittaa.
Voit myös tehdä pelin alussa esim. taulukkoon erilaiset muokatut kuvat yhdestä seinäpalasesta ja muokata sitten CB:n omilla komennoilla siitä erilaisen ja tallettaa jokaiseen taulukon soluun erilaisen vaihtoehdon. Sitten pelissä ammuksen osuessa seinään katsot törmäyskulman ja sen mukaan päätät millä kuvalla päällystät kyseisen objektin.
-
kysymys
Post
by kysymys » Fri Sep 12, 2008 9:21 pm
Grandi wrote:Jos on pakko käyttää objekteja, niin keksin ainoastaan tämmöiseen hitaan purkka ratkaisun:
Code: Select all
map = LoadImage("media/map.bmp")
obj = MakeObject()
PaintObject obj,-map
While 1
// eka hiiren nappi alas
If MouseDown(1) Then
DrawToImage map
Color 0,0,0
Circle MouseX()-10,MouseY()-10,20
DrawToScreen
PaintObject obj,-map
EndIf
DrawScreen
Wend
Käytännöllisempää olisi käyttää pelkkiä kuvia, koska paintobject on todella hidas.
Joudun käyttämään objekteja, koska joudun liikuttamaan ammuksia sen verran.. Voin tietenkin yrittää väsätä peliäni kuville, mutta se ei ole välttämätöntä. Pelini ei tarvitse mitään huippu fps:sää.. Itse jotenkin unohdin tuon komennon ja aloin vain typeillä tehdä paikkoja mapin päälle
Kiitos molemmille =)
-
Ilkka
- Active Member
- Posts: 201
- Joined: Mon Oct 08, 2007 8:01 am
Post
by Ilkka » Sat Sep 13, 2008 8:02 pm
Hei taas -> jälleen kysymys-osiossa. Onko mahdollista cbn piirtokomennoilla tehtyä ympyrää muuttaa objectiksi?
Tämä tieto on elintärkeä itseni kannalta. : )
-
Jonez
- Devoted Member
- Posts: 575
- Joined: Mon Aug 27, 2007 8:37 pm
Post
by Jonez » Sat Sep 13, 2008 8:09 pm
On mahdollista maalata objekteja kuvilla (eli antaa objektille sama ulkonäkö kuin tietyllä kuvalla). Pelkästään cb:n piirtokomennolla tehtyä ympyrää ei ole mahdollista muuttaa _suoraan_ objektiksi.
Eli tee näin:
1. Teet uuden kuvan funktiolla MakeImage()
2. Luot uuden objektin funktiolla MakeObject(). Tämä on se objekti joka vastaa ympyrää.
3. Piirrät tähän 1-osiossa luotuun kuvaan käyttäen komentoja DrawToImage ja DrawToWorld
4. Maalaat luodun objektin tällä kuvalla. Käytä komentoa PaintObject()
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-

<- protestipelikilpailun voittaja.
Space War
-
Koodiapina
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
-
Contact:
Post
by Koodiapina » Sat Sep 13, 2008 8:19 pm
Jonez wrote:3. Piirrät tähän 1-osiossa luotuun kuvaan käyttäen komentoja DrawToImage ja DrawToWorld
Tai sitten DrawToScreen ;)
Kuvaton tapa tuosta olisi asettaa ympyrä maailmakoordinaatteihin objektin paikalle ObjextX ja ObjectY funktioilla - Myös DrawToWorldia tarvitaan. Sitten vain tyhjälle objektille asetetaan ObjectRangella kooksi ympyrän koko, jotta mahdolliset törmäykset jne. olisivat realistisia. Tässä tapauksessa on myös oltava tarkkana, tuleeko ympyrä haluttujen asioiden päälle tai alle. Uskoisin tämän olevan nopeampi ratkaisu, kun ei tarvitse piirtää kuvaan tai käyttää PaintObjektia, jotka ovat kumpikin todella raskaita operaatioita.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.
-
temu92
- Web Developer

- Posts: 1226
- Joined: Mon Aug 27, 2007 9:56 pm
- Location: Gamindustri
-
Contact:
Post
by temu92 » Sat Sep 13, 2008 8:31 pm
Mutta miks taas pitäis käyttää PaintObjectia kokoajan? Ei se pari kertaa pelin latausvaiheessa tunnu missään.
-
Ilkka
- Active Member
- Posts: 201
- Joined: Mon Oct 08, 2007 8:01 am
Post
by Ilkka » Sat Sep 13, 2008 8:47 pm
voiko värien mukaan tehdä törmäystunnistuksen, jos voi, niin miten?
-
tuhoojabotti
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 3:53 pm
- Location: Suomi, Finland
-
Contact:
Post
by tuhoojabotti » Sat Sep 13, 2008 9:42 pm
voi lue väri getcolorilla tai getimagecolorilla ja jos se on törmäys väri niin pysäytä putoaminen jne.
-
Koodiapina
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
-
Contact:
Post
by Koodiapina » Sat Sep 13, 2008 9:50 pm
tuhoojabotti wrote:voi lue väri getcolorilla tai getimagecolorilla ja jos se on törmäys väri niin pysäytä putoaminen jne.
Tarkoitat siis PickColor ja PickImageColor / PickImageColor2?
EDIT: Äsh! Typotin ton äsken itsekkin :D Korjattu.
Temu92 wrote:Mutta miks taas pitäis käyttää PaintObjectia kokoajan?
Olettaen, että kirjoitit minulle. Taisit käsittää viestini väärin, sillä suosittelin
olemaan käyttämättä PaintObjectia tuossa tilanteessa ;)
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.
-
vierailijaaa
Post
by vierailijaaa » Sun Sep 14, 2008 1:00 am
Onko mahdollista piirtää kuvia pelimaailmaan, eikä ruudulle kuten normaalisti?
-
TheFish
- Developer

- Posts: 477
- Joined: Mon Aug 27, 2007 9:28 pm
- Location: Joensuu
Post
by TheFish » Sun Sep 14, 2008 1:07 am
vierailijaaa wrote:Onko mahdollista piirtää kuvia pelimaailmaan, eikä ruudulle kuten normaalisti?
Käytä drawtoworld:iä ennen kuvien piirtämistä.
CoolBasic henkilökuntaa
Kehittäjä
-
vierailijaa
Post
by vierailijaa » Sun Sep 14, 2008 1:24 am
TheFish wrote:vierailijaaa wrote:Onko mahdollista piirtää kuvia pelimaailmaan, eikä ruudulle kuten normaalisti?
Käytä drawtoworld:iä ennen kuvien piirtämistä.
Eipä auta... Kuuluisko sen muka edes vaikuttaa kuviin? Vai vain cb:n omiin piirtokomentoihin.
-
TheFish
- Developer

- Posts: 477
- Joined: Mon Aug 27, 2007 9:28 pm
- Location: Joensuu
Post
by TheFish » Sun Sep 14, 2008 1:25 am
vierailijaa wrote:Eipä auta... Kuuluisko sen muka edes vaikuttaa kuviin? Vai vain cb:n omiin piirtokomentoihin.
Muista laittaa ne on/off:it oikein.
CoolBasic henkilökuntaa
Kehittäjä
-
vierailijaa
Post
by vierailijaa » Sun Sep 14, 2008 1:40 am
TheFish wrote:vierailijaa wrote:Eipä auta... Kuuluisko sen muka edes vaikuttaa kuviin? Vai vain cb:n omiin piirtokomentoihin.
Muista laittaa ne on/off:it oikein.
Code: Select all
FrameLimit 40
SCREEN 800,600
kuva = LoadImage ("Media\map.bmp")
'DrawToWorld ON
Repeat
DrawImage kuva,40,20
DrawScreen
If KeyDown(cbkeyright) Then TranslateCamera 10,0 'kameraa liikuttamalla näkee, että kuva on koko ajan samassa kohdassa
Forever
tässä ei ole mitään eroa vaikka laittaisikin tuon drawtoworldin ONiksi... kuva on samassa kohdassa koko ajan ja se piirretään ruudun koordinaattien mukaan... eli drawtoworld ei vaikuta kuviin? onko muuta keinoa?
-
vierailijaaa
Post
by vierailijaaa » Sun Sep 14, 2008 1:42 am
ps. se drawtoworld on kommenttina tahallaan, siitä ei sentään ole kiinni

-
TheFish
- Developer

- Posts: 477
- Joined: Mon Aug 27, 2007 9:28 pm
- Location: Joensuu
Post
by TheFish » Sun Sep 14, 2008 1:50 am
vierailijaaa wrote:ps. se drawtoworld on kommenttina tahallaan, siitä ei sentään ole kiinni

drawtoworldille annetaan siis 0-3 on/off parametriä. Ensimmäinen on piirtokomennoille, toinen kuville ja kolmas teksteille. Kannattaa vilkaista sitä manuaaliakin.
CoolBasic henkilökuntaa
Kehittäjä
-
vierailijaaa
Post
by vierailijaaa » Sun Sep 14, 2008 1:55 am
Ohops!

Kiitän ja kumarran!
-
objectoverlap
Post
by objectoverlap » Sun Sep 14, 2008 8:03 pm
Onko mitään komentoa, jolla voisi saada tarkemman objektien kosketustunnistuksen kuin tuo? Ohjelmassani on ongelmana kun tyyppini syntyy maan sisään noin -10 - 10 pikseliä. Vai pitäisikö minun jotenkin scannata mappini jokaisen pikselin korkeus? Onko kukaan keksinyt tuolle, jotain kiertotietä? Ratkaisu ei saisi olla mikään tietokonetta rasittava, koska ohjelmani fps on vain 16

(1gh:sisellä koneella).
If ObjectsOverlap(i\Obj , kartta,3) Then