Kirjoittaja: Antti Laaksonen
Kirjoitettu: 02.02.2002 – 22.11.2011
Tagit: pelinteko, koodi näytille, peli, vinkki
Yksinkertainen mutta kuitenkin täydellisesti toimiva QBasic-matopeli. Koodia saa käyttää omiin tarkoituksiin.
'QBMato - yksinkertainen QBasic-matopeli, jota saa käyttää omien pelien pohjana 'Tekijä Antti Laaksonen, antti.laaksonen@mbnet.fi 'määritykset TYPE paikka x AS INTEGER y AS INTEGER END TYPE DIM mato(1 TO 50) AS paikka DIM pituus AS INTEGER DIM pituuslisa AS INTEGER DIM suunta AS INTEGER DIM aarre AS paikka DIM pisteet AS INTEGER DIM pistelisa AS INTEGER DIM nopeus AS INTEGER DIM nopeuslisa AS INTEGER RANDOMIZE TIMER 'alkuvalmistelut SCREEN 1 suunta = 2 'aloitussuunta: 1 vasen, 2 ylös, 3 oikea, 4 alas pituus = 4 'madon aloituspituus pituuslisa = 2 'miten paljon mato pitenee saatuaan aarteen pisteet = 0 'aloituspisteet pistelisa = 100 'miten paljon pisteitä saa yhdestä aarteesta nopeus = 1000 'aloitusnopeus: mitä pienempi sen nopeampi nopeuslisa = 20'miten paljon nopeus lisääntyy madon saatuaan aarteen FOR i = 1 TO pituus mato(i).x = 10 mato(i).y = 15 + i NEXT GOSUB piirraraamit GOSUB piirramato GOSUB arvoaarre GOSUB paivitatiedot 'pääsilmukka DO FOR i = 1 TO nopeus WAIT &H3DA, 8 NEXT GOSUB siirramato GOSUB piirramato a = TIMER SELECT CASE INKEY$ CASE CHR$(0) + "K" IF suunta <> 3 THEN suunta = 1 CASE CHR$(0) + "H" IF suunta <> 4 THEN suunta = 2 CASE CHR$(0) + "M" IF suunta <> 1 THEN suunta = 3 CASE CHR$(0) + "P" IF suunta <> 2 THEN suunta = 4 CASE CHR$(27) END END SELECT LOOP 'aliohjelmat piirramato: IF mato(pituus).y <> 0 THEN LOCATE mato(pituus).y, mato(pituus).x: PRINT " " END IF FOR i = 1 TO pituus - 1 IF mato(i).y <> 0 THEN LOCATE mato(i).y, mato(i).x: PRINT "█" END IF NEXT RETURN siirramato: FOR i = pituus - 1 TO 1 STEP -1 mato(i + 1).x = mato(i).x mato(i + 1).y = mato(i).y NEXT SELECT CASE suunta CASE 1 mato(1).x = mato(2).x - 1 mato(1).y = mato(2).y CASE 2 mato(1).x = mato(2).x mato(1).y = mato(2).y - 1 CASE 3 mato(1).x = mato(2).x + 1 mato(1).y = mato(2).y CASE 4 mato(1).x = mato(2).x mato(1).y = mato(2).y + 1 END SELECT IF mato(1).x < 2 OR mato(1).y < 3 OR mato(1).x > 39 OR mato(1).y > 20 THEN GOSUB gameover FOR i = 2 TO pituus - 1 IF mato(1).x = mato(i).x AND mato(1).y = mato(i).y THEN GOSUB gameover NEXT IF mato(1).x = aarre.x AND mato(1).y = aarre.y THEN pisteet = pisteet + pistelisa GOSUB paivitatiedot GOSUB arvoaarre IF nopeus > 100 THEN nopeus = nopeus - nopeuslisa pituus = pituus + pituuslisa END IF RETURN piirraraamit: CLS PRINT PRINT "╔"; FOR i = 1 TO 38 PRINT "═"; NEXT PRINT "╗" FOR i = 2 TO 20 PRINT "║" + SPACE$(38) + "║" NEXT PRINT "╚"; FOR i = 1 TO 38 PRINT "═"; NEXT PRINT "╝" RETURN arvoaarre: aarre.x = INT(RND * 36) + 2 aarre.y = INT(RND * 18) + 3 LOCATE aarre.y, aarre.x: PRINT "*" RETURN gameover: CLS PRINT "Peli päättyi!" PRINT PRINT "Pisteet:"; pisteet END RETURN paivitatiedot: LOCATE 1, 1: PRINT "QBMato" LOCATE 1, 40 - LEN(STR$(pisteet)): PRINT pisteet RETURN
Ei mikään loistelias, se ei vaihda sitä suuntaa heti, vaan se liikkuu eka kerran eteenpäin ja sit suunnan vaihto!
Syötävät loppuu hetken päästä kun on pelannut. :(
Nooh... Ihan sopiva, mutta vaikeus-astetta saisi kyllä säätää...
Käytin ó merkkiä omenana, hyvin toimii:)
Syötävät kataa yllättäen, muuten hyvä peli
Olen omena, olen omena, olen pyöreä omena
Olen omena, olen omena, olen punainen omena
Iha hyvä peli!
Iha hyvä peli!
Iha hyvä peli!
binäärit plz
Käännä ite.
Mihin binäärejä tarvitset? Kyllähän tuon pitäisi tulkkautua ihan hyvin QB:llä.
Nääjuu. Tuon vinetyksen aikaan ei ollut kuikpeisikkiä. Nyt on 4.5 -versio.
Ja hyvä tämä on. Tosin näppäintenpainalluksiin ei reagoi kunnolla. Minäkin kokeilin merkkiä "ó" omppuna. Hienohan se.