Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
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 »

Jonez wrote:Riveillä 126-128 tuhoat seuraavat objektit: (jos hiiri on tietyissä koordinaateissa).

Code: Select all

DeleteObject load2
DeleteObject start2
DeleteObject intro2
Ensimmäisellä tuhoamiskerralla objektit kyllä ovat olemassa, mutta sadasosasekuntia myöhemmin, kun ohjelma on pyörähtänyt silmukassa kerran ja palaa uudestaan tähän kohtaan, objekeja ei enää ole. Nehän juuri tuhottiin. Jos yrität poistaa (tai muuten vain käyttää) objektia jota ei ole, seuraa Memory Access Violation.

Eli tee mieluummin näin:
1. Joko tyydyt piilottamaan objektit (ja säilömään ylimääräisen arvon objektien elollisuudesta, tyyliin: load2_elossa = True / False ). Ensin siis tarkastetaan onko objekti elossa (If obj_elossa = true), ja jos on, tuhotaan se ja annetaan obj_elossa-muuttujalle arvo false.
2. TAI: tuhoamisen yhteydessä annat ko. objektimuuttujalle arvon 0 (cb ei tee tätä itse kun mediaa tuhotaan). Ennen tuhoamista tarkastat onko arvo 0. Jos on, objektia ei tuhota. Siis:

Code: Select all

obj = LoadObject( "media\cow.bmp" )

Repeat
    
    //Tämä ehtolause toteutuu vain ensimmäisellä silmukan kierroksella
    If obj <> 0 Then
        DeleteObject obj
        obj = 0 //<- jos poistat tämän rivin, seuraa MAV.
    EndIf
    
    DrawScreen
Forever
Edit. Suosittelen erittäin lämpimästi opettelemaan taulukot (Dim) ja tyyppikokoelmat (Type). Nämä ovat erittäin hyödyllisiä. Niin hyödyllisiä että käytin kursivointia, vaikka en käytä sitä ikinä.

Jos et tiedä mikä niiden etu on, niin se on periaatteessa tämä: oletetaan että sulla on 100 hahmoa, vaikka vihollista. Sen sijaan että kirjoittaisit sata kertaa koodiisi: vihu1 = LoadObject ( "vihu.png", 72 ) ... vihu2 = LoadObject( "vihu.png", 72 ) ... jne. Sekä tietenkin sata kertaa aina kun haluat vihollisen tekevän jotain, voit tehdä täysin saman asian (ja oikeastaan paljon enemmän) yhdellä silmukalla:

Code: Select all

For i = 0 to 99
    vihu( i ) = CloneObject( objVihu )
Next i
Siis sadan rivin sijasta sinulla on neljä kolme riviä.

Edit. tällä rivillä oli jotain, mutta ei ole enää... :)

tämä ei mielestäni ollut ongelma koska mawi ilmestyy vain jos painan ostopainiketta... ja ongelmanani on myös että vaikka hideen yhden painikkeen se silti aktivoituu kun painan siitä kohdasta missä se on...
ja entäs tuo toinen ongelmani?
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:ja ongelmanani on myös että vaikka hideen yhden painikkeen se silti aktivoituu kun painan siitä kohdasta missä se on...

Code: Select all

If hidetetty = 0 Then tee_mitä_oli_tarkoitus_tehdä_kun_nappulaa_painetaan()
Else älä_teekään()
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 »

mutta millä komennolla tuon "älä teekkään" voin toteuttaa?
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

oblivios_tha_koodari wrote:mutta millä komennolla tuon "älä teekkään" voin toteuttaa?
Kutsut tuosta funktiota annetun ohjeen avulla. Simple!
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonez »

oblivios_tha_koodari wrote:mutta millä komennolla tuon "älä teekkään" voin toteuttaa?
Siis jos et pistä koodia tekemään mitään, niin eihän se silloin tee mitään.

Ongelmanasi on siis, että se nappulanpainosysteemisi on tällainen:

Code: Select all

If HiiriNappulanPäällä() And MouseHit( 1 ) Then TehdäänJotain()
Tuo siis tapahtuu, oli nappulasi näkyvissä tai ei.

Se pitäisi tehdä näin:

Code: Select all

If HiiriNappulanPäällä() And MouseHit( 1 ) And NappulaNäkyvissä = True Then TehdäänJotain()
Tietenkin, kun piilotat nappulan, asetat samalla muuttujan NappulaNäkyvissä arvoksi nollan.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Mites voikaan syöttää useita parametrejä exelle "Execute" - komennolla? Miten parametrit erotetaan toisistaan?
Execute "ohjelma.exe eka_para [mutta mitä sitten???]"
Herra Siili
Advanced Member
Posts: 308
Joined: Tue Nov 25, 2008 8:06 pm
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Herra Siili »

En ole varma asiasta, mutta olisikohan näin:

Code: Select all

Execute "ohjelma.exe -ensimmäinen_parametri -toinen -kolmas"
a.k.a. Gehock
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by Feuer »

Sitaattien paikka on windowsin kanssa erittäin kriittinen, ihan ohjelmointikielestä riippumatta. Muistaakseni oikea loitsu menisi seuraavasti: '"ohjelman polku.exe" -parametri1 -parametrikaks' missä " korvataan +chr(34)+:llä kun Coolbasicista kyse. Varmuudella selviää vain kokeilemalla.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Feuer wrote:Sitaattien paikka on windowsin kanssa erittäin kriittinen, ihan ohjelmointikielestä riippumatta. Muistaakseni oikea loitsu menisi seuraavasti: '"ohjelman polku.exe" -parametri1 -parametrikaks' missä " korvataan +chr(34)+:llä kun Coolbasicista kyse. Varmuudella selviää vain kokeilemalla.
Ei toimi muuttujaparametreilla ainakaan... Voisiko joku laittaa ihan koko koodin, eli kutsu ohjelmaan "ohjelma.exe" ja parametrit s$, p$ ja 10
m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: Tyhmät kysymykset (I/2010)

Post by m1c »

DJ-Nerd wrote:
Feuer wrote:Sitaattien paikka on windowsin kanssa erittäin kriittinen, ihan ohjelmointikielestä riippumatta. Muistaakseni oikea loitsu menisi seuraavasti: '"ohjelman polku.exe" -parametri1 -parametrikaks' missä " korvataan +chr(34)+:llä kun Coolbasicista kyse. Varmuudella selviää vain kokeilemalla.
Ei toimi muuttujaparametreilla ainakaan... Voisiko joku laittaa ihan koko koodin, eli kutsu ohjelmaan "ohjelma.exe" ja parametrit s$, p$ ja 10
Execute "ohjelma.exe " + s$ + " " + p$ + " 10"

Jokainen ohjelma voi itse päättää missä muodossa parametrinsä ottaa. Kokeile käynnistää kyseinen ohjelma komentoriviltä ilman parametrejä tai esim jollain seuraavista: /? /h /help -? -h -help, ja saat useimmiten tietoon miten parametrit erotellaan toisistaan. Vaihtoehtoisesti katso kyseisen ohjelman dokumentaatiosta.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset (I/2010)

Post by Jonez »

DJ-Nerd wrote:Mites voikaan syöttää useita parametrejä exelle "Execute" - komennolla? Miten parametrit erotetaan toisistaan?
Execute "ohjelma.exe eka_para [mutta mitä sitten???]"
Esimerkiksi tämä toimi moitteetta.
Tein seuraavasta ohjelmasta exen nimellä cmd:

Code: Select all

For i = 2 To CountWords( CommandLine(), "-" )
    Print GetWord( CommandLine(), i, "-" )
Next i
WaitKey
Avasin sen koodilla:

Code: Select all

Execute "cmd.exe -jotain -jotainmuuta -jeetoimii"
Tulos:

Code: Select all

jotain
jotainmuuta
jeetoimii
Tietenkin, kuten m1c sanoi, riippuu paljon siitä mitä ohjelmaa yrität avata.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

