Kirjautuminen

Haku

Tehtävät

Keskustelu: Projektit: Hollywood Blocks

Sivu 1 / 1

Sivun loppuun

jalski [05.09.2011 16:23:00]

Lainaa #

Tervehdys,

Oli hiukan tylsää sunnuntaina ja mietin osaisinkohan kirjoitella "Tetriksen". Eipähän tuo nyt niin vaikeaa sitten ollutkaan ja parissa tunnissa syntyi ensimmäinen testiversio.

ladattavissa täältä

Tuohon pitäisi vielä lisätä äänet ja parantaa ulkonäköä. Pelattavuutta ja vaikeusasteen kehittymisen tasapainoa pitäisi myös hiukan hakea kohdalleen.


Parannusehdotuksia otetaan vastaan...

Metabolix [05.09.2011 18:15:51]

Lainaa #

Hyvää: Peruslogiikka tuntuu toimivan. Peli toimii myös Linuxissa Winellä ajettuna.

Huonoa: Ei tunnista häviötä. Käyttää aika paljon prosessoriaikaa siihen nähden, että suurin osa ajasta pitäisi mennä nukkuessa.

Muuta: Aika nopea ja leveä.

jalski kirjoitti:

Mietin osaisinkohan kirjoitella "Tetriksen".

Olisin aika huolestunut, jos et osaisi, kun itse sentään tein sellaisen ensimmäisenä C++-pelinäni. :) Tosin ei se tuon viimeistellympi ollut.

jalski [05.09.2011 21:13:17]

Lainaa #

Metabolix kirjoitti:

Huonoa: Ei tunnista häviötä. Käyttää aika paljon prosessoriaikaa siihen nähden, että suurin osa ajasta pitäisi mennä nukkuessa.

Muuta: Aika nopea ja leveä.

Ei tunnista häviötä? Pitäisi kyllä tunnistaa, itselläni toimii ainakin Windowsilla ok.

Peli arpoo aina seuraavan palikan lähtö x-koordinaatin ja rotaation. Palikka lähtee miinuspuolen y-koordinaatilta liikkeelle. Häviö tapahtuu omassa versiossani, jos uusi palikka lähtiessään ei pysty putoamaan yhtään ruutua. Ei siis riitä, että pino on noussut jossain kohtaa ylös asti, jos uudella palikalla on kuitenkin vielä reitti alaspäin auki.

Eikös tuo toiminut noin, kun kokeilit?

Prosessoriaikaa käyttää varmaan sen takia, kun peli ei oikeastaan hirveämmin nuku. Oma tilapohjainen Hollywood pelipohjani ajaa pelilooppia (piirto ja päivitys) 60 kertaa sekunnissa kokoajan, toki vähempikin riittäisi. En vain nähnyt tarpeelliseksi pudottaa päivitysnopeutta.


Hollywood tukee muuten nykyään myös Linuxia, joten sille saa haluttaessa suoraan tehtyä toimivan binäärin.

Olen muuten itsekin sitä mieltä, että pelialue on vielä liian leveä ja pelinopeuden sekä asteittaisen vaikeutumisen balanssi kaipaa hiukan virittämistä,

Metabolix [05.09.2011 21:46:08]

Lainaa #

jalski kirjoitti:

Häviö tapahtuu omassa versiossani, jos uusi palikka lähtiessään ei pysty putoamaan yhtään ruutua. Ei siis riitä, että pino on noussut jossain kohtaa ylös asti, jos uudella palikalla on kuitenkin vielä reitti alaspäin auki.

Ok, en sitten huomannut tällaista poikkeavaa toimintatapaa. Nyt kun testasin, näytti, että ruudun ulkopuolelle jäi kuitenkin kaksi palikkaa, tai ehkä sivupalkkiin vain ilmestyi uusi vielä häviön jälkeenkin.

jalski kirjoitti:

Oma tilapohjainen Hollywood pelipohjani ajaa pelilooppia (piirto ja päivitys) 60 kertaa sekunnissa kokoajan, toki vähempikin riittäisi.

Paras optimointi olisi jättää piirto tekemättä, jos tila ei ole muuttunut.

jalski kirjoitti:

Hollywood tukee muuten nykyään myös Linuxia, joten sille saa haluttaessa suoraan tehtyä toimivan binäärin.

Hollywood näyttäisi kuitenkin olevan maksullinen, ja itse ohjelmaa ei ole saatavilla Linuxille, eli käännös täytyy kuitenkin tehdä Windows- tai AmigaOS-versiolla. Muutenkin kaikissa Linuxeissa toimivan ohjelman tuottaminen tuntuu olevan monelle ylivoimainen tehtävä, joten en löisi vetoa Hollywoodinkaan puolesta.

jalski [06.09.2011 17:49:48]

Lainaa #

Metabolix kirjoitti:

Ok, en sitten huomannut tällaista poikkeavaa toimintatapaa. Nyt kun testasin, näytti, että ruudun ulkopuolelle jäi kuitenkin kaksi palikkaa, tai ehkä sivupalkkiin vain ilmestyi uusi vielä häviön jälkeenkin.

jalski kirjoitti:

Hollywood tukee muuten nykyään myös Linuxia, joten sille saa haluttaessa suoraan tehtyä toimivan binäärin.

Hollywood näyttäisi kuitenkin olevan maksullinen, ja itse ohjelmaa ei ole saatavilla Linuxille, eli käännös täytyy kuitenkin tehdä Windows- tai AmigaOS-versiolla. Muutenkin kaikissa Linuxeissa toimivan ohjelman tuottaminen tuntuu olevan monelle ylivoimainen tehtävä, joten en löisi vetoa Hollywoodinkaan puolesta.

Tuossa voi käydä niin, että joku palikka voi jossain rotaatiossa liikkua ruudun tai pari, ennen sen tuloa pelialueelle. Valitsin tuon miinusmerkkisen y-koordinaatin nopeasti laiskuuttani siten, että kaikki palikat eri rotaatioissaan jäävät varmasti aina lähtötilanteessa näkymän ulkopuolelle. Korjaan tuon ja laitan palikoille ja niiden eri rotaatioille omat aloitus y-koordinaatit taulukkoon siten, että ovat varmasti aina yhden ruudun päässä pelialueen näkyvästä osasta.


Kokeilepas piruuttasi tuota Hollywoodin tekemää Linux binääriä: Hollywood Blocks for Linux x86 ja kerro miten kävi. Itselläni ei toimivaa Linux asennusta tällä hetkellä ole. OS/2 ja AmigaOS 4.1 täyttävät aika hyvin omat tarpeet.

Metabolix [07.09.2011 16:15:50]

Lainaa #

jalski kirjoitti:

Kokeilepas piruuttasi tuota Hollywoodin tekemää Linux binääriä

No näyttäähän se toimivan. Alla riippuvuudet:

$ ldd blocks
	linux-gate.so.1 =>  (0xf7737000)
	libpthread.so.0 => /usr/lib32/libpthread.so.0 (0xf76f8000)
	libX11.so.6 => /usr/lib32/libX11.so.6 (0xf75dc000)
	librt.so.1 => /usr/lib32/librt.so.1 (0xf75d3000)
	libm.so.6 => /usr/lib32/libm.so.6 (0xf75a9000)
	libc.so.6 => /usr/lib32/libc.so.6 (0xf7440000)
	libdl.so.2 => /usr/lib32/libdl.so.2 (0xf743b000)
	/lib/ld-linux.so.2 (0xf7738000)
	libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf7423000)
	libXau.so.6 => /usr/lib32/libXau.so.6 (0xf7420000)
	libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf741b000)

Ei siis paljon vaadi, mutta kai silti on mahdollista, että parin vuoden päästä jokin noista versionumeroista kasvaa yhdellä ja alkaa tulla valitusta puuttuvasta kirjastosta.

Macro [07.09.2011 20:22:26]

Lainaa #

Voisi olla varmaan ihan hyvä, mutta ohjelma ei mahdu 10" ruudulleni.

Ubuntulla tuo lähti heti käyntiin, nähtävästi kaikki Metabolixin listaamat vaatimukset löytyivät.

Tilli [07.09.2011 20:32:42]

Lainaa #

Ärsyttäviä ne taustan väriset palikat...

jalski [27.09.2011 22:44:18]

Lainaa #

Päivitin omia apukirjastojani ja samalla peliä...

Hollywood Blocks v. 0.2 for Windows


Lähdekoodi, omat kirjastoni ja keskeneräinen dokumentointi löytyypi täältä

Kirjaston primitiivi-moduuli on mallinnettu Infernon Draw-moduulin mukaan ja alla lähes suoraan testinä Infernolta portattu scrolleri demo esimerkiksi:

@DISPLAY {Title = "Hollywood Scroller", Width = 800, Height = 50}

@INCLUDE "hgf/game.hws"


Const #DOTW = 3
Const #DOTH = 3
Const #XGAP = 2
Const #YGAP = 2

game:init()
CreateBrush(1, 800, 50)
img = image:new(1)
fg = #WHITE
bg = #GREEN
message$ = "*** Hollywood 4.8 ***"
textw = TextWidth(message$)
texth = TextHeight(message$)
textr = rect:new( { Min = { x = 0, y = 0 }, Max = { x = textw, y = texth } } )
CreateBrush(2, textr:dx(), textr:dy() )
textimg = image:new(2)
textimg:drawText(point:new(), message$)
textbytes = textimg:readpixels(textimg.r)
textimg = Nil
tickerheight = Int((texth * #DOTH) + ((texth - 1) * #YGAP))
tickery = Int(img.r.min.y + (img.r:dy() - tickerheight) / 2)
nscrdots = Int((img.r:dx() - #DOTW) / (#DOTW + #XGAP))
tickerw = nscrdots + textw
scrollr = rect:new( { Min = { x = img.r.min.x, y = tickery }, Max = { x = img.r.max.x - (#DOTW + #XGAP), y = tickery + texth * (#DOTH + #YGAP) } } )
dotx = Int(nscrdots * (#DOTW + #XGAP))
SetFillStyle(#FILLCOLOR)

For Local textx = 0 To tickerw - 1 Step 1
	img:drawImg(scrollr, img, { x = #DOTW + #XGAP, y = tickery } )
		For Local y = 0 To texth - 1 Step 1
			doty = Int(tickery + y * (#DOTH + #YGAP))
			drawr = rect:new( { Min = { x = dotx, y = doty }, Max = { x = dotx + #DOTW, y = doty + #DOTH } } )
			img:drawRect(drawr, bg)
		Next
Next

game.buffer:drawImg(img.r, img, point:new() )
VWait()
Flip()

Repeat
	For Local textx = 0 To tickerw - 1 Step 1
		img:drawImg(scrollr, img, { x = #DOTW + #XGAP, y = tickery } )
		For Local y = 0 To texth - 1 Step 1
			fill = bg
			If textx < textw
				If textbytes[Int(textx + (y * textw))] <> #BLACK Then fill = fg
			EndIf

			doty = Int(tickery + y * (#DOTH + #YGAP))
			drawr = rect:new( { Min = { x = dotx, y = doty }, Max = { x = dotx + #DOTW, y = doty + #DOTH } } )
			img:drawRect(drawr, fill)
		Next

		game.buffer:drawImg(img.r, img, point:new() )
		VWait()
		Flip()
	Next
Forever

Sivun alkuun

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta