Tyhmät kysymykset (I/2010)

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/2010)

Post by Awaclus »

DumBasZ wrote:Minulla on funktiossa muuttujassa tekstiä, mutta se ei tule ruudulle näkyviin. Kaikki muu funktiossa oleva toimii, tekstiä lukuun ottamatta.
Oletko varma, että muuttujasi on tyyppiä String?
oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari »

en saa tuota scriptiä toimimaan haluutko että lähetän sourcen ja kerrot missä vika?
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by SPuntte »

DumBasZ wrote:Minulla on funktiossa muuttujassa tekstiä, mutta se ei tule ruudulle näkyviin. Kaikki muu funktiossa oleva toimii, tekstiä lukuun ottamatta.
Jos ilmaisisit asian vähän tarkemmin, olisi huomattavasti helpompi yrittää heittää hatusta valistuneita arvauksia ongelmasi syistä.

Todennäköisesti yrität siis tulostaa tekstiä näytölle. Tai ainakaan ilman sitä teksti ei tule näytöllä näkymään. Riippuen tulostuskomennosta teksti piirtyy joko suoraan näytölle tai näyttöpuskuriin, joka piirretään näytölle DrawScreenillä.

Mikäli tulostuskomento on...
- Print, piirtyy teksti suoraan näytölle, ja yksikin DrawScreen sen jälkeen pyyhkii tekstin välittömästi pois.
- Text, näkyy teksti heti DrawScreen-kutsun jälkeen. Se kuitenkin katoaa seuraavan DrawScreenin kohdalla, mikäli Text-komentoa ei suoriteta uudestaan joka keralla.
- AddText, säilyy teksti näytöpuskurissa siihen asti, kun komennetaan ClearText. Tosin AddText'illä lisättykin teksti vaatii DrawScreenin ilmestyääkseen näkyviin.

Mikäli edellinen ei tuonut ratkaisua, tarkista seuraavat asiat:
- merkkijonomuuttuja tulee määritellä erityisesti merkkijonotyyppiseksi joko lisämällä muuttujan perään $-merkki tai käyttämällä Dim...As -rakennetta (Dim munMerkkijono As String).

