Olen tekemässä (QB)seikkailupeliä, jossa pitäisi pystyä liikkumaan kuten nethacissa.(joo, surkee räpellys siitä kumminkin tulee)Kysyisinkin nyt vain, miten pelimaailma pitäisi tehdä(ASCII-grafiikoilla) eli piitäkö liikuttaa huonetta vai pelihahmoa?Kuinka tämän voisi hoitaa? Älkää kiitos pitäkö n00bin kysymystä tyhmänä.
kannattaa käyttää inkey$ -komentoa...
lue helpistä miten se toimii... :-)
ja pieni lisäys: älä liikuta huonetta... Se on erittäin vaikeaa (kokemusta on). Ehdottaisin että liikkuminen on eri kerrosten välillä olisi saman tyylistä kuin NetHackissa... Eli siis etsitään portaikko ja painetaan jotakin näppäintä, jotta pelaaja voisi siirtyä seuraavaan kerrokseen... :)
Tämä pieni projekti saattais kiinnostta myös minua...
Kirjoitan juuri opassarjaa tuollaisten pelien tekemisestä. Toivon mukaan saan toisen osan piakkoin valmiiksi, niin voin julkaista sen yhdessä ensimmäisen kanssa.
Jee minäkin olen tekemässä sen tyylistä peliä (vaikka QBASIC on aika huono kieli siihen)
Voin antaa aluksi esimerkin liikkumistyylistäni:
WIDTH 80, 50 ' Koko x1 = 1: y1 = 1 ' Tämä on se @ merkkiukko DO painallus$ = INKEY$ IF vanhax1 <> x1 OR vanhay1 <> y1 THEN ' Tämä on aika kömpelö tyyli tehdä ukon poistaminen, mutta en viitsi kertoa minun tyyliäni koska se oli aika vaikea tehdä :) CLS vanhax1 = x1: vanhay1 = y1 LOCATE vanhay1, vanhax1: PRINT " " LOCATE y1, x1: PRINT CHR$(64) ' 64 on @ END IF 'Liikkuminen IF y1 >= 6 THEN IF painallus$ = CHR$(0) + CHR$(72) THEN LOCATE y1, x1: PRINT " ": y1 = y1 - 1 'Ylös IF y1 <= 49 THEN IF painallus$ = CHR$(0) + CHR$(80) THEN LOCATE y1, x1: PRINT " ": y1 = y1 + 1 'Alas IF x1 >= 2 THEN IF painallus$ = CHR$(0) + CHR$(75) THEN LOCATE y1, x1: PRINT " ": x1 = x1 - 1 'Vasen IF x1 <= 79 THEN IF painallus$ = CHR$(0) + CHR$(77) THEN LOCATE y1, x1: PRINT " ": x1 = x1 + 1 'Oikee LOOP UNTIL painallus$ = CHR$(27) ' Loopataan kunnes painetaan ESC
Mutta ei ole tietenkään sopivaa vain kysellä valmiita koodeja, joten kokeile kehittää omakin, tuo on vai opetukseksi.
Ei sitä piirtämistä ja kumitusta pidä tehdä kuin yhden kerran. Menee aivan sekaisin koko koodi, jos rupeaa laittamaan erikseen jokaiselle liikkumissuunnalle. Malttakaa odotella sitä opassarjaa. Yritän selittää asiat siinä niin hyvin kuin osaan.
Täh miten niin erikseen jokaiselle liikkumissuunnalle?
Pitäisikö noi liikkumiset sijoittaa johonkin ton DO LOOP:n ulkopuolelle ja sitten lataa ne jotenkin tohon?
Valaise vähän tuolla ideallasi jos sopii ;)
Ensin luetaan näppäin, sitten kumitetaan, sitten liikutaan, ja lopuksi piirretään. Vaikkapa niin.
Noita printtejä ja locateja ei tarvitse ollenkaan noissa if lauseissa koska vain koordinaatteille tehdään jotakin.
Ja vaikka eraggo sanoo toista, minä suosittelen mieluummin tason liikuttamista, koska silloin voit tehdä maailmoja, jotka ovat suurempia kuin pelaajan näyttö. Tällöin on järkevintä piirtää aivan kaikki silmukan lopussa (ensin taso, sitten tyyppi kaiken keskelle) eikä mitään aiemmin.
R.Nyrhinen kirjoitti:
Valaise vähän tuolla ideallasi jos sopii ;)
Valaisen asiaa kyllä siinä oppaassa sitten. :) Pääsin eilen taas hyvin vauhtiin kirjoittamisessa. Toinen osa saattaa valmistua jo ensi viikolla. Kerron myös mahdollisesti tulevissa oppaissa tuosta tasonliikuttamisvaihtoehdosta, jossa pelaaja pysyy keskellä näyttöä ja taso liikkuu vastakkaiseen suuntaan kuin pelaaja. Mutta ensin käsittelen sen, että pelaajan liikuttama merkki itse liikkuu, koska näin se on useimmissa merkkigraafisisssa peleissä (ainakin mitä itse olen pelannut).
Joo kiitos, kokeile kirjoittaa se vauhdilla :D. Milloin se muuten ilmestyy?
Ensimmäinen osa on jo valmis, ja ajattelin julkaista sen yhdessä toisen osan kanssa. Ja toinen osa, kuten sanoin, valmistunee toivon mukaan jo ensi viikon puolella.
Metabolix kirjoitti:
Ja vaikka eraggo sanoo toista, minä suosittelen mieluummin tason liikuttamista, koska silloin voit tehdä maailmoja, jotka ovat suurempia kuin pelaajan näyttö. Tällöin on järkevintä piirtää aivan kaikki silmukan lopussa (ensin taso, sitten tyyppi kaiken keskelle) eikä mitään aiemmin.
Aivan totta, ei koko näyttöä kannata kerrallaan valloittaa. Näyttämällä vain osan pelattavasta maailmasta esim. 20x20 boksissa antaa mahdollisuuden tehdä muita tarvittavia "bokseja" näyttöön.
Olen nyt saanut kirjoitettua toisen osan valmiiksi. Sitä tarkistellaan nyt, ja oppaat julkaistaneen heti, kun saan mahdollisesti löytyvät virheet korjattua. Eli kaippa sitä uskaltaa piakkoin odottaa. :)
No nyt on julkaistu, jos et ole vielä etusivulta huomannut.
https://www.ohjelmointiputka.net/oppaat/opas.
Tuossa lähdetään liikkeelle aivan alusta, joten ei tarvitse tietää mitään ennalta tällaisen pelin tekemisestä, mutta QB:n ja ohjelmoinnin perusteet yleensä pitäisi olla kyllä hanskassa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.