Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Matopeli2

Sivun loppuun

Sami [23.02.2003 11:38:14]

#

Hieman parempi versio Antin tekemästä matopelistä: Mato kääntyy paremmin, ruuat ei katoa yhtäkkiä (ei ainakaan yhtä helposti), pelialue on suurempi ja mato on hieman paremman näköinen.

DECLARE SUB peliloppu ()
DECLARE SUB uusiruoka ()
TYPE sijainti
  x AS INTEGER
  y AS INTEGER
END TYPE

DIM SHARED Mato(1 TO 1000) AS sijainti
DIM SHARED pituus AS INTEGER
DIM SHARED ruokax AS INTEGER
DIM SHARED ruokay AS INTEGER
DIM SHARED pisteet AS INTEGER

matox = 25           ' Madon alkukoordinaatit
matoy = 30
suunta = 1           ' Madon aloitussuunta (1 - oikea, 2 - alas, 3 - vasen, 4 - ylös)
pituus = 5           ' Madon alkupituus
pituuslisa = 1       ' Kuinka paljon pituus lisääntyy kun saa ruokaa
pistelisa = 1        ' Kuinka monta pistettä saa jokaisesta ruoasta
viive = 10000


SCREEN 12
WIDTH 80, 60
RANDOMIZE TIMER

uusiruoka       ' Laittaa ensimmäisen ruuan ruudulle
LINE (7, 15)-(633, 456), 4, B     ' Piirtää alueen rajat
LOCATE 1, 1
PRINT pisteet


DO

IF Mato(pituus).x > 0 AND Mato(pituus).y > 0 THEN     ' Pyyhkii matoa loppupäästä
  LOCATE Mato(pituus).y, Mato(pituus).x
  PRINT " "
END IF


SELECT CASE INKEY$
  CASE CHR$(27)                     ' Esc lopettaa pelin
  peliloppu
                                    ' Nuolet muuttavat suuntaa:
  CASE CHR$(0) + "K"                ' Oikealle
  IF suunta <> 1 THEN suunta = 3

  CASE CHR$(0) + "H"                ' Alas
  IF suunta <> 2 THEN suunta = 4

  CASE CHR$(0) + "M"                ' Vasemmalle
  IF suunta <> 3 THEN suunta = 1

  CASE CHR$(0) + "P"                ' Ja ylös
  IF suunta <> 4 THEN suunta = 2
END SELECT



SELECT CASE suunta           ' Siirtää madon pään koordinaatteja
  CASE 1
  matox = matox + 1

  CASE 2
  matoy = matoy + 1

  CASE 3
  matox = matox - 1

  CASE 4
  matoy = matoy - 1
END SELECT

IF matox >= 80 THEN peliloppu        ' Lopettaa ulosmentäessä
IF matox <= 1 THEN peliloppu
IF matoy >= 58 THEN peliloppu
IF matoy <= 2 THEN peliloppu

FOR i = pituus - 1 TO 1 STEP -1      ' Siirtää madon muita koordinaatteja
  Mato(i + 1).x = Mato(i).x
  Mato(i + 1).y = Mato(i).y
NEXT i

Mato(1).x = matox
Mato(1).y = matoy


IF matox = ruokax AND matoy = ruokay THEN       ' jos madon pää on ruuan kohdalla:
pituus = pituus + pituuslisa                    ' Pituus kasvaa
pisteet = pisteet + pistelisa                   ' Pisteet kasvavat
LOCATE 1, 1
PRINT pisteet
LOCATE ruokay, ruokax                           ' Poistetaan vanha ruoka
PRINT " "
uusiruoka                                       ' ja Luodaan uusi ruoka
END IF

CIRCLE (8 * matox - 4, 8 * matoy - 4), 3        ' Piirretään matoa

FOR i = 2 TO pituus
IF matox = Mato(i).x AND matoy = Mato(i).y THEN peliloppu
NEXT i

FOR i = 1 TO viive
NEXT i

LOOP

