Page 12 of 23

Re: Tyhmät kysymykset (I/2011)

Posted: Wed May 16, 2012 11:19 pm
by valscion
beginner wrote:Ei se oikein toimikaan...Nyt jokaiseen data-kerrokseen merkittyyn paikkaan kyllä ilmestyy vihu-objekti, mutta kun pääsilmukkaan laittaa esimerkiksi:

Code: Select all

For a=1 To 16
    MoveObject VIHUT(a),Rand(1,2)
Next a 
Niin kaikki muut vihut pysyvät paikallaan, paitsi tuon alkuperäisen "skannauksen" viimeisten koordinaattien kohdalta lähtee liikkeelle 16 vihulaisen jono. Mitähän ne 15 muuta paikoillaan pysyvää objektia sitten ovat? VIHUT() taulokossa on nimittäin vain tuo 16 solua.
Olet varmaan luonut aikaisemmin objekteja, joita et ole muistanut poistaa DeleteObjectilla. Nämä objektit ovat sitten jääneet "zombeiksi" niin, ettet pääse niihin oikein enää kunnolla käsiksi.

Re: Tyhmät kysymykset (I/2011)

Posted: Wed May 16, 2012 11:27 pm
by beginner
Mutta kun objekteja luodaan vain tuolla aiemmin mainitulla koodinpätkällä. :? Saavatkohan nuo sisäkkäiset for-silmukat aikaan sen, että jokaiseen data-kerrokseen merkittyyn kohtaan luodaan 16 objektia? Joista sitten vain nuo viimeiset 16 jäävät "eloon"?

Re: Tyhmät kysymykset (I/2011)

Posted: Thu May 17, 2012 12:30 am
by valscion
beginner wrote:Mutta kun objekteja luodaan vain tuolla aiemmin mainitulla koodinpätkällä. :? Saavatkohan nuo sisäkkäiset for-silmukat aikaan sen, että jokaiseen data-kerrokseen merkittyyn kohtaan luodaan 16 objektia? Joista sitten vain nuo viimeiset 16 jäävät "eloon"?
Joo itse asiassa näinhän se on. Et tarvitse sitä sisäkkäisintä for-looppia, vaan sinun täytyy vain pitää huolta että sitä i-muuttujaa kasvatetaan aina objektin luonnin jälkeen. Siis tältä koodisi tulisi näyttää:

Code: Select all

i = 1
For x=1 To MapWidth()
For y=1 To MapHeight()
    If GetMap2(3,x,y)=10 Then
        VIHUTx(i)=(x * 32 -ObjectSizeX(kartta) / 2)
        VIHUTy(i)=-(y * 32 - ObjectSizeY(kartta) / 2)
        VIHUT(i)=CloneObject (v)
        PositionObject VIHUT(i),VIHUTx(i),VIHUTy(i)
        VIHUTELOSSA(i)=1
        i = i + 1
    EndIf
Next y
Next x

Re: Tyhmät kysymykset (I/2011)

Posted: Thu May 17, 2012 12:40 am
by beginner
No nyt näyttää siltä kuin pitääkin :)

Re: Tyhmät kysymykset (I/2011)

Posted: Fri May 18, 2012 6:44 pm
by skorpioni-cb
Tää on varmaan aika advanced-kysymys, mutta kysympä kuitenkin, kuinka voin manipuloida byte-muuttujan bittejä, attelin tehä kato gif-kuvan kirjoittajan, jotta voin piilottaa jotain inhormaatiota kuvaan. Onko mitään hajua miten tämä tehdään.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri May 18, 2012 6:48 pm
by MetalRain
skorpioni-cb wrote:Tää on varmaan aika advanced-kysymys, mutta kysympä kuitenkin, kuinka voin manipuloida byte-muuttujan bittejä, attelin tehä kato gif-kuvan kirjoittajan, jotta voin piilottaa jotain inhormaatiota kuvaan. Onko mitään hajua miten tämä tehdään.
Tavuhan on 8 bitin setti ykkösiä ja nollia. Komennoilla shl, shr ja sar voit tehdä binäärisiirtoja luvuille. Esimerkiksi 1 SHL 2 vastaisi lukua 4 eli kun 0000 0001 siirretään kaksi kertaa vasemmalle saadaan 0000 0100 eli 4. Eli voit muodostaa joka tavun siten että summaat a(1) shl 8 + a(2) shl 7 + ... + a(7) shl 1 + a(8) shl 0 jos a on kahdeksan alkion mittainen 0 tai 1 numeron sisältävä taulukko. Tavun n:nnen arvon saa sitten selville siirtämällä bittejä siten yli molemmilta puolilta että ylimääräiset karsiutuu pois. En oo aivan varma käyttääkö cb kahden komplementtia mutta se varmaan selvenee jos tarkemmin alkaa tutkimaan.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri May 18, 2012 8:47 pm
by MrMonday
EDIT:

Anteeksi, nyt oli oma moka, olisin toki voinut katsoa hieman tarkemmin esimerkin ja plärätä dokumentaatiota, niin tämä olisi selvinnyt heti. Ehkäpä ensi kerralla perehdyn paremmin, niin ei tarvitse turhaa kysellä tyhmiä :oops: :roll:

Hei, aloitin tänään perehtymisen Jaren cbAStar-reitinhakukirjastoon, ja ongelmia ilmeni heti alku metreillä. Eli saan virheilmoituksen "Can't read from negative array index.", kun CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),Mouse()Y):in joku arvoista on negatiivinen. Eli jos objektin tai hiiren sijainti on funktiota kutsuttaessa alle nollan kummallakaan akselilla. Selkeä siis sinänsä, mutta sitä lähinnä kysyisin, että mikäli CalculatePath()-funktio ei huoli arvoltaan negatiivisia parametrejä, niin mikä olisi helpoin/järkevin tapa toteuttaa em. funktiolle kelpaavat parametrit? Kiitos jo etukäteen kaikille :D

Code: Select all

If MouseUp(1) Then
    path = CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),MouseY())
EndIf
OffTopic: Ajattelin jatkaa sittemmin jäätynyttä Discord-peliäni, ja tahdon siihen ehdottomasti hiiriohjauksen (ja muitakin toimintoja myös hiirelle), ja siksi siis olen kiinnostunut tästä mainiosta kirjastosta.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri May 18, 2012 9:32 pm
by skorpioni-cb
MrMonday wrote:Hei, aloitin tänään perehtymisen Jaren cbAStar-reitinhakukirjastoon, ja ongelmia ilmeni heti alku metreillä. Eli saan virheilmoituksen "Can't read from negative array index.", kun CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),Mouse()Y):in joku arvoista on negatiivinen. Eli jos objektin tai hiiren sijainti on funktiota kutsuttaessa alle nollan kummallakaan akselilla. Selkeä siis sinänsä, mutta sitä lähinnä kysyisin, että mikäli CalculatePath()-funktio ei huoli arvoltaan negatiivisia parametrejä, niin mikä olisi helpoin/järkevin tapa toteuttaa em. funktiolle kelpaavat parametrit? Kiitos jo etukäteen kaikille :D

Code: Select all

If MouseUp(1) Then
    path = CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),MouseY())
EndIf
OffTopic: Ajattelin jatkaa sittemmin jäätynyttä Discord-peliäni, ja tahdon siihen ehdottomasti hiiriohjauksen (ja muitakin toimintoja myös hiirelle), ja siksi siis olen kiinnostunut tästä mainiosta kirjastosta.
ÄIJÄIJÄI EI MAAILMAKOORDINAATTEJA OBJEKTILLE.
Siis oikeasti, käytä objektien ruutukoordinaatteja ettei mene negatiiviseksi, voin antaa mun strategiapeliapistani avun sulle tähän :D

Re: Tyhmät kysymykset (I/2011)

Posted: Fri May 18, 2012 9:42 pm
by Latexi95
skorpioni-cb wrote:
MrMonday wrote:Hei, aloitin tänään perehtymisen Jaren cbAStar-reitinhakukirjastoon, ja ongelmia ilmeni heti alku metreillä. Eli saan virheilmoituksen "Can't read from negative array index.", kun CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),Mouse()Y):in joku arvoista on negatiivinen. Eli jos objektin tai hiiren sijainti on funktiota kutsuttaessa alle nollan kummallakaan akselilla. Selkeä siis sinänsä, mutta sitä lähinnä kysyisin, että mikäli CalculatePath()-funktio ei huoli arvoltaan negatiivisia parametrejä, niin mikä olisi helpoin/järkevin tapa toteuttaa em. funktiolle kelpaavat parametrit? Kiitos jo etukäteen kaikille :D

Code: Select all

If MouseUp(1) Then
    path = CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),MouseY())
EndIf
OffTopic: Ajattelin jatkaa sittemmin jäätynyttä Discord-peliäni, ja tahdon siihen ehdottomasti hiiriohjauksen (ja muitakin toimintoja myös hiirelle), ja siksi siis olen kiinnostunut tästä mainiosta kirjastosta.
ÄIJÄIJÄI EI MAAILMAKOORDINAATTEJA OBJEKTILLE.
Siis oikeasti, käytä objektien ruutukoordinaatteja ettei mene negatiiviseksi, voin antaa mun strategiapeliapistani avun sulle tähän :D
Mutta meneväthän nekin miinuksen puolelle kun objekti on ruudun ulkopuolella. En tosin osaa sanoa vaikuttaako se tässä projektissa, mutta kuitenkin...

Re: Tyhmät kysymykset (I/2011)

Posted: Fri May 18, 2012 9:47 pm
by naputtelija
MrMonday wrote:Hei, aloitin tänään perehtymisen Jaren cbAStar-reitinhakukirjastoon, ja ongelmia ilmeni heti alku metreillä. Eli saan virheilmoituksen "Can't read from negative array index.", kun CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),Mouse()Y):in joku arvoista on negatiivinen. Eli jos objektin tai hiiren sijainti on funktiota kutsuttaessa alle nollan kummallakaan akselilla. Selkeä siis sinänsä, mutta sitä lähinnä kysyisin, että mikäli CalculatePath()-funktio ei huoli arvoltaan negatiivisia parametrejä, niin mikä olisi helpoin/järkevin tapa toteuttaa em. funktiolle kelpaavat parametrit? Kiitos jo etukäteen kaikille :D

Code: Select all

If MouseUp(1) Then
    path = CalculatePath(ObjectX(obj),Objecty(obj),MouseX(),MouseY())
EndIf
OffTopic: Ajattelin jatkaa sittemmin jäätynyttä Discord-peliäni, ja tahdon siihen ehdottomasti hiiriohjauksen (ja muitakin toimintoja myös hiirelle), ja siksi siis olen kiinnostunut tästä mainiosta kirjastosta.
Möh tämä onkin ongelma mutta suosittelisin väsäämään jonkin kääntöfunktion joka kääntää pelikoordinaatit kuvitteellisen taulukon (jolla on alkupiste sopivan kaukana pelimaailman vasemmassa yläkulmassa) koordinaateiksi. Esim:
Jos pelimaailmasi on 100*100 pikselin kokoinen (mitä se ei missään järkevässä maailmassa ole).

Kun käsitellään objektia, muunnat objektin pelimaailmasijainnin (objekti maailmakoordinaateissa 0,0 --> taulukossa 50,50.)
Tässä siis pitää olla tiedossa "taulukon" leveys ja korkeus.

Code: Select all

Function MuunnaX(pelimailmax,taulukonleveys)
    taulukkox=taulukonleveys/2+pelimaailmax
    Return taulukkox
End Function
Function MuunnaY(pelimailmay,taulukonkorkeus)
    taulukkoy=taulukonkorkeus/2+pelimaailmay
    Return taulukkoy
