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
RETURNEi 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.