Tilejen lisääminen karttaan

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
User avatar
Ize
Newcomer
Posts: 35
Joined: Mon Jan 16, 2012 7:46 pm
Location: Finland

Tilejen lisääminen karttaan

Post by Ize »

Yksi pienoinen peli olisi tekeillä jossa tilekarttaan pitäisi lisätä tilejä. Siis ei mitään objekteilla pelailua, vaan tilejen lisäilyjä. En löytänyt haulla, joten vastauksia viisaammilta, kiitos. :D
<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...
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: Tilejen lisääminen karttaan

Post by Character »

Editmap? Vai tarkoitatko että pitäisi kentän kokoa suurentaa?
User avatar
Ize
Newcomer
Posts: 35
Joined: Mon Jan 16, 2012 7:46 pm
Location: Finland

Tilejen lisääminen karttaan

Post by Ize »

Character wrote:Editmap? Vai tarkoitatko että pitäisi kentän kokoa suurentaa?
Editmap muuttaa kartaa lennossa? Kyse on yhden tilen lisäämisestä kerrallaan valmiiseen karttaan, eikä uuden satunnaisen kartan luomisesta.
<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...
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tilejen lisääminen karttaan

Post by Jonez »

Editmap muuttaa tilekartan tietyn tilen id:tä. MakeMap() luo uuden kartan.

Eli jos sinulla on kartta joka on 10*10 tilen kokoinen, niin Editmap map, 0, 1, 1, 100 asettaa taustakerrokseen datan 100 (tilekartan tile-id 100), vasempaan yläkulmaan.

Edit: jos tosiaan haluat muuttaa kartan kokoa niin sano, niin yritetään ratkaista.
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
Ize
Newcomer
Posts: 35
Joined: Mon Jan 16, 2012 7:46 pm
Location: Finland

Tilejen lisääminen karttaan

Post by Ize »

Ensin en tullut ajatelleeksi, että kartan kokoa pitäisi muuttaa, mutta nyt tarkemmin ajatellen, se on välttämätöntä. Komentoa ei moiseen varmaankaan ole, joten se pitää toteuttaa toisella tapaa?

Toi editmap, my bad, luin komennon ohjeen nopeasti ja koodausskillssit muutenki ruosteessa. :)
<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...
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tilejen lisääminen karttaan

Post by Jonez »

Muistaakseni cb kykenee pitämään muistissa vain yhtä karttaa kerrallaan, eli jos et halua käyttää jotain tehtyä karttakirjastoa (tietääkseni ainakin yksi on tehty), niin paras mieleeni tuleva tapa jolla saat kasvatettua kartan koko lennosta on seuraavanlainen:

Pidät kartan dataa muistissa omassa moniulotteisessa taulukossasi.

Code: Select all

Dim MapData(mWidth, mHeight, layerAmount)
Aina kun muokkaat karttaa, muokkaatkin MapData-taulukkoa. Jos muutat kokoa joudut muuttamaan myös MapData-taulukon kokoa ja luomaan itse kartan (MakeMap) uudestaan.

Code: Select all

Dim MapData(mWidth, mHeight, layerAmount)

//Jos kartan kokoa muutetaan, mWidth ja mHeight saavat uuden arvon
If mWidth <> oldWidth Or mHeight <> oldHeight Then
	ClearArray OFF
	ReDim MapData(mWidth, mHeight, layerAmount)
	
	oldWidth = mWidth
	oldHeight = mHeight

	MapData(muokattavaX, muokattavaY, muokattavaLayer) = muokkausId
		
	map = MakeMap(mWidth, mHeight, 32, 32)
	PaintObject map, set

	UpdateMap()
EndIf

//tätä kutsutaan aina kun kartan kokoa on muokattu jollain tapaa
Function updateMap()
	//käydään kartta läpi ja piirretään se uudestaan
	For i = 0 To layerAmount
		For x = 0 To mWidth
			For y = 0 To mHeight
				EditMap map, i, x, y, MapData(x, y, i)
			Next y
		Next x	
	Next i
EndFunction
Huomaa että jos karttaa (omaa kartta-dataa) muokataan muuttamatta kartan kokoa, on turha kutsua updateMap()-funktiota (käytä mieluummin erillistä EditMappia).
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
Post Reply