End Function
Esim. -20,-15 muuttuisi 30,35:ksi.

Nyt tiedät objektin kuvitteellisen taulukkosijainnin (vrt. ScreenPositionObject), voit välittää sen funktiolle ilman ongelmia. Hiiren koordinaatit eivät voi olla negatiivisia, koska ne ovat näyttökoordinaatteja. En nyt tiedä miten AStar toimii, mutta jos haluat muuttaa takaisin objektikoordinaateiksi objektien uuden sijainnin piirtämistä varten teet vain homman toisinpäin. Näin ei ongelmia pääse tulemaan, kunhan teet taulukosta tarpeeksi ison (joitakin tuhansia sopii hyvin.)

Taulukkoahan ei oikeassa coolbasicissa tarvitse luoda, sehän on vain kuvitteellinen. Toivottavasti osasin selittää tarpeeksi selvästi.

Re: Tyhmät kysymykset (I/2011)

Posted: Sat May 19, 2012 3:13 pm
by DJ-Filbe
Videon toisto ei onnistu. Video lähtee pyörimään niin, että äänestä kuuluu noin puoli sekuntia (näyttö mustana) ja sitten kaikki pysähtyy. Tämä siis CB:n manuaalin koodilla.
Video tehty MovieMakerilla (2.6)

Re: Tyhmät kysymykset (I/2011)

Posted: Sun May 20, 2012 5:19 pm
by MaGetzUb
DJ-Filbe wrote:Videon toisto ei onnistu. Video lähtee pyörimään niin, että äänestä kuuluu noin puoli sekuntia (näyttö mustana) ja sitten kaikki pysähtyy. Tämä siis CB:n manuaalin koodilla.
Video tehty MovieMakerilla (2.6)
Mikähän tiedostoformaatti mahtaa olla kyseessä?

Re: Tyhmät kysymykset (I/2011)

Posted: Thu May 24, 2012 12:58 pm
by aloittelijamies
MaGetzUb wrote:
DJ-Filbe wrote:Videon toisto ei onnistu. Video lähtee pyörimään niin, että äänestä kuuluu noin puoli sekuntia (näyttö mustana) ja sitten kaikki pysähtyy. Tämä siis CB:n manuaalin koodilla.
Video tehty MovieMakerilla (2.6)
Mikähän tiedostoformaatti mahtaa olla kyseessä?
Olettaisin, että wmv.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 08, 2012 8:37 pm
by MrMonday
Kertokaapas nyt, arvoisa foorumin väki, että miten saan toteutettua kahden pallon törmäyksen jälkeisen kimpoamisen, siis siten, että kun pallo A törmää pallo B:hen, niin nämä kimpoaisivat toisistaan oikeisiin suuntiin. Eli aivan kuten biljardissa pallot kimpoavat toisistaan törmätessään. Jostain syystä ei vaan aivot toimi, vaikka ratkaisu onkin varmasti hyvin simppeli :roll:

Kiitos jo etukäteen :)

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 08, 2012 9:55 pm
by Feuer
Tuota olen minäkin säätänyt useamman päivän tällä viikolla! Arvostaisin todellakin jos joku osaisi selittää MAB- ja peruskoulufyssapohjaiselle koodarille miten kaksiulotteisten ympyröiden pitäisi käyttäytyä törmätessään!

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Jun 08, 2012 11:16 pm
by legend
MrMonday wrote:Kertokaapas nyt, arvoisa foorumin väki, että miten saan toteutettua kahden pallon törmäyksen jälkeisen kimpoamisen, siis siten, että kun pallo A törmää pallo B:hen, niin nämä kimpoaisivat toisistaan oikeisiin suuntiin. Eli aivan kuten biljardissa pallot kimpoavat toisistaan törmätessään. Jostain syystä ei vaan aivot toimi, vaikka ratkaisu onkin varmasti hyvin simppeli :roll:

