Tyhmät kysymykset (I/2012)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2012)

Post by Awaclus »

legend wrote:

Code: Select all

ObjectOrder ukko, 1
Se kartta varmaan kannattaisi ennemmin järjestää alimmaksi, jos vaikka joskus haluaa muitakin objekteja kuin pelkän ukon.
User avatar
Ize
Newcomer
Posts: 35
Joined: Mon Jan 16, 2012 7:46 pm
Location: Finland

Tyhmät kysymykset (I/2012)

Post by Ize »

Onko mitään keinoa saada hiiren sijainti tileinä? Ei ole sisäisiä komentoja, mutta joku funkkari mahdollisesti?
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2012)

Post by valscion »

Ize wrote:Onko mitään keinoa saada hiiren sijainti tileinä? Ei ole sisäisiä komentoja, mutta joku funkkari mahdollisesti?
MouseWX(), MouseWY() ja nämä: www.cbrepository.com/codes/code/69/
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
Ryitt
Newcomer
Posts: 2
Joined: Tue May 21, 2013 12:49 am

Re: Tyhmät kysymykset (I/2012)

Post by Ryitt »

Miksi chatruutu kuva piirtyy kartan alle eikä päälle? Jos ottaa kartan pois niin sit se näkyy(oletettavasti). Missä vika?

Code: Select all

FrameLimit 40 
SCREEN 640,480,0,cbfullscreen

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

ukko = LoadObject ("Media\guy.bmp",72)

SetupCollision ukko, kartta, 1, 4, 2

tausta=LoadImage("Media\chatruutu.bmp")

gamma=-255
ScreenGamma gamma,gamma,gamma

MaskImage tausta, 255,255,255

While gamma<=0
    DrawImage tausta,0,320
    Text 30,350,"Jotain höopinää"
    text 30,370,"Ja lisää"
    Text 480,450,"..."

    ScreenGamma gamma,gamma,gamma
    gamma=gamma+1.5
    UpdateGame
    DrawScreen    
Wend
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2012)

Post by koodaaja »

Koska CB:ssä jälkimmäisenä piirretty kuva jää aina päällimmäiseksi, ja objektit piirretään oletuksena DrawScreeniä kutsuttaessa. Objektien piirtoa voi aikaistaa komentamalla DrawGame, joka piirtää siis objektit näytölle minkä jälkeen voit piirrellä niiden päälle. Vastaavasti UpdateGamesi on sinänsä turha että sitä kutsutaan joka tapauksessa DrawScreenin yhteydessä jos edellisen DrawScreenin jälkeen sitä ei ole erikseen kutsuttu.

Eli näin:

Code: Select all

FrameLimit 40 
SCREEN 640,480,0,cbfullscreen

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

ukko = LoadObject ("Media\guy.bmp",72)

SetupCollision ukko, kartta, 1, 4, 2

tausta=LoadImage("Media\chatruutu.bmp")

gamma=-255
ScreenGamma gamma,gamma,gamma

MaskImage tausta, 255,255,255

While gamma<=0
    DrawGame
    DrawImage tausta,0,320
    Text 30,350,"Jotain höopinää"
    text 30,370,"Ja lisää"
    Text 480,450,"..."

    ScreenGamma gamma,gamma,gamma
    gamma=gamma+1.5
    DrawScreen    
Wend
Ylimääräisiä huomioita: 1) on kiva jos korvaat omat mediasi jollain oletuskansiosta löytyvällä niin ohjelman voi suoraan ajaa kokeillakseen virhettä ja 2) pliis, ei kokoruudun tiloja pieniin testipätkiin, en ymmärrä miten kukaan jaksaa devata mitään siten että joka käännöllä odottaa monta sekuntia tilojen vaihtumisia :(
Ryitt
Newcomer
Posts: 2
Joined: Tue May 21, 2013 12:49 am

Re: Tyhmät kysymykset (I/2012)

Post by Ryitt »

Lisää kysymyksiä mutta ei niitä toivottavasti liikaa ole.
Kun tuo setupcollision törmäys näyttää toimivan vain objectin reunoihin niin miten voin tarkistaa onko esimerkiksi ukko törmättävän seinän sisällä ja täten estää liikkumisen jos ukko kerta liikkuu tilen kerrallaan niin että se pomppaa suoraan sisään.
Vaikeasti selitetty mutta esimerkki... ->

Code: Select all

FrameLimit 40 
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

ukko = LoadObject ("Media\guy.bmp",4)

SetupCollision ukko, kartta, 1, 4, 2

Repeat
    If LeftKey() Then 
        If ObjectAngle(ukko) = 180 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys            
        Else
            RotateObject ukko,180
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf
            
    If RightKey() Then
        If ObjectAngle(ukko) = 0 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        Else
            RotateObject ukko,0
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf
    
    If UpKey() Then 
        If ObjectAngle(ukko) = 90 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        Else
            RotateObject ukko,90
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf    
        
    If DownKey() Then 
        If ObjectAngle(ukko) = 270 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        Else
            RotateObject ukko,270
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf
    
    UpdateGame

    CloneCameraPosition ukko

    DrawScreen

Forever
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2012)

Post by Awaclus »

Ryitt wrote:Lisää kysymyksiä mutta ei niitä toivottavasti liikaa ole.
Kun tuo setupcollision törmäys näyttää toimivan vain objectin reunoihin niin miten voin tarkistaa onko esimerkiksi ukko törmättävän seinän sisällä ja täten estää liikkumisen jos ukko kerta liikkuu tilen kerrallaan niin että se pomppaa suoraan sisään.
Vaikeasti selitetty mutta esimerkki... ->

Code: Select all

FrameLimit 40 
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

ukko = LoadObject ("Media\guy.bmp",4)

SetupCollision ukko, kartta, 1, 4, 2

Repeat
    If LeftKey() Then 
        If ObjectAngle(ukko) = 180 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys            
        Else
            RotateObject ukko,180
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf
            
    If RightKey() Then
        If ObjectAngle(ukko) = 0 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        Else
            RotateObject ukko,0
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf
    
    If UpKey() Then 
        If ObjectAngle(ukko) = 90 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        Else
            RotateObject ukko,90
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf    
        
    If DownKey() Then 
        If ObjectAngle(ukko) = 270 Then
            MoveObject ukko,32
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        Else
            RotateObject ukko,270
            liiku=Timer()
            Repeat 
            Until TIMER()>liiku+200
            ClearKeys
        EndIf
    EndIf
    
    UpdateGame

    CloneCameraPosition ukko

    DrawScreen

Forever
Ukon siirtämisen perään GetMapilla tarkistat, onko ukon koordinaattien alla olevassa törmäyskerroksessa muu kuin 0, ja jos on niin ukon ei kuuluisi olla siinä (eli sitten se siirretään takaisin). Tai vaihtoehtoisesti voi tarkistaa, onko ukon leveyden verran ukon vieressä olevissa koordinaateissa törmäyskerroksessa 0 ja liikutaan jos ja vain jos se on 0.

Saattoi tulla näin kolmelta aamuyöstä hieman sekava viesti, mutta kai tuosta jotain saa irti.
User avatar
Ize
Newcomer
Posts: 35
Joined: Mon Jan 16, 2012 7:46 pm
Location: Finland

Tyhmät kysymykset (I/2012)

Post by Ize »

Olisi pieni ongelma. Jälleen.

Elikkäs olen wörkännyt objektin, joka hyppii ja pyörähtää samalla. Ongelma on se että kun objekti pyörii/on jossain muussa kulmassa, kuin alkuperäisessä, objektin ympärille ilmestyy "musta laatikko", joka katoaa kun objekti palaa alkuperäiseen asentoon. Olen törmännyt tähän monia kertoja, mutta vasta nyt se on todella haitaksi.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2012)

Post by Latexi95 »

Ize wrote:Olisi pieni ongelma. Jälleen.

Elikkäs olen wörkännyt objektin, joka hyppii ja pyörähtää samalla. Ongelma on se että kun objekti pyörii/on jossain muussa kulmassa, kuin alkuperäisessä, objektin ympärille ilmestyy "musta laatikko", joka katoaa kun objekti palaa alkuperäiseen asentoon. Olen törmännyt tähän monia kertoja, mutta vasta nyt se on todella haitaksi.
Varmaankin käytät MaskObjectia? MaskObjectissa on sellainen ominaisuus/bugi, että se ei toimi objekteilla joita pyöritellään. :(
Ongelman voi kiertää käyttämällä maskivärinä mustaa, niin kuin oletuksena on, jolloin ei tarvitse kutsua MaskObjectia. Jos kuvassasi tarvitaan mustaa väriä voit muuttaa sen esimerkiksi 1,0,0 väriksi, jolloin se näyttää samalta mutta ei kuitenkaan maskaudu pois.
User avatar
Ize
Newcomer
Posts: 35
Joined: Mon Jan 16, 2012 7:46 pm
Location: Finland

Re: Tyhmät kysymykset (I/2012)

Post by Ize »

Latexi95 wrote: Varmaankin käytät MaskObjectia? MaskObjectissa on sellainen ominaisuus/bugi, että se ei toimi objekteilla joita pyöritellään. :(
Ongelman voi kiertää käyttämällä maskivärinä mustaa, niin kuin oletuksena on, jolloin ei tarvitse kutsua MaskObjectia. Jos kuvassasi tarvitaan mustaa väriä voit muuttaa sen esimerkiksi 1,0,0 väriksi, jolloin se näyttää samalta mutta ei kuitenkaan maskaudu pois.
Juu. Nyt toimii :)
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Paroni
Newcomer
Posts: 20
Joined: Sun Jan 16, 2011 2:39 am

Re: Tyhmät kysymykset (I/2012)

Post by Paroni »

Taas pieni tyhmä kysymys. Tuntuu hyvin onnettomalta ku en saa millään seuraavaa koodia muutettua toimimaan For -looppina:

Code: Select all

Function UpdateDrawNums()
        For pwn.PAWN = Each PAWN
        If pwn\PosY = PlayerPosY-(TileSize*5) Then
                pwn\DrawNum = 1
        ElseIf pwn\PosY = PlayerPosY-(TileSize*4) Then
                pwn\DrawNum = 2
        ElseIf pwn\PosY = PlayerPosY-(TileSize*3) Then
                pwn\DrawNum = 3
        ElseIf pwn\PosY = PlayerPosY-(TileSize*2) Then
                pwn\DrawNum = 4
        ElseIf pwn\PosY = PlayerPosY-(TileSize*1) Then
                pwn\DrawNum = 5
        ElseIf pwn\PosY = PlayerPosY Then
                pwn\DrawNum = 6
        ElseIf pwn\PosY = PlayerPosY+(TileSize*1) Then
                pwn\DrawNum = 7
        ElseIf pwn\PosY = PlayerPosY+(TileSize*2) Then
                pwn\DrawNum = 8
        ElseIf pwn\PosY = PlayerPosY+(TileSize*3) Then
                pwn\DrawNum = 9
        ElseIf pwn\PosY = PlayerPosY+(TileSize*4) Then
                pwn\DrawNum = 10
        ElseIf pwn\PosY = PlayerPosY+(TileSize*5) Then
                pwn\DrawNum = 11
        Else
                pwn\DrawNum = 0
        EndIf
        Next pwn
EndFunction
Olen nyt ties mitä kokeillut mutta aina on sama tulos: Yksi rivi hahmoja näkyy kerrallaan ja pelaaja ei näy ollenkaan

Code: Select all

Function UpdateDrawNums()
CurDrawNum = 1
Tiles = 5
For i = -Tiles To Tiles
        For pwn.PAWN = Each PAWN
                If pwn\PosY = PlayerPosY+(TileSize*i)
                        pwn\DrawNum = CurDrawNum
                Else
                        pwn\DrawNum = 0
                EndIf
        Next pwn
        CurDrawNum+1
Next i
EndFunction
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2012)

Post by naputtelija »

Paroni wrote:Taas pieni tyhmä kysymys. Tuntuu hyvin onnettomalta ku en saa millään seuraavaa koodia muutettua toimimaan For -looppina:

Code: Select all

Function UpdateDrawNums()
        For pwn.PAWN = Each PAWN
        If pwn\PosY = PlayerPosY-(TileSize*5) Then
                pwn\DrawNum = 1
        ElseIf pwn\PosY = PlayerPosY-(TileSize*4) Then
                pwn\DrawNum = 2
        ElseIf pwn\PosY = PlayerPosY-(TileSize*3) Then
                pwn\DrawNum = 3
        ElseIf pwn\PosY = PlayerPosY-(TileSize*2) Then
                pwn\DrawNum = 4
        ElseIf pwn\PosY = PlayerPosY-(TileSize*1) Then
                pwn\DrawNum = 5
        ElseIf pwn\PosY = PlayerPosY Then
                pwn\DrawNum = 6
        ElseIf pwn\PosY = PlayerPosY+(TileSize*1) Then
                pwn\DrawNum = 7
        ElseIf pwn\PosY = PlayerPosY+(TileSize*2) Then
                pwn\DrawNum = 8
        ElseIf pwn\PosY = PlayerPosY+(TileSize*3) Then
                pwn\DrawNum = 9
        ElseIf pwn\PosY = PlayerPosY+(TileSize*4) Then
                pwn\DrawNum = 10
        ElseIf pwn\PosY = PlayerPosY+(TileSize*5) Then
                pwn\DrawNum = 11
        Else
                pwn\DrawNum = 0
        EndIf
        Next pwn
