Kirjoittaja: Qman
Kirjoitettu: 31.05.2006 – 31.05.2006
Tagit: pelinteko, koodi näytille, peli, vinkki, DOS
Paranneltu versio Antti Laaksosen kaahailusta parkkipaikalla.
tässä on mm. uusia automalleja(vaihtuu välilyönnistä), bensamittari, aika, turbot(nollasta)
törmäystarkistus saisi kuitenkin olla parempi(ehdotuksia, ehdotuksia)...
Pitemmittä puheitta, itse asiaan:
DECLARE SUB piirrakentta () SCREEN 13 DIM SHARED x AS SINGLE, y AS SINGLE, tankki AS INTEGER, vari AS SINGLE DIM SHARED malli AS INTEGER, turbo AS INTEGER, xs AS SINGLE, ys AS SINGLE pii = 4 * ATN(1) col = 35 x = 290 'sijoitetaan auto y = 100 kaantyvyys = 1 nopeus = 3 kulma = 60 LINE (0, 0)-(320, 200), 0, BF DO LINE (x - 30, y - 30)-(x + 30, y + 30), 0, BF x = x - SIN(kulma * 2 * pii / 360) * nopeus y = y - COS(kulma * 2 * pii / 360) * nopeus IF malli = 0 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5c14r2br4r2br1bd1 c0l10" DRAW "d1br1c1r8c0br1d1bl1c1l8c0bl1d1" DRAW "br1c1r8c0br1d1bl1c1l8c0bl1d1" DRAW "c0r10d1bl1c3l8bl1c0d1r10" FOR i = 1 TO 5 DRAW "d1bl1c1l8c0bl1d1br1c1r8c0br1d0" NEXT DRAW "d1l10bd1br1c4r0br8r0" ELSEIF malli = 1 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c10 r3br2r3br1bd1c0l10" 'etuvalot DRAW "d1br1 c8 r8c0br1d1bl1 c2 l8c0bl1d1" 'katto DRAW "br1 c8 r8c0br1d1bl1 c2 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c7 l8bl1c0d1r10" 'lasi FOR i = 1 TO 4 'pituus DRAW "d1bl1 c2 l8c0bl1d1br1 c8 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c4 r1br6r1" 'takavalot ELSEIF malli = 2 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c14 r2br4r2br1bd1 c0 l10" 'etuvalot DRAW "d1br1 c14 r8c0br1d1bl1 c14 l8c0bl1d1" 'katto DRAW "br1 c14 r8c0br1d1bl1 c14 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c3 l8bl1c0d1r10" 'lasi FOR i = 1 TO 8 'pituus DRAW "d1bl1 c14 l8c0bl1d1br1 c14 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c4 r1br6r1" 'takavalot ELSEIF malli = 3 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c14 r2br4r2br1bd1 c0 l10" 'etuvalot DRAW "d1br1 c13 r8c0br1d1bl1 c13 l8c0bl1d1" 'katto DRAW "br1 c13 r8c0br1d1bl1 c13 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c11 l8bl1c0d1r10" 'lasi FOR i = 1 TO 3 'pituus DRAW "d1bl1 c5 l8c0bl1d1br1 c5 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c12 r2br4r2" 'takavalot ELSEIF malli = 4 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c14 r2br4r2br1bd1 c0 l10" 'etuvalot DRAW "d1br1 c0 r8c0br1d1bl1 c0 l8c0bl1d1" 'katto DRAW "br1 c0 r8c0br1d1bl1 c0 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c18 l8bl1c0d1r10" 'lasi FOR i = 1 TO 8 'pituus DRAW "d1bl1 c0 l8c0bl1d1br1 c0 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c12 r2br4r2" 'takavalot END IF kulma = kulma + kaantyvyys 'käännetään autoa IF kulma > 360 THEN 'vaihdetaan autoa kulma = kulma - 360 malli = malli + 1 IF malli > 4 THEN malli = 0 'tarkistetaan, ettei tule olemattomia autoja END IF col = col + 1 / 4 'lisätään väriä IF col > 60 THEN col = 35 COLOR col LOCATE 13, 16: PRINT "QB-Ralli"; COLOR 25 LOCATE 24, 34: PRINT "(c)Qman"; WAIT &H3DA, 8 LOOP UNTIL INKEY$ <> "" 'itse peliin; alku: x = 40 'määritellään auton ominaisuudet y = 120 kaantyvyys = 10 'kannattaa nopeus = 0 'testata kulma = 0 'eri turbo = 1 'vaihtoehtoja tankki = 3000 kierros = 1 aikass = 0 'nollataan laskuri aikas = 0 aikam = 0 'näytön tyhjennys LINE (0, 0)-(320, 200), 8, BF DO 'vanhojen jälkien siivous LINE (x - 30, y - 30)-(x + 30, y + 50), 8, BF x = x - SIN(kulma * 2 * pii / 360) * nopeus 'liikutetaan autoa y = y - COS(kulma * 2 * pii / 360) * nopeus IF x > 330 THEN x = 0 'lasketaan, meneekö auto reunan yli IF x < 0 THEN x = 330 'jos menee, IF y > 210 THEN y = -10 'palautetaan toiseen reunaan IF y < -10 THEN y = 210 IF nopeus > 2 THEN nopeus = nopeus - 1 / 50 'jos on turbot päällä, hidastetaan 'auton piirtäminen IF malli = 0 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5c14r2br4r2br1bd1 c0l10" DRAW "d1br1c1r8c0br1d1bl1c1l8c0bl1d1" DRAW "br1c1r8c0br1d1bl1c1l8c0bl1d1" DRAW "c0r10d1bl1c3l8bl1c0d1r10" FOR i = 1 TO 5 DRAW "d1bl1c1l8c0bl1d1br1c1r8c0br1d0" NEXT DRAW "d1l10bd1br1c4r0br8r0" ELSEIF malli = 1 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c10 r3br2r3br1bd1c0l10" 'etuvalot DRAW "d1br1 c8 r8c0br1d1bl1 c2 l8c0bl1d1" 'katto DRAW "br1 c8 r8c0br1d1bl1 c2 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c7 l8bl1c0d1r10" 'lasi FOR i = 1 TO 4 'pituus DRAW "d1bl1 c2 l8c0bl1d1br1 c8 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c4 r1br6r1" 'takavalot ELSEIF malli = 2 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c14 r2br4r2br1bd1 c0 l10" 'etuvalot DRAW "d1br1 c14 r8c0br1d1bl1 c14 l8c0bl1d1" 'katto DRAW "br1 c14 r8c0br1d1bl1 c14 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c3 l8bl1c0d1r10" 'lasi FOR i = 1 TO 8 'pituus DRAW "d1bl1 c14 l8c0bl1d1br1 c14 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c4 r1br6r1" 'takavalot ELSEIF malli = 3 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c14 r2br4r2br1bd1 c0 l10" 'etuvalot DRAW "d1br1 c13 r8c0br1d1bl1 c13 l8c0bl1d1" 'katto DRAW "br1 c13 r8c0br1d1bl1 c13 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c11 l8bl1c0d1r10" 'lasi FOR i = 1 TO 3 'pituus DRAW "d1bl1 c5 l8c0bl1d1br1 c5 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c12 r2br4r2" 'takavalot ELSEIF malli = 4 THEN DRAW "bm" + STR$(INT(x)) + "," + STR$(INT(y)) DRAW "TA" + STR$(kulma) DRAW "bu5 c14 r2br4r2br1bd1 c0 l10" 'etuvalot DRAW "d1br1 c0 r8c0br1d1bl1 c0 l8c0bl1d1" 'katto DRAW "br1 c0 r8c0br1d1bl1 c0 l8c0bl1d1" 'katto DRAW "c0r10d1bl1 c18 l8bl1c0d1r10" 'lasi FOR i = 1 TO 9 'pituus DRAW "d1bl1 c0 l8c0bl1d1br1 c0 r8c0br1d0" 'katto NEXT DRAW "d1l10bd1br1 c12 r2br4r2" 'takavalot END IF IF nopeus = 2 THEN kaantyvyys = 20 IF nopeus < 2 THEN kaantyvyys = 10 IF nopeus > 2 THEN kaantyvyys = 25 'näppäimien luku SELECT CASE INKEY$ CASE CHR$(32) malli = malli + 1 'vaihdetaan mallia IF malli > 4 THEN malli = 0 CASE CHR$(48) IF turbo > 0 THEN nopeus = nopeus + 2 'käytetään turbo turbo = turbo - 1 ELSEIF turbo = 0 THEN nopeus = 1 + 1 / 2 'jos käyttää olemattomoa turboja, rangaistaan END IF CASE CHR$(0) + CHR$(72) IF nopeus > 2 THEN nopeus = nopeus ELSE nopeus = nopeus + 1 / 2 IF nopeus > 2 THEN nopeus = 2 'kaasutetaan END IF CASE CHR$(0) + CHR$(80) nopeus = nopeus - 1 / 2 IF nopeus < -1 THEN nopeus = -1 CASE CHR$(0) + "K" kulma = kulma + kaantyvyys 'käännetään IF kulma > 360 THEN kulma = kulma - 360 'oikealle... CASE CHR$(0) + "M" kulma = kulma - kaantyvyys '...ja vasemmalle IF kulma < 1 THEN kulma = kulma + 360 CASE CHR$(27) 'tauko COLOR 4 PRINT " " FOR l = 1 TO 21 PRINT 'ruudun tyhjentäminen NEXT LOCATE 7, 17: PRINT "Tauko" 'tämän luulisi kaikkien tietävän LOCATE 10, 13: PRINT "Lopeta(L)" LOCATE 11, 13: PRINT "Asetukset(A)" LOCATE 12, 13: PRINT "Alusta(R)" LOCATE 13, 13: INPUT "", tauko$ IF tauko$ = "l" THEN END IF tauko$ = "r" THEN GOTO alku IF tauko$ = "a" THEN CLS LOCATE 7, 17: PRINT "Tauko" LOCATE 10, 13: PRINT "Seinät?(K/E)" LOCATE 12, 13: INPUT "", tauko$ IF tauko$ = "e" THEN onkoseinat = 1 IF tauko$ = "k" THEN onkoseinat = 0 END IF LINE (0, 0)-(320, 200), 8, BF END SELECT piirrakentta LINE (0, 191)-(149, 200), 0, BF COLOR 1 LOCATE 1, 1: PRINT "Bensa:"; 'näytetään bensatilanne IF tankki > 2500 THEN 'vaihetaan COLOR 2 'väriä ELSEIF tankki > 2000 THEN 'sen mukaan COLOR 10 'paljonko ELSEIF tankki > 1500 THEN 'bensaa COLOR 14 'on ELSEIF tankki > 1000 THEN 'tankissa COLOR 6 ELSEIF tankki > 500 THEN COLOR 12 ELSEIF tankki > 0 THEN COLOR 4 END IF PRINT tankki / 1000; LOCATE 1, 12: PRINT "l"; COLOR 14 LOCATE 1, 13: PRINT kierros; "/ 5" 'kierrosten määrä COLOR 15 LOCATE 2, 1: PRINT aikam; ":"; 'paljonko aikaa LOCATE 2, 4: PRINT aikas; turbo = turbo - 1 'estetään turboa nousemasta liiaksi COLOR 3 LOCATE 25, 1: PRINT "Turbo "; COLOR 2 PRINT "["; FOR turbo = 1 TO turbo 'näytetään silmukoilla PRINT "*"; 'turbon määrä NEXT LOCATE 25, 11: PRINT "]"; COLOR 14 PRINT "<"; IF tl > 85 THEN PRINT "Û"; IF tl > 170 THEN PRINT "Û"; IF tl > 255 THEN PRINT "Û"; IF tl > 340 THEN PRINT "Û"; IF tl > 425 THEN PRINT "Û"; LOCATE 25, 18: PRINT ">"; IF NOT nopeus = 0 THEN tl = tl + 1 'lisätään turbolaskuriin 1 IF tl > 500 THEN 'jos turbolaskuri on täynnä, turbo = turbo + 1 'lisätään turboa tl = 0 'tyhjätään laskuri END IF IF turbo > 3 THEN turbo = 3 'turboja ei saa olla enempää kuin 3 COLOR 15 IF onkoseinat = 0 THEN IF POINT(x, y + 1) = 15 THEN 'seinätarkistus y = y - 1 nopeus = -.05 END IF IF POINT(x, y - 1) = 15 THEN y = y + 1 nopeus = -.05 END IF IF POINT(x + 1, y) = 15 THEN x = x - 1 nopeus = -.05 END IF IF POINT(x - 1, y) = 15 THEN x = x + 1 nopeus = -.05 END IF END IF IF POINT(x, y) = 5 THEN 'jos käydään varikolla... tankki = tankki + 100 '...lisätään bensaa IF tankki > 3000 THEN tankki = 3000 'mutta ei liikaa END IF IF POINT(x, y) = 11 THEN 'vaihdetaan kierrosta kierros = kierros + 1 y = 125 END IF IF nopeus > 0 THEN tankki = tankki - nopeus 'tankki vähenee sitämukaa, IF nopeus < 0 THEN tankki = tankki + nopeus 'kun liikutaan IF tankki < 0 THEN 'jos ei riitä bensaa... COLOR 4 FOR l = 1 TO 23 PRINT " " NEXT LOCATE 7, 17: PRINT "Game Over" '...hävitään LOCATE 10, 13: PRINT "Uudestaan?(K/E)" LOCATE 12, 13: INPUT "", tauko$ IF tauko$ = "e" THEN END IF tauko$ = "k" THEN GOTO alku END IF aikass = aikass + .017 'lisätään aikaa IF aikass > 1 THEN aikass = 0 aikas = aikas + 1 END IF IF aikas > 59 THEN aikas = 0 aikam = aikam + 1 END IF IF kierros = 6 THEN 'kun voitetaan FOR l = 1 TO 23 PRINT " " NEXT pisteet = pisteet + tankki 'lasketaan pisteet pisteet = pisteet - aikas pisteet = pisteet - aikam * 60 COLOR 9 LOCATE 9, 15: PRINT "Finish!!!" LOCATE 11, 13: PRINT "pisteet:"; pisteet END END IF WAIT &H3DA, 8 LOOP
SUB piirrakentta 'käännös alhaalta oikealle '1: x + 15,y - 25 '2: x + 30,y - 15 '3: x + 30,y = y LINE (-1, -1)-(321, 201), 15, B LINE (15, 140)-(0, 140) LINE (15, 50)-(15, 140) LINE (15, 50)-(30, 25) LINE (30, 25)-(60, 10) LINE (60, 10)-(90, 10) LINE (90, 10)-(120, 25) LINE (120, 25)-(135, 50) LINE (135, 50)-(135, 130) LINE (135, 130)-(180, 130) LINE (180, 130)-(205, 145) LINE (205, 145)-(220, 175) LINE (220, 175)-(220, 200) LINE (75, 50)-(75, 150) LINE (75, 150)-(90, 175) LINE (90, 175)-(120, 190) LINE (120, 190)-(150, 190) LINE (150, 190)-(150, 200) LINE (75, 150)-(60, 175) LINE (60, 175)-(30, 190) LINE (30, 190)-(0, 190) LINE (150, 0)-(150, 50) LINE (150, 50)-(240, 175) LINE (240, 175)-(270, 190) LINE (305, 140)-(320, 140) LINE (220, 0)-(220, 20) LINE (220, 20)-(250, 50) LINE (280, 90)-(305, 140) LINE (305, 140)-(320, 140) LINE (250, 20)-(250, 50) LINE (250, 20)-(270, 0) LINE (280, 90)-(305, 65) LINE (305, 65)-(319, 40) LINE (319, 40)-(319, 0) LINE (330, 190)-(318, 200) LINE (270, 190)-(270, 200) LINE (270, 0)-(320, 3), 5, BF LINE (16, 130)-(74, 135), 11, BF LINE (16, 129)-(74, 129), 15 END SUB
kommentteja,kitoos
anna binääriiiää :(
Autojen vaihto on hauska idea. Auto muuten kääntyy vähän hassusti nokan ympäri, mutta siitä saan syyttää itseäni.
jep, eipä tullu korjattua
ne turbot on aika turhat, paitsi jos ottaa seinät pois
Tosi hyvä, mutta ohjaus on noin mahdotonta turboilla.
IF nopeus > 2 THEN kaantyvyys = 25
suurenna kaantyvyys- arvoa
toimiiks qb 4.5:essa?
Mulla ainakin tuo toimii versiossa 4.5.
Vau! Ihan hyvä.