Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: ASCII peli "julkaistu"

Sivun loppuun

Tommittaja [23.04.2009 17:58:17]

#

Niin että laitoin tuonne minun kotisivulleni oman ASCII-pelini uuden version(ei se vanha, jos joku on katsonut), nyt siinä on alkuvalikkokin ja ääkköset... Pelin nimi on Quest of ASCII. Se on tekstipohjainen, eli... kyllä; Enter, Enter, Enter, Enter... mutta katsokaa, jos kiinnostaa

PS: Kamalaa kirjoittaa näin tarkkaa puhekieltä...

Edit: voi kyllä neuvoa, miten teen paremmaksi, esim vältän tuota kamalaa toistoa... yritin kyllä tehdä liikkumisesta metodin, mutta se metodi oli riippuvainen tasojen sisällä olevista muuttujista, joten ei toiminut oikein... tai sitten en kokeillut tarpeeksi ;D

Tommittaja [23.04.2009 19:50:47]

#

"Edit": miksei viestejä voi muokata enää vähän ajan päästä, tämä on ärsyttävää?

Juhko [23.04.2009 19:59:01]

#

Tota noin...

1. Ei omaa pelimoottoria jokaiselle tasolle. Silloin ei tarvitse myöskään tehdä liikkumisesta metodia.
2. Ei enterin hakkaussysteemiä. Tai no, ei komentorivillä ajettavissa Java-ohjelmissa taida muuta mahdollisuutta ollakaan. :(
3. Java-pelit tehdään appletteihin, ei komentorivillä ajettavaksi.

Itse peli oli ihan ok. :)

Tommittaja kirjoitti:

"Edit": miksei viestejä voi muokata enää vähän ajan päästä, tämä on ärsyttävää?

Se on harkittu ominaisuus. Jos on ihan pakko muokata, niin viestin numeron voi katsoa lähdekoodista.

ps. FreeWebs... >_<

Tommittaja [23.04.2009 21:03:07]

#

Juhko kirjoitti:

ps. FreeWebs... >_<

mikä muukaan? en ihan viitsisi maksaa omasta sivusta :P

Juhko kirjoitti:

3. Java-pelit tehdään appletteihin, ei komentorivillä ajettavaksi.

ja kukahan niin sanoo? Onhan quakestakin tehty javalle peli, eikä ihan appletti = sovelma taida olla.

Edit: vielä yksi juttu: miten teen sen pelimoottorin niin, että voin laittaa siihen kaikki ominaisuudet?

PS: aiemmat pelimoottorit on nopeampia, koska niissä on vähemmän vertailuja, toisin kuin esim: taso4(); ssä... se ei kyllä ole mikään hyvä syy, mutta en vain ole jaksanut muuttaa niin paljoa. jos neuvoisit, voisin kokeilla?

tneva82 [23.04.2009 21:21:02]

#

Jooph eli tosiaan tee yksi pelimoottori joka hoitaa homman. Kannattaa esmes lukaista kartan tiedot tekstitiedostosta. Näin myös testaileminen helpottuu kun ei ohjelmaa tarvitse kääntää jokaista kartan muokkausta varten.

Esmes yksinkertainen formaatti voisi olla:

kartan_leveys kartan_korkeus(näiden avulla luot oikeankokoiset taulukot)
aloitus_x aloitus_y
lopetus_x lopetus_y
minimi_marjojen_määrä_voittoon
kartan data jonka luet suoraan karttaan

Kun aloitat kentän lataat ensin tuon tiedon(en nyt muista javan tiedostonkäsittelyä mutta kyllä sen pitäisi olla mahdollista).

Tuon pitäisi tehdä siitä huomattavasti vähemmän kopioimista vaativaa.

Myöskin tuossa liikkumissysteemissä on liikaa kopiomista. Kannattaa tehdä niin että lasket uudet x ja y koordinaatit niissä talteen ja vasta sen JÄLKEEN katsot mihin tulit. Näin ei tarvitse laittaa tarkistuskoodia jokaiselle näppäimelle vaan yhteen ainoaan paikkaan. Jotenkin näin:

switch(liike) {
case 'w':
uusi_y=y+1;
uusi_x=x;
break;
case 'a':
uusi_y=y;
uusi_x=x+1;
break;
...
}

switch(taulu[uusi_y][uusi_x]) {
case 'o':
hedelmat++;
x=uusi_x;
y=uusi_y;
taulu[y][x]=pelaaja;
break;
//jne. Huom ei tarvitse tutkia '#' tapausta kunhan pidät huolta että muissa tapauksissa liikkuu. Näin tämä ei liiku # ruutuun
}

Pari vinkkiä ohjelman parantamiseen.

Tommittaja [23.04.2009 21:42:26]

#

tsot tsot... jos laitan tarkistuksen vasta JÄLKEEN, niin silloin en voi tarkistaa, esim. sainko hedelmän, koska olen jo piirtänyt ukon sen päälle, ja näin en siis saa hedelmää :P

+ sitten pitäisi myös tehdä oma juttunsa sinne kaikille vihuille ja teleporteille yms.

++ ja silloin joutuisin joko määrittämään koordinaatit kaikelle, tai skannaamaan koko taulukon läpi vastaanotinta varten <--- esim.

edit: mikä tuo toinen switch on?? en ole nähnyt noin tehtävän ennen?

tneva82 [24.04.2009 06:37:43]

#

Tommittaja kirjoitti:

tsot tsot... jos laitan tarkistuksen vasta JÄLKEEN, niin silloin en voi tarkistaa, esim. sainko hedelmän, koska olen jo piirtänyt ukon sen päälle, ja näin en siis saa hedelmää :P

Siis ensin tarkistat mihin olisit siirtymässä. SITTEN tarkistat millaiseen ruutuun olet menossa. Se oli ideana ;-)

Eli switch(liike) kohdassa et liikuta hahmoa viellä mihinkään vaan laitat väliaikaisiin uusi_x uusi_y muuttujiin ehdokas indeksit. Senjälkeen sitten katsot mitä sieltä löytyy. Jos hedelmä otat sen ja liikut sinne. Jos tyhjä ruutu liikut sinne. Jos teleportti liikut sinne minne se vie. Oletustapaus on suljettu ruutu joten et liiku minnekkään vaan loikkaat ulos switchistä.

Nuo teleportit sitten kannattaa varmaan laittaa omiin tietoihin jälleen ettei tarvitse kovakoodata. Tee esmes apuluokka teleport joka sisältää kohderuudun koordinaatit ja lähtökoordinaatit. Karttaan sitten tunget vaikka ennen kartta dataa jotenkin näin:

teleporttien_määrä
alku_x alku_y kohde_x kohde_y
...jatka jokaiselle teleportille(tuo teleporttien määrä jotta tiedät montako riviä luet. Helpottaa parserin tekoa kun ei tarvitse tulkita mitä luettu tieto on vaan voi lähteä oletuksesta että noudattaa tiedoston formaattia. Exceptionit kannattaa lukaista tietty mutta ei tarvitse pähkäillä onko tämä kartta dataa vai teleportteja).

Luet ne, täytät luokan tiedot. Voit karttaan joko kovalaittaa ne suoraan tai kartan luettuasi käydä teleportit läpi ja muokata karttaa laittamalla teleportit oikeisiin paikkoihin. Pelin aikana sitten jos liikut teleporttiin käyt teleporttitaulukon läpi ja jos löydät sen jonka alku_x ja alku_y täsmää vaihdat sijainnin kohde_x ja kohde_y ruutuihin.

Sama idea toimii myös muihin erikoisempiin ratkaisuihin kuin teleportit. Periaatteessa hedelmätkin voisit toteuttaa näin mutta ne toimii suoraan karttadatassakin.

lainaus:

edit: mikä tuo toinen switch on?? en ole nähnyt noin tehtävän ennen?

Siinä siis juuri tarkistetaan millaiseen ruutuun ollaan menossa. Ekassa otetaan koordinaatit jonne olisit liikkumassa. Vasta toisessa(tarkistettuasi onko kohderuutu sellainen johon voit liikkua ja vaatiiko se erikoistoimia) liikut sinne. Tuon voisi tehdä if(taulu[uusiy][uusix]=='o') tyyliin mutta switch on selkeämpi ja paremmin sopiva tuollaiseen.

Ja asiasta toiseen katso ihmeessä onko javassa joku keino tyhjentää konsolin ruutu(clear tms käsky). Nyt vähän hämää kun edellinenkin siirto näkyi kokonaisuudessaan ruudulla :D Plus en tiedä onko mahdollista mutta tekisi pelaamisesta paljon sujuvampaa jos enteriä ei tarttisi naputella kokoajan. En tiedä miten tuo onnistuu javalla mutta jotain jota voisit katsoa.

Tommittaja [24.04.2009 14:55:57]

#

En voi oikein tehdä komentorivi/tekstipohjaista ohjelmaa, ilman että naputtelee ENTERiä, sillä se ominaisuus toimii vain, jos siinä on kunnollinen GUI + muuta sälää...

Sitten vielä tuo "pelimoottori"... Teen varmaankin vain siitä liikkumisesta sen metodin, en jaksa tehdä noin radikaaleja muutoksia

Juhko [25.04.2009 00:16:23]

#

En usko, että yhden pelimoottorin tekeminen olisi niin suuri muutos ohjelmalle. Voit esimerkiksi antaa tasometodille (jota kutsut main:ista) parametriksi tason numeron, ja sitten valitset switch-lauseella oikean taulukon. Kun metodia on kutsuttu, kutsut sitä uudestaan yhtä isommalla parametrilla.

Rocceri [25.04.2009 14:35:48]

#

Tommittaja kirjoitti:

Juhko kirjoitti:

ps. FreeWebs... >_<

mikä muukaan? en ihan viitsisi maksaa omasta sivusta :P

Onkohan tämä tk domaini FreeWebsiltä? En ole törmännyt siellä sellaiseen.
Voisit ottaa Jouluserveriltä (http://jouluserver.com) sivutilan 100mt ilmaiseksi, ja liittää domainin siihen?

---
Ihan hienot sivut, mutta vähän hitaat. Tuo FreeWebs ei tosiaankaan ole paras vaihtoehto

janijohannes [25.04.2009 14:44:29]

#

Rocceri kirjoitti:

Tommittaja kirjoitti:

Juhko kirjoitti:

ps. FreeWebs... >_<

mikä muukaan? en ihan viitsisi maksaa omasta sivusta :P

Onkohan tämä tk domaini FreeWebsiltä? En ole törmännyt siellä sellaiseen.
Voisit ottaa Jouluserveriltä (http://jouluserver.com) sivutilan 100mt ilmaiseksi, ja liittää domainin siihen?

---
Ihan hienot sivut, mutta vähän hitaat. Tuo FreeWebs ei tosiaankaan ole paras vaihtoehto

Ei ole ei. tk-Kdomainin saa http://www.dot.tk sivulta.

EDIT: Niin, siis en kumminkaan suosittele hankkimaan Kdomainia.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta