Tyhmät kysymykset (I/2009)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Tyhmät kysymykset

Post by tuhoojabotti »

SDK:ssa on myös funkkari tuohon...
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
zedo

Re: Tyhmät kysymykset

Post by zedo »

Mitenkäs pitäis toimia, kun (ylhäältäpäin kuvatussa) mapissa on puita, jotka koostuu 9 tilestä, keskimmäinen törmäys-tasossa, muut overissa.
2 ongelmaa:

1. Ukko ei törmää puun keskimmäiseen tileen(=runkoon), oon pelin koodissa laittanu
setupcollision ukko,mappi,2,4,2

2. Maskiväri ei toimi (käyttää defaulttia eli mustaa, vaikka asetettu 255,0,255). Tilesterissä toimii, oikea on valittu, mutta kun cb:stä ajaa pelin, niin ei toimi (=näkyy pinkkiä).
Pitääkö KARTAN maskiväri jotenki määrittää koodissa? o.O
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

Muista Tilesterissä tallentaa mappi 1.3-muotoon. En kyllä tiedä että miten tämä vaikuttaa hit-kerroksiin, en ikinä käytä Tilesteriä.

Ja kyllä, kartta pitää maskata myös koodissa. Oletusmaski on musta, mutta voit vaihtaa sen komennolla MaskObject.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
zedo

Re: Tyhmät kysymykset

Post by zedo »

Tattista juu tosta maskaamisesta, oishan se pitäny tajuta, kun sen oppitunneiltaki saa selville -.-
Se hit-layerin toiminta ei kuitenkaan jostain syystä onnistu... ukko ei törmää.
Vinkkejä from any1? :?:
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tyhmät kysymykset

Post by Sly_Jack0 »

En ole varma mutta olen kuullut että tilesterissä pitäisi tehdä hit kerros tilellä nro. 1. En ole varma koska en itse käytä tilesteriä.
zedo

Re: Tyhmät kysymykset

Post by zedo »

Kiitti! Toi tepsi, eli törmättävän tilen pitää olla vasemmassa ylänurkas oleva tile ja sit se "oikea" siihen päälle overiin.
Sit tää varmaan kelpaa ihan hyvin tyhmät kysymykset osioon, mut miten teette normaalisti mapit?(siis jos ette käytä tilesteriä) :?
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

Itse käytän TileGeniä. Helppo käyttöliittymä, dynaaminen mapin koko ja vakaa ohjelma. Saat sen täältä.

On olemassa myös A Stigmator-niminen ohjelma, joka on tehty coolbasicilla. Muuten ihan hyvä, mutta itselläni se kaatuu aina vähän väliä, jonka takia en käytä sitä. Kaatumista esiintyy vain joillakin koneilla, joten kannattaa kokeilla molempia ohjelmia ja katsoa kummasta tykkää enemmän. Lataa täältä.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
DuCk-

Re: Tyhmät kysymykset

Post by DuCk- »

ajattelin tehä stategia pelin.
miten saadaan esimerkiksi 30 kloonattua ukkoa törmäämään toisiinsa?
onko tää mahollista muuten kuin setupcollisionilla.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tyhmät kysymykset

Post by Koodiapina »

DuCk- wrote:onko tää mahollista muuten kuin setupcollisionilla.
Jos käytät objekteja, setupcollision on todennäköisesti paras ratkaisu (Tai no riippuu mitä oot väsäämässä...) Mutta typet / taulukot kunniaan.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tyhmät kysymykset

Post by Jonez »

Onnistuu muillakin. On olemassa sellaisia funkkareita kuin ObjectsOverlap(), Imagesoverlap(), jopa Distance() ja Distance2()-funkkareilla voit järjestää asian. Voit myös tarkastaa objektien koordinaatit funktioilla ObjectX() ja ObjectY(), sekä rajoittaa objektien sijaintia näitä tietoja apuna käyttäen. (ts. tarkistaa onko objekti liian lähellä ja siirtää se tarpeeksi kauas).

SetupCollision on kuitenkin todennäköisesti paras ratkaisu.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
zedo

Re: Tyhmät kysymykset

Post by zedo »

Pitäis näköjään pian rekisteröityäkin tänne... en itse asias oo varma oonko jo rekisteröityny joskus kauan sitte... :lol:
Itse asiaan:
Metsästyspelistä yli 700 riviä jo saanu onnistumaan, mut nyt ei vaan raksuta et, miks helkutissa tää ei toimi? Näyttää yksinkertaselta.
Pitäis siis pausevalikko saada aikaan.
Pelissä on kaikkea liikkuvaa objektia ja taustamusa looppina.
Sitte: If EscapeKey() Then Gosub pausevalikko
Se menee tohon ihan onnistuneesti, kyllä.
Valikkokuva (kts koodi alempana) kuitenki vaan välähtää siinä, niiku sitä ei piirrettäis silmukan sisällä.
Looppi kuitenki jatkuu, sillä vasta ku klikkaa, peli jatkuu (objektit liikkuu) vaikkakin tausamusa soi kokoajan (tuskin aloittaa alusta, kun tossa loopissa sitä ei ole käsketty).

Code: Select all

pausevalikko:
        pause=LoadImage("hlv\esuap.hlv")
        ShowMouse cursor
    Repeat
        If MouseUp(1) Then Goto pausetakaisin
        DrawImage pause,337,209
        DrawScreen
    Forever
pausetakaisin:
Return
Raakana tollasenaan ilman mitään muuta koodia toi toimi hyvin, ku poistin ekan, kolmannen ja vikan rivin ja tallensin oikein.
En kuitenkaan tajua, et miks ei jää ruudulle keskellä peliä.
Toivottavasti joku tajus jotaki :)
Murskaaja
Member
Posts: 92
Joined: Tue Aug 28, 2007 8:19 pm
Contact:

Re: Tyhmät kysymykset

Post by Murskaaja »

Pelimaailma täytyy piirtää ennen kuvia, muuten kuvat jäävät sen alle.

Sitten pari muuta huomiota. Ensinnäkin, pois nuo hirveät goto-purkkaviritykset. Pause-kuvaa ei kannata ladata joka kerta kun peli keskeytetään. Riittää kun sen lataa kerran pelin käynnistyksen yhteydessä. Mielestäni olisi myös luontevaa, että peli jatkuisi samasta napista kuin mistä sen saa pauselle, mutta tee toki omalla tavallasi jos et ole samaa mieltä :)

Code: Select all

pause=LoadImage("hlv\esuap.hlv")
..koodia...

pausevalikko:
    ShowMouse cursor
    ClearKeys
    Repeat
        If KeyHit(cbkeyesc) Then exit
        DrawGame
        DrawImage pause,337,209
        DrawScreen
    Forever
    ClearKeys
Return
ASCII star wars Xtreme | Cool Bombers | Combat (kehitteillä)

RedShadow productions
zedo
Newcomer
Posts: 7
Joined: Sat May 24, 2008 8:23 pm

Re: Tyhmät kysymykset

Post by zedo »

Toihan se vastaus oliki tosiaan...
en itekään gotoista tossa tykkää, mutta exitin manuaalissa sanottiin, ettei if-lauseisiin toimi... tiedä sitten.
Toi pause oli ladattu tohon koska... ei mitään :mrgreen:
Siihen oli syynsä, mutta siirrän sen kuitenkin.
Ja viimene, eli se hiirijuttu on se, että pausevalikossa on samassa kuvassa 2 nappulaa ja tohon hiiren nappulan rinnalle laitan "Jatka peliä"-kuvan koordinaatit ehdoksi, että tulee exit.
Älä valita :D Oon alusta asti täs pelis käyttäny tota menetelmää nappuloiden kanssa ja käytän ohjelman loppuuun saakkakin. En viittiny kesken ruveta vaihtamaan > ensi ohjelmassa sitten. ;)
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset

Post by koodaaja »

Ei Exit if-lauseisiin toimi, muttei tuossa siitä halutakaan poistua vaan siitä ympäröivästä loopista. Siitähän sillä poistutaan.
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Tyhmät kysymykset

Post by nevssons »

Vaihtaako SDK:n avaus dialogi oletuskansiota?
Mulla nimittäin jostain syystä oletuskansio vaihtuu aina ladatun tiedoston kansioks

Edit:
Testasin ite ja kyllä, kansio vaihtuu toinen kysymys:
Miten saa Ohjelman hakemistopolun selville?
Koodarina kohtalainen, henkilönä vittumainen
Image
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi »

Code: Select all

 If MouseWX()<ObjectX(vihu_obj(i))+20 And MouseWX()>ObjectX(vihu_obj(i))-20 And MouseWY()<ObjectY(vihu_obj(i))+20 And MouseWY()>ObjectX(vihu_obj(i))-20 And MouseHit(1) Then
         DeleteObject vihu_OBJ(i)
                
        vihu_ELOSSA(i)=OFF
