Tyhmät kysymykset (II/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Feuer »

Hmm... Joku viisaampi voisi auttaa taas. Kuinka lukea mp3:sta tai WMA:sta kappaletietoja? Kaverini ja minun patenttimme epäonnistuivat kaikki :(
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (II/2009)

Post by Sly_Jack0 »

Feuer wrote:Hmm... Joku viisaampi voisi auttaa taas. Kuinka lukea mp3:sta tai WMA:sta kappaletietoja? Kaverini ja minun patenttimme epäonnistuivat kaikki :(
CBKK:sta löytyi Valtzun tekemä esimerkkikoodi. Kiitokset hänelle.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

DatsuniG wrote:Miksi über ristinollapelini voiton tarkistus ei toimi? ; (
Pikku vinkkinä, että koodi kannattaisi testata toimivaksi ennen kuin alkaa tiivistämään.
If lausesta puuttui parit sulkeet. Korjattu:

Code: Select all

    SCREEN 300,300
    Dim Ruudukko(2,2) As integer, Vuoro As Integer
    Repeat
        For a = 0 To 2
            For i = 0 To 2
                Box i * ScreenWidth() / 3, a * ScreenHeight() / 3, ScreenWidth() / 3, ScreenHeight() / 3, 0
                If MouseX() > i * ScreenWidth() / 3 And MouseX() < (i + 1) * ScreenWidth() / 3 And MouseY() > a * ScreenHeight() / 3 And MouseY() < (a + 1) * ScreenHeight() / 3 And MouseHit(1) And Ruudukko(i,a) = 0 Then
                    Ruudukko(i,a) = vuoro + 1
                    vuoro = Not vuoro
                ElseIf ruudukko(i,a) = 1 Then
                    Ellipse i * ScreenWidth() / 3, a * ScreenHeight() / 3, ScreenWidth() / 3, ScreenHeight() / 3,0
                ElseIf ruudukko(i,a) = 2 Then
                    Line i * ScreenWidth() / 3, a * ScreenHeight() / 3, (i + 1) * ScreenWidth() / 3 , (a + 1) * ScreenHeight() / 3
                    Line (i + 1) * ScreenWidth() / 3 , a * ScreenHeight() / 3 , i * ScreenWidth() / 3 , (a + 1) * ScreenHeight() / 3
                EndIf
                If (Ruudukko(a,0) = (Not vuoro) + 1 And Ruudukko(a,1) = (Not vuoro) + 1 And Ruudukko(a,2) = (Not vuoro) + 1) Or (Ruudukko(0,i) = (Not vuoro) + 1 And Ruudukko(1,i) = (Not vuoro) + 1 And Ruudukko(2,i) = (Not vuoro) + 1) Or (Ruudukko(0,0) = (Not vuoro) + 1 And Ruudukko(1,1) = (Not vuoro) + 1 And Ruudukko(2,2) = (Not vuoro) + 1) Or (Ruudukko(2,0) = (Not vuoro) + 1 And Ruudukko(1,1) = (Not vuoro) + 1 And Ruudukko(0,2) = (Not vuoro) + 1) Then MakeError Chr(79 + (Not vuoro) * 9) + " voitti!"
            Next i
        Next a   
        DrawScreen
    Forever 
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
Bambi
Member
Posts: 87
Joined: Sat Nov 24, 2007 12:51 pm

Re: Tyhmät kysymykset (II/2009)

Post by Bambi »

Voisiko joku kertoa jotain teoriaa kartan satunnaisgeneroinnista? :D Oma aivokapasiteetti ei riitä keksimään jutun jujua. :P En hae valmista koodia, vaan ideoita miten toteuttaa esimerkiksi yksinkertainen pieni luolasto.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

Bambi wrote:Voisiko joku kertoa jotain teoriaa kartan satunnaisgeneroinnista? :D Oma aivokapasiteetti ei riitä keksimään jutun jujua. :P En hae valmista koodia, vaan ideoita miten toteuttaa esimerkiksi yksinkertainen pieni luolasto.
Itse lähtisin siitä, että latoisin karttaan luolaston ovet satunnaisille paikoille. Sitten heitellään kartalle joitain satunnaisia pisteitä, mihin ei missään nimessä tulisi polkua. Sitten reitinetsintää hyödyntäen ( foorumeilta löytyy koodia siihen) tehtäisiin polut niin, että ovelta ovelle kulkisi varmasti reitit. Tämän jälkeen polkujen varrelle satunnaisen kokoisia huoneita + risteileviä käytäviä ympäriinsä.

Tässä vielä pari linkkiä Mikefulin kirjoittamiin teksteihin dynaamisista peliympäristöistä ja karttojen generoinnista:
http://servut.us/mikeful/lataus/Dynaami ... ristot.pdf
http://servut.us/mikeful/lataus/Karttageneraattori.pdf

Lisäksi jotain esimerkkiä karttojen generoinnista löytyy Aavesoturin Knight of Faith lähdekoodista, joka on julkaistu esimerkkikoodit- osiossa.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

Olen niin onneton, että en keksi miten suoritan If ehtolauseen Timer funktiolle. :(

Yritykset:

If Timer()-start)/60000 > 60000 Then
//Täsä o kaikkee
EndIf

If Timer() > 60000 Then
//Täsä o kaikkee
EndIf

Tarkoitus siis olisi, että tuo kestää minuutin, mutta nuo ei toimi. :( Alempi hakkaa koko ajan tuota "//täsä o kaikkee" siinä. Edellisen sivun viimeisestä viestistä näkee miten Timer funkkari on käytössäni. Kiitos Tuxille. :)
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (II/2009)

Post by TheFish »

matti3 wrote:Olen niin onneton, että en keksi miten suoritan If ehtolauseen Timer funktiolle. :(

Yritykset:

If Timer()-start)/60000 > 60000 Then
//Täsä o kaikkee
EndIf

If Timer() > 60000 Then
//Täsä o kaikkee
EndIf

Tarkoitus siis olisi, että tuo kestää minuutin, mutta nuo ei toimi. :( Alempi hakkaa koko ajan tuota "//täsä o kaikkee" siinä. Edellisen sivun viimeisestä viestistä näkee miten Timer funkkari on käytössäni. Kiitos Tuxille. :)

Code: Select all

if (timer() - start) > 60000 then
CoolBasic henkilökuntaa
Kehittäjä
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

Tai näin:

Code: Select all

If Timer()>vali_aika Then
    //taha kaikkee
    vali_aika = Timer() // alustetaan vali_aika uudestaan , jotta tämä voisi toistua useammin
EndIf
Image
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (II/2009)

Post by TheFish »

phons wrote:Tai näin:

Code: Select all

If Timer()>vali_aika Then
    //taha kaikkee
    vali_aika = Timer() // alustetaan vali_aika uudestaan , jotta tämä voisi toistua useammin
EndIf
Paitsi että tuossa ratkaisussahan asiaa toistetaan koko ajan eikä minuutin päästä. Itse asiassa jos tuohon vali_aika:an ei aseta timer():ia suurempaa arvoa, olisi ihan sama jättää koko timeri pois. Eli sen pitäisi olla

Code: Select all

If Timer()>vali_aika Then
    //taha kaikkee
    vali_aika = Timer() + 60000// alustetaan vali_aika uudestaan , jotta tämä voisi toistua useammin
EndIf
CoolBasic henkilökuntaa
Kehittäjä
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

Kiitos. :)

Niin tähän ei vielä vastattu mitä hyötyä muistin varauksesta sitten on?


E. Ja myös miten voin testata läheisyyden? Esim jos ukko on tarpeeksi lähellä kukka puskaa ja painetaan Q nappulaa kukka puskasta tapahtuu jokin tapahtuma. yritin käyttää Distance ja Distance2 mutta ei toimineet kumpikaan. :o
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

matti3 wrote:Kiitos. :)

Niin tähän ei vielä vastattu mitä hyötyä muistin varauksesta sitten on?


E. Ja myös miten voin testata läheisyyden? Esim jos ukko on tarpeeksi lähellä kukka puskaa ja painetaan Q nappulaa kukka puskasta tapahtuu jokin tapahtuma. yritin käyttää Distance ja Distance2 mutta ei toimineet kumpikaan. :o
Ihan distance2 avulla onnistuu.
Paina Q tarpeeksi lähellä niin objekti b pomppaa uuteen paikkaan.

Code: Select all

a = LoadObject("Media\guy.bmp", 72)
b = LoadObject("Media\soldier.bmp")

Repeat
	MoveObject a, (UpKey() - DownKey()) * 3
	TurnObject a, (LeftKey() - RightKey()) * 3
	
	If (KeyHit(cbKeyQ) And Distance2(a, b) < 100) Then
		ScreenPositionObject b, Rand(0, ScreenWidth()), Rand(0, ScreenHeight())
	EndIf
	
	DrawScreen
Forever
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Viltzu »

matti3 wrote: E. Ja myös miten voin testata läheisyyden? Esim jos ukko on tarpeeksi lähellä kukka puskaa ja painetaan Q nappulaa kukka puskasta tapahtuu jokin tapahtuma. yritin käyttää Distance ja Distance2 mutta ei toimineet kumpikaan. :o
Kyllä Distancen ja Distancen2 pitäisi toimia. Muista vain käyttää # merkkiä muuttujassa, eli liukuluku, koska Distance palauttaa desimaaleina.
User avatar
Bambi
Member
Posts: 87
Joined: Sat Nov 24, 2007 12:51 pm

Re: Tyhmät kysymykset (II/2009)

Post by Bambi »

Miksi FPS laskee tarpeeksi monta kertaa entteriä painettuna jonnekkin 7 tienoille ja heittää mavin?

Code: Select all

SCREEN 600,400

tileset = LoadImage("Media\tileset.bmp")

Repeat 
    If KeyHit(cbkeyreturn) Then MakeWorld(tileset)

    DrawGame 
    Color cbred
    Text 0,0,"FPS: "+FPS()+", press return"
    DrawScreen
Forever 

Function MakeWorld(tileset)
    kartta = MakeMap(32,32,32,32)
    PaintObject kartta,tileset
    
    ax = Rand(1,MapWidth())
    ay = Rand(1,MapHeight())
    EditMap kartta,3,ax,ay,1
    
    For y=1 To MapHeight()
    For x=1 To MapWidth()
        If GetMap2(3,x,y) = 1 Then 
            EditMap kartta,0,x,y,5
        Else
            EditMap kartta,0,x,y,145
        EndIf
    Next x
    Next y
    
    Return 0
EndFunction 
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Viltzu »

Bambi wrote:Miksi FPS laskee tarpeeksi monta kertaa entteriä painettuna jonnekkin 7 tienoille ja heittää mavin?
[/code]
Jos se laskee niin paljon sen takia koska eikö silloin tuo "maailma" tehdä monta kertaa jos entteriä painelee monta kertaa?
User avatar
Bambi
Member
Posts: 87
Joined: Sat Nov 24, 2007 12:51 pm

Re: Tyhmät kysymykset (II/2009)

Post by Bambi »

Viltzu wrote:
Bambi wrote:Miksi FPS laskee tarpeeksi monta kertaa entteriä painettuna jonnekkin 7 tienoille ja heittää mavin?
[/code]
Jos se laskee niin paljon sen takia koska eikö silloin tuo "maailma" tehdä monta kertaa jos entteriä painelee monta kertaa?
Mutta se FPS pysyy siellä pohjassa, eikä nouse takas normaaliin. :F
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (II/2009)

Post by phons »

Viltzu wrote:
Bambi wrote:Miksi FPS laskee tarpeeksi monta kertaa entteriä painettuna jonnekkin 7 tienoille ja heittää mavin?
[/code]
Jos se laskee niin paljon sen takia koska eikö silloin tuo "maailma" tehdä monta kertaa jos entteriä painelee monta kertaa?
CB:n helppi wrote:Kun uusi tilekartta luodaan niin edellinen poistetaan automaattisesti
tai jotain sinne päin... Mutta ei se kyllä mitään MAVia heitä... Ja jos sen kerran tekee niin ei se sitä laske ja näen, että teet nyt sitä satunnaisgeneraattoria, niin etkös tarvitse vain yhden kartan?
Image
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: Tyhmät kysymykset (II/2009)

Post by KilledWhale »

Bambi wrote:Miksi FPS laskee tarpeeksi monta kertaa entteriä painettuna jonnekkin 7 tienoille ja heittää mavin?
Itse en mavia saanut aikaan mutta vaikka cb:n pitäisi poistaa kartta se ei tunnu tekevän sitä. Eli vanha kartta talteen esim globaaliin muuttujaan ja deleteobjectilla poistat sen ennen uuden luontia.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Feuer »

Hmm... Tuo cbSDK:n SetIniString ei vaikuta toimivan. Eli lohkoja tukeva inikirjoitusfunktio olisi hakusessa jälleen.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Herra Siili
Advanced Member
Posts: 308
Joined: Tue Nov 25, 2008 8:06 pm
Contact:

Re: Tyhmät kysymykset (II/2009)

Post by Herra Siili »

KilledWhale edellisellä sivulla wrote: ...Tässä vielä muutama funktio ini-tiedostojen lukuun jos vaikka näillä toimisi:
http://cbkk.systec.fi/koodi.php?id=213
EDIT:

Feuer wrote:
cbkk wrote:''Lukee halutun otsikon arvon .ini tiedostota halutun lohkon alta. ''
Tuota kyseisen funktion hienoutta olen täälläkin ihmetellyt, mutta tosiaan oli tarve kirjoittavalle funktiolle... Voin tunnustautua puolinoobiksi, mutta taitoni eivät riitä sellaisen kirjoittamiseen.
Tuota en huomannutkaan. :oops:[/edit]
Last edited by Herra Siili on Fri Jul 17, 2009 10:54 am, edited 2 times in total.
a.k.a. Gehock
matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 8:37 pm

Re: Tyhmät kysymykset (II/2009)

Post by matti3 »

Nyt on melko ongelma. :O

Pitäisi saada niin, että pelaaja saa päättää millainen pää hahmolla on, mutta se heittää jonkun syyn takia nappeja painaessa objectin nappi ja nappi_1 näyttöön miksi? :O

Code: Select all

    ClearText
    ShowObject nappi, OFF
    ShowObject nappi_1, OFF
    AddText "Ladataan hahmon luontia."
        DrawScreen
    hahmon_paa_2 = LoadObject("grafiikat/hahmon_paa_2.bmp", 1)
    hahmon_paa_1 = LoadObject("grafiikat/hahmon_paa_1.bmp", 1)
    nuoli_oik = LoadObject("grafiikat/nuoli_oik.bmp", 1)
    nuoli_vas = LoadObject("grafiikat/nuoli_vas.bmp", 1)
    paa = 1
    //mahdollinen soundi ladataan
    //mahdollinen soundi soitetaan
    
    PositionObject nuoli_oik, 100, 200
    PositionObject nuoli_vas, 0, 200
    ShowObject hahmon_paa_2, OFF
    ShowObject hahmon_paa_1, ON
    
    Repeat
        Text 0,200, "paa ON " +paa
        PositionObject hiiri, MouseWX(), MouseWY()
        If paa < 5 Then
            If MouseHit(1) And Distance2(hiiri, nuoli_oik) < 32 Then
                tan_hetke = paad
                ShowObject hahmon_paa_+tan_hetke, OFF
                ShowObject hahmon_paa_+paad, ON
                paad = paad + 1
            EndIf
        EndIf
        If paa > 4 Then
            paa = 4
        EndIf
        If paa > 0 Then
            If MouseHit(1) And Distance2(hiiri, nuoli_vas) < 32 Then
                tan_hetke = paad
                ShowObject hahmon_paa_+tan_hetke, OFF
                ShowObject hahmon_paa_+paad, ON
                paad = paad - 1
            EndIf
        EndIf
        If paa < 1 Then
            paa = 1
        EndIf
        DrawScreen
    Forever
Wait 4000
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini
Locked