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 SUBItseasiassa todella hyvä! :)
Hyvä!
hieno. en varmaan ittekkään yhtä hyvää pystyis tekee.
tosin hidastuksen olis voinu tehdä paremmin
hiano
Toi peli rupee olemaan jo pelattava. Tällä hetkellä paras näkemäni QBasicilla tehty matopeli.
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!
Laita viivettä suuremmaksi, jos haluat pelin hitaammaksi.
Pitäs olla utomaattinen hidastus
Olen Temen kanssa samaa mieltä ! Erittäin hieno kun hieman viilailee, tai oikeastaan ilman viilaustakin kaunis.
Hyvä,selkeä koodi ja peli on hauska :)
ei toimi kunnolla mihin versioon toi on suunniteltu mul on QB 4.5
7.1 pitäisi toimia ihan hyvin. En muista olenko kokeillut sitä 4.5-versiossa.
Tuossa matopelissä mato taitaa olla liaan lähellä seinää, kun peli ei ehdi edes alkaa, kun mato jo törmää seinään.
Joo tota noin.... ois ihan kiva, ku mä en saa tätä toimimaan..... et miten ihmees saisin ? voiko joku auttaa mua ?
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
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.
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.
Olisivat esimerkkisivut kivoja..
Aihe on jo aika vanha, joten et voi enää vastata siihen.