Tile kartta

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
mato1223
Member
Posts: 69
Joined: Sat Aug 16, 2008 12:04 pm
Location: Rääkkylä

Tile kartta

Post by mato1223 »

Haluaisin tehdä Tile Kartta editorilla Kentän jossa on vettä. Aion tehdä RPG tyylisen pelin. Veteen Kuitenkin pitäisi päästä myöhemmässä vaiheessa lautalla. Miten tuo tehdään?
MikkoK
Devoted Member
Posts: 813
Joined: Thu Jun 05, 2008 2:13 pm
Location: City 17

Re: Tile kartta

Post by MikkoK »

Ajattelisin että data tileillä... En itse niitä ole käyttänyt kyllä mutta silti.

Code: Select all

#aha. @ IRCNet
<Grandi> Voit laittaa jo valmiiks hailaittiin "Amis-Mikko", koska alan kutsua sua sillä nimellä.
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: Tile kartta

Post by Eräs cb koodaaja »

MikkoK141 wrote:Ajattelisin että data tileillä... En itse niitä ole käyttänyt kyllä mutta silti.
MikkoK141: Sä neuvot aina käyttämään datakerrosta vaikka sulla on tuskin mitään hajua miten se toimii, etkä käytä sitä itse.

Sitten aiheeseen: Laitat sen veden ihan normaalisti ja lisäät siihen veteen datanumeron. Sitten vaan luet GetMapilla kartta, että missä kohdassa lautta liikkuu.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tile kartta

Post by Koodiapina »

Tietenkin sun täytyy sen lisäksi koodata systeemi, joka estää tyyppiä menemästä veteen, ellei hän ole lautalla. Hommasta tulee turhan monimutkainen, ellei pelattavan hahmon liikkumista / sijaintia ole rajoitettu tilettäin meneväksi. Tällöin vain tarkistetaan menosuunnassa olevan seuraavan tilen datanumero, ja päätetään sen mukaan jatketaanko matkaa.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tile kartta

Post by TheFish »

Grandi wrote:Tietenkin sun täytyy sen lisäksi koodata systeemi, joka estää tyyppiä menemästä veteen, ellei hän ole lautalla. Hommasta tulee turhan monimutkainen, ellei pelattavan hahmon liikkumista / sijaintia ole rajoitettu tilettäin meneväksi. Tällöin vain tarkistetaan menosuunnassa olevan seuraavan tilen datanumero, ja päätetään sen mukaan jatketaanko matkaa.
Veteenhän voi laittaa törmäyksen normaalisti. Lautalla ollessa törmäys poistetaan (en kylläkään muista mikä komento poisti törmäyksen, mutta pakkohan sellainen on olla). Vain lautan kanssa liikkuessa tarvitaan tuo tarkistus.

Helpoin ratkaisu taitaisi olla systeemi, joka muuttaa kartan törmäyskerroksia tarpeen mukaan. Kun mennään lautalle, tileistä joissa on vesi-data poistetaan törmäys ja muihin tileihin laitetaan törmäys. Kun poistutaan lautalta, veteen laitetaan törmäys ja muualta poistetaan (paitsi tietenkin niistä joissa kuuluu olla, hoituu datalla tämäkin).
CoolBasic henkilökuntaa
Kehittäjä
Bagard
Newcomer
Posts: 46
Joined: Sun Aug 26, 2007 4:56 pm
Location: Finland

Re: Tile kartta

Post by Bagard »

Miksi suotta käyttää datakerrosta tällaiseen? Vie enemmän aikaa kun jokainen vesitile pitää merkata ja karttaan saattaa unohtua merkkaamattomia alueita. Käytä mielummin GetMap()-funktiota ottamaan selvää, minkä taustakerrostilen päällä ollaan. Kannattaa ehkä tehdä erilaisista maastotileistä jonkinlainen taulukko, jolloin voit helposti käyttää vedelle montaa erilaista tileä, esim:

Code: Select all

Const NUM_TILES = 50        // tähän montako tileä tilesetissäsi on

// vakiot eri tyypeille jotta käsittely helpompaa
Const WATER = 1
Const LAVA  = 2

// taulukko erikoistileille
Dim terrain(NUM_TILES)

// merkataan erikoistilejä, indeksi on siis tilen järjestysnumero
terrain(23) = WATER
terrain(24) = WATER
terrain(45) = LAVA
Eli kuten näet, tuohon on helppo lisätä uusiakin maastoja (esim. laava) ja niille on helppo merkata useita mahdollisia tilejä (yksi kuva vedelle tuskin riittää, kun rannat yms. pitää myös piirtää). Jos tarvitsee merkata alueita joihin ei pääse millään tavalla, niin sitten kannattaa käyttää tilekarttojen omaa törmäyskerrosta. Kun tarvitsee tarkistaa, minkälaista maastoa ukon alla / sivuilla on, onnistuu se näin:

Code: Select all

If terrain(GetMap(0, ukkoX, ukkoY)) = WATER Then
    // ukon alla on vettä
ElseIf terrain(GetMap(0, ukkoX, ukkoY)) = LAVA Then
    // ukon alla on laavaa
Else
    // erikoismaastoa ei ole määritelty, eli tavallista maata
EndIf
Toinen tapa saada törmäykset toimimaan riippuen maastosta & liikkumistavasta olisi muokata kartan törmäyskerrosta lennossa aina kun kulkuvälinettä vaihdetaan. Voipi olla että teen lähiaikoina jonkinlaisen esimerkin tästä.
EDIT:

Näemmä TheFish jo puhuikin tuosta törmäyskerroksen muokkauksesta

mato1223
Member
Posts: 69
Joined: Sat Aug 16, 2008 12:04 pm
Location: Rääkkylä

Re: Tile kartta

Post by mato1223 »

Eli siis pitäs tehä oma Tileset vai??? Tehäänkö se miten???
User avatar
KillBurn
Advanced Member
Posts: 339
Joined: Wed Aug 29, 2007 5:02 pm

Re: Tile kartta

Post by KillBurn »

:x .Tilesetti on vain kuva josta poimitaan esim. 32,32 kokoisia alueita.
Semmoiset piirretään piirrustus ohjelmalla.Tilet tulee olla aivan vierekkäin.Katso CB'n media kansiosta tilesettimallia.
Sumu Games: Sam, Ur eye!
mato1223
Member
Posts: 69
Joined: Sat Aug 16, 2008 12:04 pm
Location: Rääkkylä

Re: Tile kartta

Post by mato1223 »

Ok no kiitos kuiteski
mato1223
Member
Posts: 69
Joined: Sat Aug 16, 2008 12:04 pm
Location: Rääkkylä

Re: Tile kartta

Post by mato1223 »

Hyvä minä... Nythän minä tämän käsitän! :D
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: Tile kartta

Post by Sly_Jack0 »

Anteeksi että leikin modea, mutta käsitä myös se, että voit muokata vanhoja viestejäsi eikä sinun tarvitse tuplapostata.
Post Reply