SUB peliloppu
LOCATE 1, 1
PRINT "Peli loppui"
PRINT "Sait"; pisteet; "pistettä"
SLEEP
END
END SUB

SUB uusiruoka
ruokax = RND * 77 + 2      ' Arpoo uuden ruuan sijainnin
ruokay = RND * 54 + 3

FOR i = 1 TO pituus
  IF ruokax = Mato(i).x AND ruokay = Mato(i).x THEN       ' Arpoo sen uudelleen, jos se on menossa madon päälle
  ruokax = RND * 77 + 2
  ruokay = RND * 54 + 3
  END IF
NEXT i

LOCATE ruokay, ruokax
PRINT "*"

END SUB

TH [24.02.2003 10:45:12]

#

Itseasiassa todella hyvä! :)

KimmoKM [24.02.2003 12:13:56]

#

Hyvä!

snakari [24.02.2003 12:31:06]

#

hieno. en varmaan ittekkään yhtä hyvää pystyis tekee.
tosin hidastuksen olis voinu tehdä paremmin

anomizer [24.02.2003 15:40:11]

#

hiano

Teme [24.02.2003 16:25:28]

#

Toi peli rupee olemaan jo pelattava. Tällä hetkellä paras näkemäni QBasicilla tehty matopeli.

T.M. [24.02.2003 18:20:33]

#

pyörii VÄHÄN liian nopeesti mun koneella :D
en ehi nähä ees koko matoa enne ku se on jo seinässä xD
kai toi on ihan käyttökelponen vinkki kuitenkin!

Sami [24.02.2003 19:05:04]

#

Laita viivettä suuremmaksi, jos haluat pelin hitaammaksi.

Olli Vanhoja [25.02.2003 08:13:00]

#

Pitäs olla utomaattinen hidastus

Ämppi [25.02.2003 13:39:11]

#

Olen Temen kanssa samaa mieltä ! Erittäin hieno kun hieman viilailee, tai oikeastaan ilman viilaustakin kaunis.

CodeMan [27.02.2003 18:24:18]

#

Hyvä,selkeä koodi ja peli on hauska :)

Suominen90v [30.09.2003 19:50:32]

#

ei toimi kunnolla mihin versioon toi on suunniteltu mul on QB 4.5

Sami [05.10.2003 22:19:16]

#

7.1 pitäisi toimia ihan hyvin. En muista olenko kokeillut sitä 4.5-versiossa.

jsufai [25.12.2003 20:51:24]

#

Tuossa matopelissä mato taitaa olla liaan lähellä seinää, kun peli ei ehdi edes alkaa, kun mato jo törmää seinään.

DestroyeD [18.12.2004 14:27:13]

#

Joo tota noin.... ois ihan kiva, ku mä en saa tätä toimimaan..... et miten ihmees saisin ? voiko joku auttaa mua ?

( http://www.fobby.urli.net )

Huuhkain [12.11.2005 14:43:48]

#

Yks omppu ilmesty madon päälle niin että madon peräpää sitte kumitti sen ompun kokonaan pois :)
Ruutu oli sitte 100% omputon. Onneks tajusin kuitenki et se omppu on edelleen siinä, tosin näkymättömänä :D

Sami [23.11.2005 23:22:22]

#

Sitä se teetti, kun ei osannutkaan silloin vielä käyttää silmukoita ihan niin hyvin kuin olisi pitänyt :)
Tuohan siis kokeilee arpoa ruuan uudelleen ainoastaan yhden kerran, jos ensimmäinen arvonta sattuu osumaan madon päälle.

Chaosworm [03.03.2007 09:37:05]

#

Ihan hyvä. Kommentoitu niin, että siitä saa todella hyvin selvän, mistä olen kiitollinen. Mato-pelien tekeminen ei oikein minulta tunnu onnistuvan :)
EDIT: ja minulla on QB 1.0, jossa toimii.

Numis97 [28.04.2010 16:49:13]

#

Olisivat esimerkkisivut kivoja..


Sivun alkuun

Vastaus

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

Tietoa sivustosta