Kirjautuminen

Haku

Tehtävät

Koodit: QB: Matopeliesimerkki

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

Kommentit

snakari [04.02.2002 15:52:54]

#

Ei mikään loistelias, se ei vaihda sitä suuntaa heti, vaan se liikkuu eka kerran eteenpäin ja sit suunnan vaihto!

Spoq [11.04.2002 09:10:01]

#

Syötävät loppuu hetken päästä kun on pelannut. :(

mgv [29.07.2002 21:53:42]

#

Nooh... Ihan sopiva, mutta vaikeus-astetta saisi kyllä säätää...

Toni_ [01.08.2002 22:56:42]

#

Käytin ó merkkiä omenana, hyvin toimii:)

Yo-guy [14.08.2002 19:23:31]

#

Syötävät kataa yllättäen, muuten hyvä peli

Gwaur [09.09.2003 17:19:33]

#

Olen omena, olen omena, olen pyöreä omena
Olen omena, olen omena, olen punainen omena

Bill Keltanen [24.09.2003 17:08:05]

#

Iha hyvä peli!

Bill Keltanen [24.09.2003 17:08:10]

#

Iha hyvä peli!

Stume [12.04.2004 09:29:03]

#

Iha hyvä peli!

moptim [03.07.2006 21:15:21]

#

binäärit plz

tgunner [23.07.2006 14:57:47]

#

Käännä ite.

hunajavohveli [23.07.2006 14:59:05]

#

Mihin binäärejä tarvitset? Kyllähän tuon pitäisi tulkkautua ihan hyvin QB:llä.

moptim [14.02.2007 16:40:09]

#

Nääjuu. Tuon vinetyksen aikaan ei ollut kuikpeisikkiä. Nyt on 4.5 -versio.

moptim [14.02.2007 16:49:25]

#

Ja hyvä tämä on. Tosin näppäintenpainalluksiin ei reagoi kunnolla. Minäkin kokeilin merkkiä "ó" omppuna. Hienohan se.

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta