Tyhmät kysymykset (I/2012)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post 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.
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
beginner

Re: Tyhmät kysymykset (I/2011)

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

Re: Tyhmät kysymykset (I/2011)

Post 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
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
beginner

Re: Tyhmät kysymykset (I/2011)

Post by beginner »

No nyt näyttää siltä kuin pitääkin :)
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset (I/2011)

Post 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.
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2011)

Post 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.
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: Tyhmät kysymykset (I/2011)

Post 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.
Last edited by MrMonday on Sat May 19, 2012 12:42 am, edited 1 time in total.
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

Re: Tyhmät kysymykset (I/2011)

Post 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
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post 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...
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2011)

Post 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.
<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...
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2011)

Post 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)
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2011)

Post 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ä?
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
aloittelijamies
Newcomer
Posts: 45
Joined: Fri Nov 18, 2011 9:55 pm

Re: Tyhmät kysymykset (I/2011)

Post 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.
MrMonday
Advanced Member
Posts: 378
Joined: Fri Oct 10, 2008 2:35 pm

Re: Tyhmät kysymykset (I/2011)

Post 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 :)
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (I/2011)

Post 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!
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2011)

Post 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 :(

User avatar
Laurenzo
Member
Posts: 85
Joined: Mon Apr 25, 2011 8:28 am
Location: Tampere
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Laurenzo »

Miten voi tehä sellase peli että hahmo liikkuu joystickilla?
oon just saanu joistiki
Aloittelija koodari joka
osaa jo jotain (ehkä) :)
KOTISIVU
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post 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 ;)
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
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: Tyhmät kysymykset (I/2011)

Post 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
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2011)

Post by Wingman »

CBIlo toimii kyllä, tein sillä joskus jotain jännää peliäkin jopa. Sen kehitys tosin loppui ilotikun hajoamiseen ;D
- - - -
Locked