Kiitos jo etukäteen :)
Uskoisin että ratkaisu ei ole kovin simppeli :?
Itse olen aina päätynyt yksinkertaiseen ympyrän törmäys metodiin. Pallojen neurat ovat törmäys hetkessä tasaisia :D

Code: Select all

  
    SCREEN 400,300
    FrameLimit 60
    
    x# = 50
    y# = 150
    x2# = 350
    y2# = 150   
    angle# = 0
    angle2# = 180
    speed# = 3
    speed2# = 6
    rad# = 6
    rad2# = 6
    
    Repeat
        
        x# = x# + Cos(angle#) * speed#
        y# = y# - Sin(angle#) * speed#
        x2# = x2# + Cos(angle2#) * speed2#
        y2# = y2# - Sin(angle2#) * speed2#
        
        speed# = Max(speed# - 0.03,0)
        speed2# = Max(speed2# - 0.03,0)
        
        If Distance(x#,y#,x2#,y2#) <= rad#/2+rad2#/2
            
            If o=0
                o = 1
            
                nspeed# = speed#/6+speed2#/4
                nspeed2# = speed2#/6+speed#/4
                speed# = nspeed#
                speed2# = nspeed2#
                
                //nangle# = ((180-angle#)+angle2#)/2
                //nangle2# = ((180-angle2#)+angle#)/2
                nangle# =  ((180-angle#)+angle2#)/2
                nangle2# = ((180-angle2#)+angle#)/2
                angle# = nangle#
                angle2# = nangle2#
            EndIf
            
        Else
            o=0
        EndIf
    
        Color 54,160,32
        Circle x#-rad#/2, y#-rad#/2,rad#
        Text 10,10, Str(speed#)
        Color 32,64,160
        Circle x2#-rad2#/2, y2#-rad2#/2,rad2#
        Text 10,20, Str(speed2#)
        
        If GetKey() > 0
            If Rand(0,1) = 1
                i=Rnd(-40,40)
                a=Rnd(3,7)
                x# = 50
                y# = 150 
                x2# = 350
                y2# = 150
                angle# = 0+i
                angle2# = 180-i
                speed# = a
                speed2# = a
                rad# = 6
                rad2# = 6
            Else
                x# = 50
                y# = 150 
                x2# = 350
                y2# = 150
                angle# = 0
                angle2# = 180
                speed# = Rnd(0,7)
                speed2# = Rnd(0,7)
                rad# = 6
                rad2# = 6
            EndIf 
        EndIf
        
        
        
    
        DrawScreen
    Forever 
EDIT:

Pienellä googlauksella löytyi laskemistapa:
http://www.gamasutra.com/view/feature/3 ... urate_.php
Näyttää monimutkaiselta toteuttaa :(


Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jun 11, 2012 7:28 pm
by Laurenzo
Miten voi tehä sellase peli että hahmo liikkuu joystickilla?
oon just saanu joistiki

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jun 11, 2012 7:30 pm
by valscion
Laurenzo wrote:Miten voi tehä sellase peli että hahmo liikkuu joystickilla?
oon just saanu joistiki
DLL:llä, jonka joudut itse väsäämään. Tai sitten odotat että cbE tukee ilotikkuja ;)

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jun 11, 2012 7:49 pm
by axu
VesQ wrote:
Laurenzo wrote:Miten voi tehä sellase peli että hahmo liikkuu joystickilla?
oon just saanu joistiki
DLL:llä, jonka joudut itse väsäämään. Tai sitten odotat että cbE tukee ilotikkuja ;)
DLL:lä, jota et itse joudu väsäämään: viewtopic.php?f=12&t=507
En ole kyllä itse kokeillut tuon toimivuutta. Itse odotan, että cbE tukee ilotikkuja :D

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Jun 11, 2012 10:16 pm
by Wingman
CBIlo toimii kyllä, tein sillä joskus jotain jännää peliäkin jopa. Sen kehitys tosin loppui ilotikun hajoamiseen ;D