m1c wrote:
DJ-Nerd wrote:
Feuer wrote:Sitaattien paikka on windowsin kanssa erittäin kriittinen, ihan ohjelmointikielestä riippumatta. Muistaakseni oikea loitsu menisi seuraavasti: '"ohjelman polku.exe" -parametri1 -parametrikaks' missä " korvataan +chr(34)+:llä kun Coolbasicista kyse. Varmuudella selviää vain kokeilemalla.
Ei toimi muuttujaparametreilla ainakaan... Voisiko joku laittaa ihan koko koodin, eli kutsu ohjelmaan "ohjelma.exe" ja parametrit s$, p$ ja 10
Execute "ohjelma.exe " + s$ + " " + p$ + " 10"

Jokainen ohjelma voi itse päättää missä muodossa parametrinsä ottaa. Kokeile käynnistää kyseinen ohjelma komentoriviltä ilman parametrejä tai esim jollain seuraavista: /? /h /help -? -h -help, ja saat useimmiten tietoon miten parametrit erotellaan toisistaan. Vaihtoehtoisesti katso kyseisen ohjelman dokumentaatiosta.
Ohjelma on tehty C# :lla. En itse osaa tuota kieltä, mutta onko sillä jotakin parametrin oletusvälitystapaa?
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tyhmät kysymykset (I/2010)

Post by TheFish »

Siis komentoriviltä käynnistäessä parametrit erotellaan välilyönnillä. Jos parametrissä on välilyönti, se laitetaan lainausmerkkien sisään (esim. tiedostopolku).
CoolBasic henkilökuntaa
Kehittäjä
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2010)

Post by DJ-Filbe »

Olikin C# - koodissa se vika. Kaikki kunnossa nyt.
User avatar
wilizucoder
Member
Posts: 81
Joined: Sat Sep 08, 2007 11:24 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by wilizucoder »

Olen tekemässä peliä, johon on tulossa monta karttaa, niin miten pystyy toteuttamaan ns. kartanvaihdon eli esim. jos on päässyt 1 lvl läpi niin siirrytään 2 lvl:n jne... :?:
Pientä esimerkkikoodia kaipaisin.

Kiitos niille, jotka viitsivät auttaa
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

wilizucoder wrote:Olen tekemässä peliä, johon on tulossa monta karttaa, niin miten pystyy toteuttamaan ns. kartanvaihdon eli esim. jos on päässyt 1 lvl läpi niin siirrytään 2 lvl:n jne... :?:
Pientä esimerkkikoodia kaipaisin.

Kiitos niille, jotka viitsivät auttaa

Code: Select all

If päässyt_lvl_1_läpi() = True Then
    DeleteObject wanhamappi
    uusimappi = LoadMap
EndIf
User avatar
wilizucoder
Member
Posts: 81
Joined: Sat Sep 08, 2007 11:24 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by wilizucoder »

Katos joo, tottakai, en tajunnut että siitä selvittäisiin näin yksinkertaisella koodinpätkällä, kiitos tästä :lol:
User avatar
Knoy
Active Member
Posts: 187
Joined: Fri Feb 12, 2010 10:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Knoy »

-Poistettu-

En tajunnut tuota kun kolan puute oli valtava ja tilemappeja käyttänyt olen tasan kerran.
Anteeksi typerä sekoiluni...
Last edited by Knoy on Wed May 12, 2010 1:33 pm, edited 2 times in total.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset (I/2010)

Post by Sly_Jack0 »

Knoy wrote:...
Ei muuten onnistu tuollainen:
Coolbasicin manuaali @ LoadMap wrote:Huomaa, että vain yksi kartta kerrallaan voi olla ladattuna.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Tyhmät kysymykset (I/2010)

Post by phons »

Sly_Jack0 wrote:
Knoy wrote:...
Ei muuten onnistu tuollainen:
Coolbasicin manuaali @ LoadMap wrote:Huomaa, että vain yksi kartta kerrallaan voi olla ladattuna.
Itse asiassa tähän on tehty systeemi jolla voi ladata mappeja muistiin.. En nyt löydä mitään linkkiä kun cbkk on poissa eikä foorumin hakukaan tuottanut juuri tulosta, mutta sellainen kyllä on.
Image
Locked