- Mikäli muuttuja on alustettu funktion ulkopuolella, se näkyy funktiossa vain, jos se on määritelty globaaliksi (Global gMunMerkkijono As String). Poikkeuksena parametrina välitetyt arvot, joiden tyypit tulee myös määritellä (Function -avainsanan jälkeisessä parametrilistassa) edellisessä kohdassa kuvatulla tavalla. HUOM! Globaalin muuttujan perään ei saa merkitä tyyppitunnistetta (%, # tai $).

- mikäli Force Variable Declaration (Project-valikossa) on pois päältä (oletus), CB ei valita mahdollisista määrittelemättömistä ja väärin kirjoitetuista muuttujanimistä. Tarkista oikeinkirjoitus ja tyyppimäärittelyt.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari »

voisiko joku ystävällisesti tarkistaa tän ja kertoo miten mun pitää jatkaa että saan tän nii et "pelihahmo" törmää kaikkeen mustaan ja siniseen "mapissa".

Code: Select all

ClsColor cbwhite

SCREEN 800,600
SetWindow "cb rpg",0, "like you have something better To do!"

FrameLimit 40

mappi=LoadImage("media\rpgmappi1.png")

ukko=LoadObject("media\ukkeli1.png",180)
ShowObject ukko,OFF
ObjectString ukko, player

pelihahmo=CloneObject(ukko)
PositionObject pelihahmo, -50,0


Repeat

DrawImage mappi, 0, 0

If UpKey() Then MoveObject pelihahmo, 5 
If DownKey() Then MoveObject pelihahmo, -5 
If LeftKey() Then TurnObject pelihahmo, 5
If RightKey() Then TurnObject pelihahmo, -5

objAngle = ObjectAngle(pelihahmo)
objX = ObjectX(pelihahmo) + Cos(objAngle) * ObjectSizeX(pelihahmo)
objY = ObjectY(pelihahmo) + Sin(objAngle) * ObjectSizeY(pelihahmo)

PickImageColor mappi, objx, objy
If getRGB(RED) = 0 And getRGB(GREEN) = 0 And getRGB(BLUE) = 255 Then
    move = False
Else
    move = True
EndIf

"tästä eteenpäin en tiedä mitä tehdä...

DrawScreen

Until EscapeKey()
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain »

oblivios_tha_koodari wrote:voisiko joku ystävällisesti tarkistaa tän ja kertoo miten mun pitää jatkaa että saan tän nii et "pelihahmo" törmää kaikkeen mustaan ja siniseen "mapissa".
Vaikka näin:

Code: Select all

SCREEN 800,600

//tässä vain luodaan kuva kun en tiedä millaista tarvit
mappi=MakeImage(800,600)
DrawToImage mappi
Color cbwhite 
Box 0,0,800,600,1

For i=0 To 10
    x=Rand(800)
    y=Rand(600)
    Color 0,0,Rand(1)*255
    Box x,y,50,50,1
Next i

DrawToScreen


ukko=LoadObject("media\guy.bmp",180)
ShowObject ukko,OFF
ObjectString ukko, player

pelihahmo=CloneObject(ukko)


Repeat
    
    //itselläni coolbasic ei suostu piirtämään ruudunkokoisia kuvia koordinaatteihin 0,0
    DrawImage mappi, 1, 0
    
    //muuttujaan tallennetaan liikkumisen tarve
    move=(UpKey()-DownKey())*5
    
    //käännetään yhdellä komennolla
    TurnObject pelihahmo, (LeftKey()-RightKey())*5
    
    ang#=ObjectAngle(pelihahmo)
    
    //poimitaan ukkelin edestä, muistetaan muuntaa maailmakoordinaatit ruutukoordinaateiksi
    PickImageColor mappi,ObjectX(pelihahmo)+ScreenWidth()/2+Cos(ang#)*move,-ObjectY(pelihahmo)+ScreenHeight()/2-Sin(ang#)*move
    
    //Jos punainen ja vihreä nollissa niin törmätään, sinisen arvolla ei väliä.
    //Ei jäädä jumiin, koska törmäys tarkistetaan ennenkuin liikutaan tarvittava määrä,
    //muussa tapauksessa nollataan liikkumisen tarve
    If getRGB(RED) = 0 And getRGB(GREEN) = 0 Then move = 0 Else MoveObject pelihahmo, move

    DrawScreen

Until EscapeKey()
Eli muuten olit hienosti ohjeita noudattanut, mutta et ollut liittänyt pelihahmon liikumiseen liittyviä komentoja mitenkään juuri luomaasi törmäystarkistukseen.
oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari »

kitti mutta tuli taas ongelma vastaan...
se mun hahmo jää aina seinien sisään ja sitte se ei reagoi mitenkään siniseen vaikka mitä kokeilin...

no ehkä koitan tehä aluks jotain simppelimpää niinku jonku point and click pelin...
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2010)

Post by legend »

oblivios_tha_koodari wrote:kitti mutta tuli taas ongelma vastaan...
se mun hahmo jää aina seinien sisään ja sitte se ei reagoi mitenkään siniseen vaikka mitä kokeilin...

no ehkä koitan tehä aluks jotain simppelimpää niinku jonku point and click pelin...
Älä ny luovuta, minulla se ei jäänyt seiniin kiinni, kokeilleppa vielä ohjelma...
oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari »

taidan tietää miks se jää seiniin kiinni...
ku se mun pelihahmo o semmone et siin o kolme palloa ja sit ku tietyssä kulmassa menee kohti seinää se jää kiinni siihen
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Hmm..
Olikohan CB:ssä ollut mahdollista tehdä sisäkkäisiä funktioita?
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

DJ-Nerd wrote:Hmm..
Olikohan CB:ssä ollut mahdollista tehdä sisäkkäisiä funktioita?
Jos tarkoitat funktiota, joka kutsuu funktiota, luonnollisesti. Muuta järkevää merkitystä en tuolle oikeastaan keksikään, sisäkkäin määrittelystä ei hyötyisi kuin näkyvyysalueiden verran ja koodi olisi todennäköisesti jokseenkin sekavaa.
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

koodaaja wrote:
DJ-Nerd wrote:Hmm..
Olikohan CB:ssä ollut mahdollista tehdä sisäkkäisiä funktioita?
Jos tarkoitat funktiota, joka kutsuu funktiota, luonnollisesti. Muuta järkevää merkitystä en tuolle oikeastaan keksikään, sisäkkäin määrittelystä ei hyötyisi kuin näkyvyysalueiden verran ja koodi olisi todennäköisesti jokseenkin sekavaa.
Tarkoitin sisäkkäinmäärittelyä...
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

Ei ole mahdollista. Ja sen logiikka on muutenkin hämyinen - voiko funktion sisällä määriteltyä funktiota kutsua vain ulomman sisältä ja mitä ylipäänsä tapahtuu funktioita kutsuttaessa.
hybrid
Newcomer
Posts: 18
Joined: Sun Apr 18, 2010 5:24 pm

Re: Tyhmät kysymykset (I/2010)

Post by hybrid »

Osaisiko joku neuvoa kuinka spatial hashing tekniikan saa implementoitua CoolBasiciin.
Olen katsonut neuvoa oheisesta linkistä, mutta tuntuu että taulukko tyypit eivät vain taivu tuohon. C++ homma olisi helppoa mutta en osaa vielä käyttää kaikki CoolBasicin kikkoja.
http://conkerjo.wordpress.com/2009/06/1 ... ollisions/

Toinen kysymys liittyy miten alentaa gravitaation mallinnuksen kompleksisuus luokkaa O((n^2)/2 -n ). Brute force ei jaksa 150 kappaletta enempää pyörittää. Kiihtyvyyksien päivitys vain kuin on muulta laskennalta aikaa kävi mielessä mutta tämä johtaisi tyhmiin ongelmiin kuten kuun karkaamiseen planeetalta ainakin kone nykäisee.

Ohessa yksinkertaistetty malli fysiikka moottorista ja demona tatteja paino voimalla + törmäystarkistuksella.
const maxromu arvoa säätämällä huomaa että kovin on rajoitettu bruteforce.

Code: Select all

FrameLimit 40
SCREEN 800,600,0,1
Type romu
    Field obj
    Field massa As Integer
    Field suuntaX As Float
    Field SuuntaY As Float
    Field sade As Integer
    Field kimmo As Float
End Type
Randomize Timer()
tatti = LoadObject("media/tatti.bmp")
tattisade As Float = ((ObjectSizeX(tatti) + ObjectSizeY(tatti)) Shr 2)
ShowObject tatti,OFF
Const maxromut = 100
For i = 1 To Maxromut
    Gosub satunnaisromu
Next i
Const gra = 0.01
Repeat
    ClearText
    AddText "FPS:" +FPS()
    For iromu.romu= Each romu
        TranslateObject iromu\obj, iromu\suuntaX, iromu\suuntaY        
        Gosub romufysiikka
    Next iromu
    DrawScreen ON,ON
Until KeyHit(1) 
'tuhoa objektit ja new varatut jutut
For iromu.romu= Each romu
    DeleteObject iromu\obj
    Delete iromu
Next iromu    
ClearObjects
End

satunnaisromu:
    newromu.romu= New(romu)  
    newromu\obj=CloneObject(tatti)                 
    newromu\sade = tattisade
    newromu\massa = tattisade*tattisade*tattisade
    TranslateObject newromu\obj, Rnd(-300,300),Rnd(-300,300)
    newromu\suuntaX = Rnd(-1,1)
    newromu\suuntay = Rnd (-1,1)
    newromu\kimmo = 0.85
Return

romufysiikka:
'Alkuperäiskoodista kiitos SPUNTE:lle
'lisätty gravitaatio ja optimoitu hieman 
For jromu.romu= Each romu
    If jromu > iromu Then           
        x# = ObjectX(jromu\obj) - ObjectX(iromu\obj)
        y# = ObjectY(jromu\obj) - ObjectY(iromu\obj)
        rsumma# = iromu\sade + jromu\sade   //Pallojen säteiden summa
        etaisyys# = x#*x# + y#*y#
        jana# = Sqrt(etaisyys#)        
        If jana# <= rsumma# Then                
            inopeus# = (iromu\suuntaX*x# + iromu\suuntaY*y#)/jana# //Pallojen nopeudet projisoituna yhdysjanavektorille
            jnopeus# = (jromu\suuntaX*x# + jromu\suuntaY*y#)/jana#
            nopeuserotus# = inopeus# - jnopeus# //Pallojen suhteellisen nopeuden yhdysjanan suuntainen komponentti               
            //Tarkistetaan, liikkuvatko pallot toisiaan kohti (suhteellinen nopeus positiivinen)
            If nopeuserotus# > 0 Then                                      
                kimmot# = iromu\kimmo*jromu\kimmo //Pallojen yhdistetty kimmokerroin
                //Uusi nopeus laskettuna liikemäärän säilymislain ja restituutiokertoimen avulla
                vn1# = (iromu\massa*inopeus# + jromu\massa*jnopeus# - jromu\massa*kimmot#*nopeuserotus#)/(iromu\massa + jromu\massa)
                vn2# = (iromu\massa*inopeus# + jromu\massa*jnopeus# + iromu\massa*kimmot#*nopeuserotus#)/(iromu\massa + jromu\massa)                  
                unitX# = x#/jana# //Yhdysjanan suuntainen yksikkövektori
                unitY# = y#/jana#
                v1diff# = vn1# - inopeus# //Nopeuksien erotus ennen ja jälkeen törmäyksen (skalaari)
                v2diff# = vn2# - jnopeus#
                iromu\suuntaX = iromu\suuntaX + (v1diff#*unitX#)
                iromu\suuntaY = iromu\suuntaY + (v1diff#*unitY#)
                jromu\suuntaX = jromu\suuntaX + (v2diff#*unitX#)
                jromu\suuntaY = jromu\suuntaY + (v2diff#*unitY#)
            EndIf
        Else         
            unitX# = x# / jana#
            unitY# = y# / jana#
            g1dx# = unitX# * (Gra * jromu\massa) / etaisyys#
            g1dy# = unitY# * (Gra * jromu\massa) / etaisyys#
            g2dx# = -unitX# * (Gra * iromu\massa) / etaisyys#
            g2dy# = -unitY# * (Gra * iromu\massa) / etaisyys#
            iromu\suuntaX = iromu\suuntaX + g1dx# 
            iromu\suuntaY = iromu\suuntaY + g1dy#
            jromu\suuntaX = jromu\suuntaX + g2dx#
            jromu\suuntaY = jromu\suuntaY + g2dy#
       EndIf                             
    EndIf
Next jromu
Return
Myös optimointi kooditasolla auttaa mutta lähinnä algoritmitason parannuksia tässä kaivataan.
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by SPuntte »

Mielenkiintoisia kysymyksiä hybridiltä...
hybrid wrote:Osaisiko joku neuvoa kuinka spatial hashing tekniikan saa implementoitua CoolBasiciin.
Olen katsonut neuvoa oheisesta linkistä, mutta tuntuu että taulukko tyypit eivät vain taivu tuohon. C++ homma olisi helppoa mutta en osaa vielä käyttää kaikki CoolBasicin kikkoja.
http://conkerjo.wordpress.com/2009/06/1 ... ollisions/
Itse yritin toteuttaa täsmälleen samaa systeemiä, ja se jossain määrin toimikin, mutta lopulta koko systeemi kaatui outohin virheilmoituksiin, joiden syyksi epäilen CB:tä, en niinkään koodiani.

En pastea koko koodiani tähän, koska se ei toimi, mutta ideoita voin antaa. Itse yhdistelin tyyppejä ja muistipaloja, jotka korvasivat dynaamiset taulukot. Tiivistetaulu (hash table), jota käsittelin tyyppi-instanssina, sisältää muistipalassa kaikki tilaruudukon solut (jotka ovat tyyppi-instansseja) peräkkäin. Solut tottelevat linkkaamassasi artikkelissa siis nimeä kori (bucket).

Vastaavasti korissa on muistipala, joka sisältää kaikki solussa sijaitsevat kappaleet (niiden tyyppi-instanssien id:t). Kun hash table päivitetään, kannattaa myös listata kappaleiden tiedot minkä kaikkien solujen alueella objekti on ja/tai mitä muita kappaleita näissä soluissa, jolloin on nopeaa tarkistaa, onko kappale a kappaleen b kanssa samassa solussa.

Koko homman pointti piilee siinä, että muistipalan sisältöön voi viitata samaan tapaan lineaarisesti kuin yksiulotteiseen taulukkoon, jolloin siihen voi tiivistää (hashata) 2D-ruudukon.
hybrid wrote:Toinen kysymys liittyy miten alentaa gravitaation mallinnuksen kompleksisuus luokkaa O((n^2)/2 -n ). Brute force ei jaksa 150 kappaletta enempää pyörittää. Kiihtyvyyksien päivitys vain kuin on muulta laskennalta aikaa kävi mielessä mutta tämä johtaisi tyhmiin ongelmiin kuten kuun karkaamiseen planeetalta ainakin kone nykäisee.
Valitettavasti tuohon ei ole ratkaisua, mikäli et halua karsia simulaation realistisuudesta. Analyyttisesti homma ei onnistu, kuten täältäkin ilmenee. Spatial hashing -tekniikan avulla olisi toki mahdollista rakentaa approksimaatio, jossa poimitaan vain riittävän pienellä etäisyydellä olevat kappaleet ja lasketaan ainoastaan niiden aiheuttamat vetovoimat.

Ja noin huomiona demostasi voisin sanoa, että tarvitset impulssien lisäksi (ne hoitavat kimmoisat törmäykset, kun nopeutta on riittävästi) jonkin algoritmin, joka estää kappaleita vajoamasta toisiinsa.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
hybrid
Newcomer
Posts: 18
Joined: Sun Apr 18, 2010 5:24 pm

Re: Tyhmät kysymykset (I/2010)

Post by hybrid »

Kiitos vastauksesta, sain jonkin verran uusia ideoita.
http://en.wikipedia.org/wiki/Fast_multipole_method
Löysin vielä gravitaation mallintamiseen uuden metodin. Tuosta voisi saada apua mutta vaikuttaa liki mahdottomalta coolBasicille ja loppujen lopuksi toimisi vain aproksimaationa vaikkakin hyvänä sellaisena.
User avatar
skinkken
Advanced Member
Posts: 453
Joined: Sat Sep 01, 2007 4:00 pm
Location: Helsinki

Re: Tyhmät kysymykset (I/2010)

Post by skinkken »

Code: Select all

SCREEN 800,600,32,1

FrameLimit 30


Dim unit(200)
'''''''''''''''''''TÄMÄ ON ALLA OLEVAN TILALLA KOSKA KENTTA.PNG:TÄ EI OLE MUILLA'''''''''''''''''''''''''
kentta=MakeImage(2400,600)
tausta=LoadImage("media/level.bmp")

DrawToImage kentta
    DrawImage tausta,0,0
    DrawImage tausta,800,0
    DrawImage tausta,1600,0
DrawToScreen
HotSpot kentta
'''''''''''''''''''TÄMÄ ON ALLA OLEVAN TILALLA KOSKA KENTTA.PNG:TÄ EI OLE MUILLA'''''''''''''''''''''''''


'kentta=LoadImage("files/kentta.png"):HotSpot kentta

kamera1kuva=MakeImage(800,600)
kamera2kuva=MakeImage(800,600)


Repeat
    
    
    
    DrawToWorld ON,ON,ON
        DrawImage kentta,0,0
    DrawToWorld OFF,OFF,OFF
    
    Gosub kamerat
    
    DrawScreen
Forever





kamerat:

    If LeftKey() Then kamera1-20
    If RightKey() Then kamera1+20
    If kamera1<-1000 Then kamera1=-1000
    If kamera1>1000 Then kamera1=1000
    PositionCamera kamera1,0
    UpdateGame
    DrawToImage kamera1kuva
        Cls
        DrawGame
    DrawToScreen
    
    If KeyDown(cbkeya) Then kamera2-20
    If KeyDown(cbkeyd) Then kamera2+20
    If kamera2<-1000 Then kamera2=-1000
    If kamera2>1000 Then kamera2=1000
    PositionCamera kamera2,0
    UpdateGame
    DrawToImage kamera2kuva
        Cls
        DrawGame
    DrawToScreen
    
    'PositionCamera 2251235,23542356
    
    DrawImage kamera1kuva,0,0
    'DrawImageBox kamera1kuva,400,0,200,0,400,600
    'DrawImageBox kamera2kuva,0,0,200,0,400,600
    
    'CopyBox 200,300,400,600,400,0,Image(kamera1kuva),SCREEN()
    'CopyBox 200,300,400,600,0,0,Image(kamera2kuva),SCREEN()
    
    
Return





Yritän tehdä tällaista split-screenjuttua mutta en vaan onnistu. Kameraa ei ole tarkoituskaan liikuttaa ylös ja alas, vain vasemmalle ja oikealle.
Ja nuo kommenteiksi muutetut rivit ovat jotain aiempia yrityksiäni. Jostain syystä tuossa tuo tavallinen drawimagekaan edes ei toimi

Älä anna taustan hämätä! pistin siihen vain jotain ettei tarvistsisi laittaa kuvaa tänne!
EDIT:

Vasen pelaaja a ja d, oikea pelaaja, nuolet

Valmiit pelit: House of Horrors , Battle Zone , Über Ball , Itdoti , Space Chaos , Bloxxplosives
Projekti jota teen ehkä joskus vielä: viewtopic.php?f=11&t=2636 <-- Tämä rivi päivitetty 14.1.2013
User avatar
Nameless_One
Member
Posts: 63
Joined: Fri Mar 26, 2010 4:05 pm

Re: Tyhmät kysymykset (I/2010)

Post by Nameless_One »

Miten tehdään seuraavanlainen systeemi:

Pelissä on objekti, jolla on kädet, jalat, pää ja keho. Jos klikataan vaikka ny päätä, tulee teksti "Headshot". Jos klikataan jalkoja, niin objekti horjahtaa/kaatuu.
Ja muillakin kehonosilla olisi oma toiminto klikkauksen yhteydessä.
Projektit:
Semmonen jännä tasoloikka

Youtube-kanavani
Uusin video: Pelataas LoZ Oracle of Seasons - Osa 14 - Tarm Rauniot
oblivios_tha_koodari
Member
Posts: 55
Joined: Fri Apr 30, 2010 10:55 pm

Re: Tyhmät kysymykset (I/2010)

Post by oblivios_tha_koodari »

Nameless_One wrote:Miten tehdään seuraavanlainen systeemi:

Pelissä on objekti, jolla on kädet, jalat, pää ja keho. Jos klikataan vaikka ny päätä, tulee teksti "Headshot". Jos klikataan jalkoja, niin objekti horjahtaa/kaatuu.
Ja muillakin kehonosilla olisi oma toiminto klikkauksen yhteydessä.

lue manuaalista kohdat pickedobject, objectpickable,playanimation,stopanimation,

elikkä minun mielestäni helpoin tapa tuo toteuttaa olisi että aina kun klikkaat sitä tiettyä kohtaa alkaisi animaatio pyörimään ja kun se on pyörinyt se taas resettaantuisi.
en itse tiedä miten tuon toteuttaa mutta manuaalia selaamalla noista kohdista ja päättelemällä kyllä selviää. jos on vielä sen jälkeen epäselvää kysy joltakin minua viisaammalta

sitten oma ongelmani miten saisin tehtyä peliin jossa on jokaisella sivulla sekä ylhäällä ja alhaalla valkoiset laatikot niin törmäysefektin ja painovoiman?
tässä source:

Code: Select all

FrameLimit 40

Const gravity = 2

SCREEN 800, 600
SetWindow "trance platformer", 0,"NOOO!!! dont go... :("

music=LoadSound("tetris techno remix.mp3")
PlaySound music


ballX# = 50
ballY# = 20

boxx# = 800
boxy# = 100

boxx2#=100
boxy2#=700

Repeat
Color cbwhite
Box 0, 500, boxx , boxy, 1
Box 0, 0, boxx2, boxy2
Box 700, 0, boxx2, boxy2
Box 0, 0, boxx , boxy, 1

   PickColor boxx - ballx, boxy - bally
    If getRGB( RED ) = 255 And getRGB( GREEN )=255 And getRGB( BLUE )=255 Then
        coll = True
        ballY = mapY
        bmY# = 0
    Else
        coll = False
    EndIf

    If coll = False Then
        bmY + GRAVITY
    EndIf

    If coll And KeyHit( CbKeySpace ) Then
        coll = False
        bmY = -2
    EndIf
   
    bmX# = bmX + ( RightKey() - LeftKey() ) * 0.2
    ballX = ballX + bmX
    ballY = ballY + bmY
   
    Color cbpurple
    Circle ballX - -50, ballY - -300, 10

DrawScreen

Forever

edit:sitte tuli semmonen ongelma toisessa projektissani että kun yritän laittaa että vain kun on tietty määrä rahaa voi ostaa tavaran mutta jos on vähemmän rahaa ja yrittää ostaa se heittää memory acces violation...
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

oblivios_tha_koodari wrote:edit:sitte tuli semmonen ongelma toisessa projektissani että kun yritän laittaa että vain kun on tietty määrä rahaa voi ostaa tavaran mutta jos on vähemmän rahaa ja yrittää ostaa se heittää memory acces violation...
Tuon saat toteutettua näin:

Code: Select all

rahat = 0
tonttu = 0
Repeat
    Text 0, 0, "Paina 1 ostaaksesi tontun, maksaa 156 rahaa"
    Text 0, 13, "Paina 2 hankkiaksesi lisää rahaa"
    Text 0, 26, "Rahat: "+rahat
    Text 0, 39, "Tonttu: "+tonttu
    If KeyHit(cbkey2) Then rahat+10
    If KeyHit(cbkey1) Then
        If rahat > 155 Then
            Rahat -156
            Tonttu +1
        Else
            MakeError "Memory access violation"
        EndIf
     EndIf
     DrawScreen
Forever
EDIT: pari ajatusvirhettä tuli, korjattu koodi
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by esa94 »

Chaosworm wrote:

Code: Select all

        Else
            MakeError "Memory access violation"
Srsly nao :D
Locked