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