EndFunction
Olen nyt ties mitä kokeillut mutta aina on sama tulos: Yksi rivi hahmoja näkyy kerrallaan ja pelaaja ei näy ollenkaan

Code: Select all

Function UpdateDrawNums()
CurDrawNum = 1
Tiles = 5
For i = -Tiles To Tiles
        For pwn.PAWN = Each PAWN
                If pwn\PosY = PlayerPosY+(TileSize*i)
                        pwn\DrawNum = CurDrawNum
                Else
                        pwn\DrawNum = 0
                EndIf
        Next pwn
        CurDrawNum+1
Next i
EndFunction
Auttaisi, jos selittäisit mitä koodin kuuluu tehdä. Jos tarkoitus on tehdä shakkilautatyyppinen peli, jossa pelaaja liikkuu ruudulla, niin tuota voisi lähteä toteuttaman paremminkin.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Paroni
Newcomer
Posts: 20
Joined: Sun Jan 16, 2011 2:39 am

Re: Tyhmät kysymykset (I/2012)

Post by Paroni »

Totta tosiaan. Tarkoitus siis olisi käydä x määrä tilejä, esimerkissäni 11, joiden keskimmäisessä tilessä on pelaajan sijainti. Käydään ylhäältä alas läpi näillä tileillä sijaitsevat hahmot ja annetaan sen mukaan DrawNum. Seuraava funktio sitten piirtää tämän numeron perusteella ruudulle:

Code: Select all

Function DrawPawns()
        For i = 1 To Tiles // edit: Tilesin sijaan oikeassa koodissa on vain "11" 
                For pwn.PAWN = Each PAWN
                        If pwn\DrawNum = i Then
                                DrawImage pwn\Img, pwn\PosX, pwn\PosY-(ImageHeight(pwn\Img)/2), pwn\Facing-1
                        EndIf
                Next pwn
        Next i
EndFunction
Tämän lisäksi UpdateDrawNums kutsutaan vain silloin, kun joku on lopettanut liikkumisen. Tämä tehdään siis siksi, koska spriteni ovat 32x64 kokoisia joten hahmojen "pitää" näkyä toisten edessä tai takan riippuen näiden y koordinaatista.

Varmasti noiden sorttaukseen olisi jokin elegantimpi ja tehokkaampi tapa, mutta tämä on paras tapa jonka olen tähän mennessä saanut toimimaan.
EDIT:

Hah!

Keksinkin yöunien jälkeen mistä kenkä puristaa. Else ...drawnum 0 tosiaan nollaa jokaisen hahmon drawnumin joten kukaan ei piirry :P
Toimiva koodi jos jotakuta mahtaa kiinnostaa/keksii parannettavaa:

Code: Select all

Function UpdateDrawNums()
        Tiles = 5
        CurDrawNum = 1
        For pwn.PAWN = Each PAWN
                pwn\DrawNum = 0
                For i = -Tiles To Tiles
                        If pwn\PosY = PlayerPosY+(TileSize*i) Then
                                pwn\DrawNum = CurDrawNum
                        EndIf
                        
                        If i = Tiles Then
                                CurDrawNum = 1
                        Else
                                CurDrawNum+1
                        EndIf
                Next i
        Next pwn
EndFunction
On hiukan tehokkaamman olonen näin ensialkuun kuin tuo elseif sotku (plus luonnollisesti paljon helpommin muokattavissa).[/edit]
_GRAAFIKKO_
Newcomer
Posts: 1
Joined: Tue May 28, 2013 1:31 pm

Re: Tyhmät kysymykset (I/2012)

Post by _GRAAFIKKO_ »

minulla on sellainen ongelma, että kun avaan coolbasicin tietokoneen yhteydessä, coolbasic aukeaa, mutta kun yritän suorittaa jonkun tekemäni pelin niin kone väittää että ohjelma on jo käynnissä.
täten, joudun aina lataamaan coolbasicin uudestaan, jotta voin "koeajaa" pelini ??? missä piilee vika? :o
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2012)

Post by naputtelija »