Jostain syystä ei poista kaikkia,vaikka varmasti osuis?
Taulukoilla sähellän...
Huuda mun ip:tä!
nevssons
Devoted Member
Posts: 503
Joined: Sun Jan 13, 2008 5:02 pm

Re: Tyhmät kysymykset

Post by nevssons »

Olw1 wrote:

Code: Select all

 If MouseWX()<ObjectX(vihu_obj(i))+20 And MouseWX()>ObjectX(vihu_obj(i))-20 And MouseWY()<ObjectY(vihu_obj(i))+20 And MouseWY()>ObjectX(vihu_obj(i))-20 And MouseHit(1) Then
         DeleteObject vihu_OBJ(i)
                
        vihu_ELOSSA(i)=OFF
Jostain syystä ei poista kaikkia,vaikka varmasti osuis?
Taulukoilla sähellän...
Vika ei tuossa koodissa näytä olevan. Itse kun testasin niin toimi ihan hyvin. (Tosin pari pikku ongelmaa tuli koska piti ite koodata siihen ympärille kaikenlaista enkä jaksanut mitään ihmeellisiä vääntöjä tehdä)

Minkä kokosia sun objectit on? jos ne on yli 40x40 niin toi ei toimi.
Koodarina kohtalainen, henkilönä vittumainen
Image
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: Tyhmät kysymykset

Post by Olwi »

nevssons wrote:
Olw1 wrote:

Code: Select all

 If MouseWX()<ObjectX(vihu_obj(i))+20 And MouseWX()>ObjectX(vihu_obj(i))-20 And MouseWY()<ObjectY(vihu_obj(i))+20 And MouseWY()>ObjectX(vihu_obj(i))-20 And MouseHit(1) Then
         DeleteObject vihu_OBJ(i)
                
        vihu_ELOSSA(i)=OFF
Jostain syystä ei poista kaikkia,vaikka varmasti osuis?
Taulukoilla sähellän...
Vika ei tuossa koodissa näytä olevan. Itse kun testasin niin toimi ihan hyvin. (Tosin pari pikku ongelmaa tuli koska piti ite koodata siihen ympärille kaikenlaista enkä jaksanut mitään ihmeellisiä vääntöjä tehdä)

Minkä kokosia sun objectit on? jos ne on yli 40x40 niin toi ei toimi.
30x30...

Ja kyllä tuo toimis isommillaki,se ottais ne vaan siitä keskustasta.
Peli siis toimii näin:
Vihut tulee ylhäältä alas,ja ne pitää "ampua" ennen kuin ne ehtivät ruudun alalaitaan.
Hiukan useammin näytti osuvan, kun napsautti hieman objectin eteen.
Sitten oli sellasia ihme bugeja että jos Y-koordinaatti on melkein sama,ihan sama objectien etäisyydelle,niin saattaa poistaa kummatkin/useampia kerralla.
:(


Vaihtoehtoisia tapoja toteuttaa tuo???



Edit
Aina vaan ihmeellisempää.
Nyt huomasin että ruudun vasemmalla puolella se poistaa kaikki niinkuin pitääkin,ruudun oikealla puolella vain satunnaisesti?!?!??!
Huuda mun ip:tä!
KovIZZ

Re: Tyhmät kysymykset

Post by KovIZZ »

Mitä kaikkea clearobjects oikeen poistaa? Manuaalissa sanotaan, että vain objecteja.Kuitenkin kun yritän tehdä peliini eri kenttiä niin toiseen kenttään siirryttäessä tulee mav. Kun poistan clearobjectin niin silloin homma toimii. Kaikki objectit on varmasti ladattu toisessakin kentässä, koska ne ladataan aina samalla aliohjelmalla.
Äsken löysin täältä foorumilta aiheen jossa sanottiin, että tyypeillä tehdyt objectit pitäisi poistaa erikseen, onko tuossa jotain perää ja jos on niin miten ne sitten poistetaan.
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tyhmät kysymykset

Post by KillBurn »

Joo tyypit kannattaa poistaa erikseen,vaikka siten että teet funktion jossa ne poistetaan.

Code: Select all

Function poista(obj)
    For a.vihus = Each vihus
        DeleteObject a\obj
        Delete a
    Next a
EndFunction
tossa siis poistetaan yksi tyyppi
Sumu Games: Sam, Ur eye!
Locked