Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
kysymys

Re: Tyhmät kysymykset

Post by kysymys »

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

Re: Tyhmät kysymykset

Post by Koodiapina »

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.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset

Post by valscion »

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.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
kysymys

Re: Tyhmät kysymykset

Post by kysymys »

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 =)
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset

Post by Ilkka »

Hei taas -> jälleen kysymys-osiossa. Onko mahdollista cbn piirtokomennoilla tehtyä ympyrää muuttaa objectiksi?
Tämä tieto on elintärkeä itseni kannalta. : )
Image
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

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-
Image <- protestipelikilpailun voittaja.
Space War
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

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.
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset

Post by temu92 »

Mutta miks taas pitäis käyttää PaintObjectia kokoajan? Ei se pari kertaa pelin latausvaiheessa tunnu missään.
User avatar
Ilkka
Active Member
Posts: 201
Joined: Mon Oct 08, 2007 8:01 am

Re: Tyhmät kysymykset

Post by Ilkka »

voiko värien mukaan tehdä törmäystunnistuksen, jos voi, niin miten?
Image
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Tyhmät kysymykset

Post by tuhoojabotti »

voi lue väri getcolorilla tai getimagecolorilla ja jos se on törmäys väri niin pysäytä putoaminen jne.
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

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 ;)
vierailijaaa

Re: Tyhmät kysymykset

Post by vierailijaaa »

Onko mahdollista piirtää kuvia pelimaailmaan, eikä ruudulle kuten normaalisti?
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

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

Re: Tyhmät kysymykset

Post by vierailijaa »

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
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

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

Re: Tyhmät kysymykset

Post by vierailijaa »

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

Re: Tyhmät kysymykset

Post by vierailijaaa »

ps. se drawtoworld on kommenttina tahallaan, siitä ei sentään ole kiinni :D
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset

Post by TheFish »

vierailijaaa wrote:ps. se drawtoworld on kommenttina tahallaan, siitä ei sentään ole kiinni :D
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

Re: Tyhmät kysymykset

Post by vierailijaaa »

Ohops! :D Kiitän ja kumarran!
objectoverlap

Re: Tyhmät kysymykset

Post by objectoverlap »

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
Locked