_GRAAFIKKO_ wrote:minulla on sellainen ongelma, että kun avaan coolbasicin tietokoneen yhteydessä, coolbasic aukeaa, mutta kun yritän suorittaa jonkun tekemäni pelin niin kone väittää että ohjelma on jo käynnissä.
täten, joudun aina lataamaan coolbasicin uudestaan, jotta voin "koeajaa" pelini ??? missä piilee vika? :o
Joka kerta ennen pelin ajamista painat Ctrl+Alt+Del, ja sammutat cbRun.exe prosesseista jos se on käynnissä.

Jos tämä ei toimi, niin
Coolbasic editorin pikakuvake>Right click>Ominaisuudet>Yhteensopivuus>Käynnistä ohjelma järjestelmänvalvojana
Sitten käynnistä. Pitäisi toimia.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2012)

Post by Awaclus »

Ja copypastaa tuosta toisesta stickystä:

Voi myös olla, että virustorjuntaohjelmasi jollain tavalla estää CoolBasicia toimimasta - lisää cbRun.exe ja cbEditor.exe luotettavien ohjelmien listaan niin pitäisi sitten viimeistään toimia. Jos huolimatta tästä ei toimi, yksi mahdollinen ratkaisuvaihtoehto voi olla myös CoolBasicin tallentaminen jonnekin muualle kuin C-aseman Program Files-kansioon.
Herra Siili
Advanced Member
Posts: 308
Joined: Tue Nov 25, 2008 8:06 pm
Contact:

Re: Tyhmät kysymykset (I/2012)

Post by Herra Siili »

Tai sitten antaa itselleen kirjoitusoikeudet cb:n asennuskansioon. Mene kansioon, oletuksena C:\Program Files (x86)\CoolBasic, kakkosnappi -> ominaisuudet -> suojaus -> muokkaa -> lisää -> kirjoita käyttäjänimesi -> ok -> valitse täppä "kaikki oikeudet". Valinnat ei ehkä mene ihan sanatarkasti noin kun itsellä on vain englanninkielinen Windows käytössä.
a.k.a. Gehock
temetin123
Newcomer
Posts: 4
Joined: Sun Jun 02, 2013 9:52 am

Re: Tyhmät kysymykset (I/2012)

Post by temetin123 »

Hei!

Kysyisin että miten saa tekstin tulemaan silloin kun koskee jotain toista objektia?

Esim. Jos on ukko ja talo ja kun ukko koskee taloa pitäisi saada näkyviiin teksti "talo on lukossa".
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: Tyhmät kysymykset (I/2012)

Post by MrMonday »

temetin123 wrote:Hei!

Kysyisin että miten saa tekstin tulemaan silloin kun koskee jotain toista objektia?

Esim. Jos on ukko ja talo ja kun ukko koskee taloa pitäisi saada näkyviiin teksti "talo on lukossa".
Mikäli talo on myös objekti (ei osa tilekarttaa), niin silloin homma hoituu helposti ObjectsOverlap-funktiolla.

Esimerkki:

Code: Select all

If ObjectsOverlap(ukko, talo, [tapa]) // Jos objekti 'ukko' on objektin 'talo' päällä, niin...
    Text 0,0,"talo on lukossa" //...tulostetaan vasempaan ylänurkkaan (0,0) teksti "talo on lukossa"
Endif
Mikäli taas talo on osa tilekarttaa (mikäli niitä käytät), niin silloin asetat kartan datakerrokseen talon tai oven kohdalle haluamasi arvon, aivan kuten piirrät näkyviä palikoita kartalle, ja koodissasi sitten tarkistat, että onko ukon alla olevassa tilessä haluttu arvo.

Esimerkki:

Code: Select all

// Oletuksena talon/oven kohdalle on asetettu arvoksi 1

If Getmap(3,ObjectX(ukko), ObjectY(ukko)) = 1 // Jos kartan 3. kerroksessa (datakerros) on ukon sijainnin kohdalla tilellä arvo 1, niin...
    Text 0,0,"talo on lukossa"  //...tulostetaan vasempaan ylänurkkaan (0,0) teksti "talo on lukossa"
Endif

Toivottavasti ei ollut liian sekavaa :)
temetin123
Newcomer
Posts: 4
Joined: Sun Jun 02, 2013 9:52 am

Re: Tyhmät kysymykset (I/2012)

Post by temetin123 »

Muuten mahtava mutta mitä tarkoitat tuolla [tapa] kohdalla, tarkoitatko objektin törmäys tapaa???
Locked