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
LOOPSUB 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ä.