'===========================================================================
' Subject: TETRIS II (THE NEW BLOOD)          Date: 05-28-98 (14:49)       
'  Author: Christian Dever                    Code: QB, QBasic, PDS        
'  Origin: supercilli@aol.com               Packet: GAMES.ABC
'===========================================================================
'Written By Christian Dever
SCREEN 13
DEF SEG = 0
KeyFlags = PEEK(1047)
POKE 1047, &H0
DEF SEG
RANDOMIZE TIMER
DIM bldbns%(1 TO 1085)
COLOR 40
LOCATE 10, 10: PRINT "BLOOD"
LOCATE 11, 10: PRINT "BONUS"
LINE (70, 70)-(112, 88), , B
GET (70, 70)-(112, 88), bldbns%
PUT (70, 70), bldbns%
splt1$ = "c54 d2l2r2u2r2 c31 r1 d3"
splt2$ = "c31 d3u3r2 c54 r1 d2r2"
splt3$ = "c54 d2l2r2u2r2 c40r1 c31 d2"
splt4$ = "c40r1 c54 d1l1 g1d1u1e1 r2 f1d1u1h1  "
splt5$ = "c40r1 c31 d1 c44d1u1c31l1 g1e1 r2 f1h1  "
splt6$ = "c31 l1d2u2r1 c40r1c54r1d2r2"
splt7$ = "c40r1 c54 l1 g1d1u1e1 r2 f1d1u1h1  "
splt8$ = "c40r1 c31  c44d1u1c31l1 g1e1 r2 f1h1  "
splt9$ = "c54 r1 c40 r1 c54r1"
splt10$ = "c40 r4 c31 l1 c40 l2 c31 l1"
DIM drop%(1 TO 18034)
w1 = 100
w101 = 100
DIM bloc%(1 TO 100)
GET (151, 50)-(159, 58), bloc%
DIM drip%(1 TO 3)
LINE (10, 10)-(10, 10), 40
GET (10, 10)-(10, 10), drip%
PUT (10, 10), drip%, XOR
DIM dripx%(1 TO 100)
DIM dripy%(1 TO 100)
DIM runx%(1 TO 100)
DIM runy%(1 TO 100)
DIM dript%(1 TO 100)
d = 1
FOR d% = 1 TO 100
dripx%(d) = 0
d = d + 1
NEXT d%
d = 1
FOR d% = 1 TO 100
dripy%(d) = 0
d = d + 1
NEXT d%
d = 1
FOR d% = 1 TO 100
runx%(d) = 0
d = d + 1
NEXT d%
d = 1
FOR d% = 1 TO 100
runy%(d) = 0
d = d + 1
NEXT d%
d = 1
FOR d% = 1 TO 100
dript%(d) = 0
d = d + 1
NEXT d%
DRAW "bm10,10c54e1u2f2"
DRAW "bm20,20c54e1u1f2"
DRAW "bm30,30c54e1u1f1d1"
DRAW "bm40,40c54e1u1f1d2"
DRAW "bm50,50c54f1u3"
DRAW "bm60,60c54u3f1d1"
DRAW "c14bm11,4 d1c31d1u1  d1u1g2e1r2r1"
DRAW "c14bm21,15 d1c31d1u1  d1u1g1g1e1d1u1r3"
DRAW "c14bm31,25 d1c31d1u1  g1d1u1e1d1r1f1"
DRAW "c14bm41,35 d1c31d1u1  g1f1e1d1h1d1"
DRAW "c14bm51,45 d1c31d1u1  d1u1g1d1u1e1f2"
DRAW "c14bm60,54 d1c31d1u1  g2e2r1f1"
DIM l1%(1 TO 50)
DIM l2%(1 TO 50)
DIM l3%(1 TO 50)
DIM l4%(1 TO 50)
DIM l5%(1 TO 50)
DIM l6%(1 TO 50)
GET (8, 4)-(14, 10), l1%
GET (18, 14)-(24, 20), l2%
GET (28, 24)-(34, 30), l3%
GET (38, 34)-(44, 41), l4%
GET (48, 44)-(54, 51), l5%
GET (58, 54)-(64, 61), l6%
CLS
'FOR c% = 1 TO 200
'COLOR c%
'PRINT c%;
'NEXT c%
'SLEEP
'CLS
LINE (100, 100)-(100, 100), 4
DRAW "c119l1u20l8u5r21d5l7d20l5"
LINE (120, 100)-(120, 100), 4
DRAW "c120l5u25r15d5l10d5r5d5l5d5r10d5l10"
LINE (142, 100)-(142, 100), 4
DRAW "c121l1u20l8u5r21d5l7d20l5"
LINE (157, 100)-(157, 100), 4
DRAW "c122u25 r12 f3 d5 g4 f4 d10 l6 u7 h3 d10 l6"
LINE (163, 85)-(163, 85), 4
DRAW "c122u5r3d2g2"
LINE (180, 101)-(180, 101), 4
DRAW "c123 l3 u5 r3 u16 l3 u5 r12 d5 l3 d16 r3 d5 l8"
LINE (194, 101)-(194, 101), 4
DRAW "c124 u5 r9 u6 l9 u15r15 d5 l9 d5 r9 d16 l15"
LINE (230, 101)-(230, 101), 40
DRAW "c125 l3 u5 r3 u16 l3 u5 r12 d5 l3 d16 r3 d5 l8"
LINE (245, 101)-(245, 101), 40
DRAW "c126 l3 u5 r3 u16 l3 u5 r12 d5 l3 d16 r3 d5 l8"
PAINT (100, 99), 48, 119
PAINT (120, 99), 49, 120
PAINT (143, 99), 50, 121
PAINT (161, 96), 51, 122
PAINT (181, 96), 52, 123
PAINT (201, 97), 53, 124
PAINT (231, 96), 54, 125
PAINT (249, 96), 55, 126
COLOR 40
LOCATE 15, 15: PRINT "The New Blood...."
'END
GET (85, 70)-(260, 125), drop%
PUT (85, 70), drop%
DRAW "bm10,10c54h1u2g2"
DRAW "bm20,20c54h1u1g2"
DRAW "bm30,30c54h1u1g1d1"
DRAW "bm40,40c54h1u1g1d2"
DRAW "bm50,50c54g1u3"
DRAW "bm60,60c54u3g1d1"
DRAW "c14bm9,4d1c31d1u1  d1u1f2h1l2l1"
DRAW "c14bm19,15 d1c31d1u1  d1u1f1f1h1d1u1l3"
DRAW "c14bm29,25 d1c31d1u1  f1d1u1h1d1l1g1"
DRAW "c14bm39,35 d1c31d1u1  f1g1h1d1e1d1"
DRAW "c14bm49,45 d1c31d1u1  d1u1f1d1u1h1g2"
DRAW "c14bm60,54 d1c31d1u1  f2h2l1g1"
DIM r1%(1 TO 50)
DIM r2%(1 TO 50)
DIM r3%(1 TO 50)
DIM r4%(1 TO 50)
DIM r5%(1 TO 50)
DIM r6%(1 TO 50)
GET (7, 4)-(14, 10), r1%
GET (17, 14)-(24, 20), r2%
GET (27, 24)-(34, 30), r3%
GET (37, 34)-(44, 41), r4%
GET (47, 44)-(54, 51), r5%
GET (57, 54)-(64, 61), r6%
CLS
LINE (10, 10)-(10, 200)
LINE (100, 10)-(100, 200)
LINE (10, 10)-(17, 16), 64, BF
LINE (11, 11)-(16, 15), 40, BF
LINE (17, 16)-(17, 10), 4, BF
LINE (17, 16)-(11, 16), 4, BF
LINE (20, 20)-(27, 26), 99, BF
LINE (21, 21)-(26, 25), 3, BF
LINE (27, 26)-(27, 20), 124, BF
LINE (27, 26)-(21, 26), 124, BF
LINE (30, 30)-(37, 36), 93, BF
LINE (31, 31)-(36, 35), 43, BF
LINE (37, 36)-(37, 30), 116, BF
LINE (37, 36)-(31, 36), 116, BF
LINE (40, 40)-(47, 46), 73, BF
LINE (41, 41)-(46, 45), 2, BF
LINE (47, 46)-(47, 40), 120, BF
LINE (47, 46)-(41, 46), 120, BF
LINE (50, 50)-(57, 56), 60, BF
LINE (51, 51)-(56, 55), 5, BF
LINE (57, 56)-(57, 50), 107, BF
LINE (57, 56)-(51, 56), 107, BF
LINE (60, 60)-(67, 66), 3, BF
LINE (61, 61)-(66, 65), 55, BF
LINE (67, 66)-(67, 60), 1, BF
LINE (67, 66)-(61, 66), 1, BF
LINE (70, 70)-(77, 76), 28, BF
LINE (71, 71)-(76, 75), 25, BF
LINE (77, 76)-(77, 70), 23, BF
LINE (77, 76)-(71, 76), 23, BF
DIM box1%(1 TO 30)
DIM box2%(1 TO 30)
DIM box3%(1 TO 30)
DIM box4%(1 TO 30)
DIM box5%(1 TO 30)
DIM box6%(1 TO 30)
DIM box7%(1 TO 30)
GET (10, 10)-(17, 16), box1%
GET (20, 20)-(27, 26), box2%
GET (30, 30)-(37, 36), box3%
GET (40, 40)-(47, 46), box4%
GET (50, 50)-(57, 56), box5%
GET (60, 60)-(67, 66), box6%
GET (70, 70)-(77, 76), box7%
CLS
x = 10
y = 10
DIM p11%(1 TO 114)
DIM p13%(1 TO 114)
PUT (x, y), box1%
PUT (x, y + 7), box1%
PUT (x, y + 14), box1%
PUT (x, y + 21), box1%
GET (x, y)-(x + 7, y + 27), p11%
GET (x, y)-(x + 7, y + 27), p13%
PUT (x, y), p11%
DIM p12%(1 TO 114)
DIM p14%(1 TO 114)
PUT (x, y), box1%
PUT (x + 8, y), box1%
PUT (x + 16, y), box1%
PUT (x + 24, y), box1%
GET (x, y)-(x + 31, y + 6), p12%
GET (x, y)-(x + 31, y + 6), p14%
PUT (x, y), p12%
DIM p21%(1 TO 114)
DIM p22%(1 TO 114)
DIM p23%(1 TO 114)
DIM p24%(1 TO 114)
PUT (x, y), box2%
PUT (x, y + 7), box2%
PUT (x + 8, y), box2%
PUT (x + 8, y + 7), box2%
GET (x, y)-(x + 15, y + 13), p21%
GET (x, y)-(x + 15, y + 13), p22%
GET (x, y)-(x + 15, y + 13), p23%
GET (x, y)-(x + 15, y + 13), p24%
PUT (x, y), p21%
DIM p31%(1 TO 170)
PUT (x, y), box3%
PUT (x, y + 7), box3%
PUT (x, y + 14), box3%
PUT (x + 8, y + 14), box3%
GET (x, y)-(x + 15, y + 20), p31%
PUT (x, y), p31%
DIM p33%(1 TO 170)
PUT (x, y), box3%
PUT (x + 8, y), box3%
PUT (x + 8, y + 7), box3%
PUT (x + 8, y + 14), box3%
GET (x, y)-(x + 15, y + 20), p33%
PUT (x, y), p33%
DIM p32%(1 TO 170)
PUT (x, y), box3%
PUT (x + 8, y), box3%
PUT (x + 16, y), box3%
PUT (x, y + 7), box3%
GET (x, y)-(x + 23, y + 13), p32%
PUT (x, y), p32%
DIM p34%(1 TO 170)
PUT (x, y + 7), box3%
PUT (x + 8, y + 7), box3%
PUT (x + 16, y + 7), box3%
PUT (x + 16, y), box3%
GET (x, y)-(x + 23, y + 13), p34%
PUT (x, y), p34%
DIM p41%(1 TO 170)
PUT (x + 8, y), box4%
PUT (x + 8, y + 7), box4%
PUT (x + 8, y + 14), box4%
PUT (x, y + 14), box4%
GET (x, y)-(x + 15, y + 20), p41%
PUT (x, y), p41%
DIM p43%(1 TO 170)
PUT (x, y), box4%
PUT (x, y + 7), box4%
PUT (x, y + 14), box4%
PUT (x + 8, y), box4%
GET (x, y)-(x + 15, y + 20), p43%
PUT (x, y), p43%
DIM p42%(1 TO 170)
PUT (x, y), box4%
PUT (x + 8, y), box4%
PUT (x + 16, y), box4%
PUT (x + 16, y + 7), box4%
GET (x, y)-(x + 23, y + 13), p42%
PUT (x, y), p42%
DIM p44%(1 TO 170)
PUT (x, y), box4%
PUT (x, y + 7), box4%
PUT (x + 8, y + 7), box4%
PUT (x + 16, y + 7), box4%
GET (x, y)-(x + 23, y + 13), p44%
PUT (x, y), p44%
DIM p51%(1 TO 170)
DIM p53%(1 TO 170)
PUT (x, y + 7), box5%
PUT (x + 8, y + 7), box5%
PUT (x + 8, y), box5%
PUT (x + 16, y), box5%
GET (x, y)-(x + 23, y + 13), p51%
GET (x, y)-(x + 23, y + 13), p53%
PUT (x, y), p51%
DIM p52%(1 TO 170)
DIM p54%(1 TO 170)
PUT (x, y), box5%
PUT (x, y + 7), box5%
PUT (x + 8, y + 7), box5%
PUT (x + 8, y + 14), box5%
GET (x, y)-(x + 15, y + 20), p52%
GET (x, y)-(x + 15, y + 20), p54%
PUT (x, y), p52%
DIM p61%(1 TO 170)
DIM p63%(1 TO 170)
PUT (x, y), box6%
PUT (x + 8, y), box6%
PUT (x + 8, y + 7), box6%
PUT (x + 16, y + 7), box6%
GET (x, y)-(x + 23, y + 13), p61%
GET (x, y)-(x + 23, y + 13), p63%
PUT (x, y), p61%
DIM p62%(1 TO 170)
DIM p64%(1 TO 170)
PUT (x + 8, y), box6%
PUT (x + 8, y + 7), box6%
PUT (x, y + 7), box6%
PUT (x, y + 14), box6%
GET (x, y)-(x + 15, y + 20), p62%
GET (x, y)-(x + 15, y + 20), p64%
PUT (x, y), p62%
DIM p71%(1 TO 170)
PUT (x, y), box7%
PUT (x, y + 7), box7%
PUT (x, y + 14), box7%
PUT (x + 8, y + 7), box7%
GET (x, y)-(x + 15, y + 20), p71%
PUT (x, y), p71%
DIM p72%(1 TO 170)
PUT (x, y), box7%
PUT (x + 8, y), box7%
PUT (x + 16, y), box7%
PUT (x + 8, y + 7), box7%
GET (x, y)-(x + 23, y + 13), p72%
PUT (x, y), p72%
DIM p73%(1 TO 170)
PUT (x + 8, y), box7%
PUT (x + 8, y + 7), box7%
PUT (x + 8, y + 14), box7%
PUT (x, y + 7), box7%
GET (x, y)-(x + 15, y + 20), p73%
PUT (x, y), p73%
DIM p74%(1 TO 170)
PUT (x, y + 7), box7%
PUT (x + 8, y + 7), box7%
PUT (x + 16, y + 7), box7%
PUT (x + 8, y), box7%
GET (x, y)-(x + 23, y + 13), p74%
PUT (x, y), p74%
DIM block%(1 TO 730)
LINE (55, 64)-(236, 71), 9, BF
GET (55, 64)-(236, 71), block%
PUT (55, 64), block%
GOSUB intro
n = (INT(RND * 7) + 1) * 10
n1 = (INT(RND * 7) + 1) * 10
OPEN "tet.inf" FOR RANDOM AS #1
IF LOF(1) = 0 THEN
CLOSE
GOSUB test
OPEN "tet.inf" FOR RANDOM AS #1
END IF
CLOSE
GOSUB getable
CLS
LINE (1, 1)-(319, 199), 9, BF
LINE (2, 2)-(319, 199), 23, B
LINE (1, 1)-(319, 199), 23, B
LINE (1, 1)-(1, 198), 28
LINE (1, 1)-(318, 1), 28
LINE (318, 1)-(318, 198), 28
LINE (318, 198)-(1, 198), 28
LINE (47, 19)-(273, 182), 0, BF
LINE (46, 19)-(273, 182), 23, B
LINE (47, 19)-(273, 182), 23, B
LINE (46, 18)-(46, 181), 28
LINE (46, 18)-(272, 18), 28
LINE (272, 18)-(272, 181), 28
LINE (46, 181)-(272, 181), 28
LINE (8, 28)-(40, 70), 0, BF
LINE (9, 28)-(40, 70), 23, B
LINE (8, 28)-(40, 70), 23, B
LINE (8, 27)-(39, 27), 28
LINE (8, 27)-(8, 69), 28
LINE (39, 27)-(39, 69), 28
LINE (39, 69)-(8, 69), 28
GOSUB main
quit:
GOSUB checkscor
GOSUB enditall
RETURN
newman:
m34 = m34 + 1
IF w2 = 0 THEN
w2 = 151
w102 = 50
dir2$ = diir$
END IF
IF m34 = 1 THEN RETURN
IF w3 = 0 THEN
w3 = 151
w103 = 50
dir3$ = diir$
END IF
IF m34 = 2 THEN RETURN
IF w4 = 0 THEN
w4 = 151
w104 = 50
dir4$ = diir$
END IF
IF m34 = 3 THEN RETURN
IF w5 = 0 THEN
w5 = 151
w105 = 50
dir5$ = diir$
END IF
IF m34 = 4 THEN RETURN
IF w6 = 0 THEN
w6 = 151
w106 = 50
dir6$ = diir$
END IF
IF m34 = 5 THEN RETURN
IF w7 = 0 THEN
w7 = 151
w107 = 50
dir7$ = diir$
END IF
IF m34 = 6 THEN RETURN
IF w8 = 0 THEN
w8 = 151
w108 = 50
dir8$ = diir$
END IF
IF m34 = 7 THEN RETURN
IF w9 = 0 THEN
w9 = 151
w109 = 50
dir9$ = diir$
END IF
IF m34 = 8 THEN RETURN
IF w10 = 0 THEN
w10 = 151
w110 = 50
dir10$ = diir$
END IF
IF m34 = 9 THEN RETURN
IF w11 = 0 THEN
w11 = 151
w111 = 50
dir11$ = diir$
END IF
IF m34 = 10 THEN RETURN
IF w12 = 0 THEN
w12 = 151
w112 = 50
dir12$ = diir$
END IF
IF m34 = 11 THEN RETURN
IF w13 = 0 THEN
w13 = 151
w113 = 50
dir13$ = diir$
END IF
IF m34 = 12 THEN RETURN
IF w14 = 0 THEN
w14 = 151
w114 = 50
dir14$ = diir$
END IF
IF m34 = 13 THEN RETURN
IF w15 = 0 THEN
w15 = 151
w115 = 50
dir15$ = diir$
END IF
IF m34 = 14 THEN RETURN
IF w16 = 0 THEN
w16 = 151
w116 = 50
dir16$ = diir$
END IF
IF m34 = 15 THEN RETURN
IF w17 = 0 THEN
w17 = 151
w117 = 50
dir17$ = diir$
END IF
IF m34 = 16 THEN RETURN
IF w18 = 0 THEN
w18 = 151
w118 = 50
dir18$ = diir$
END IF
IF m34 = 17 THEN RETURN
IF w19 = 0 THEN
w19 = 151
w119 = 50
dir19$ = diir$
END IF
IF m34 = 18 THEN RETURN
IF w20 = 0 THEN
w20 = 151
w120 = 50
dir20$ = diir$
END IF
IF m34 = 19 THEN RETURN
IF w21 = 0 THEN
w21 = 151
w121 = 50
dir21$ = diir$
END IF
RETURN
die:
IF s37 = 37 THEN GOSUB enditall
RETURN
main:
ON KEY(5) GOSUB bloodbonus
KEY(5) ON
9 m34 = 0
eras$ = "off"
diir$ = "r"
music$ = "L20Mbmbo3ace04cbag+04aefgagfefeg+bbg+ebg+beg+aa"
DO
KEY(9) ON
ON KEY(9) GOSUB cheat
c64 = 0
LOCATE 2, 3: PRINT "Levels:"; l1000
LOCATE 2, 15: PRINT "Kills:"; m1000
LOCATE 2, 27: PRINT "Score:"; s1000
eras$ = "off"
IF m34 < m35 THEN GOSUB newman
x = 14
y = 35
p = 1
d = 0
x0 = 0
y0 = 0
s = 0
p0 = 0
p10 = n1
LINE (10, 29)-(38, 68), 0, BF
SELECT CASE p10
CASE 10: GOSUB piece1
CASE 20: GOSUB piece2
CASE 30: GOSUB piece3
CASE 40: GOSUB piece4
CASE 50: GOSUB piece5
CASE 60: GOSUB piece6
CASE 70: GOSUB piece7
END SELECT
x = 152
y = 20
p = 1
d = 0
x0 = 0
y0 = 0
s = 0
p0 = 0
p10 = n
IF cheat$ = "yup" THEN p10 = 10
SELECT CASE p10
CASE 10: GOSUB piece1
CASE 20: GOSUB piece2
CASE 30: GOSUB piece3
CASE 40: GOSUB piece4
CASE 50: GOSUB piece5
CASE 60: GOSUB piece6
CASE 70: GOSUB piece7
END SELECT
cheat$ = ""
IF s = 1 THEN
LINE (48, 20)-(271, 180), 0, BF
GOSUB checkscor
GOSUB die
LOCATE 11, 16: PRINT "GAME OVER"
LOCATE 15, 16: PRINT "YOU SUCK!"
PLAY music$
SLEEP
GOSUB enditall
END IF
FOR i% = 1 TO 3
eras$ = "off"
IF w99 > w92 THEN
GOSUB drip
END IF
IF m34 = -0 THEN
i% = 3
GOTO 11
END IF
IF w99 > w92 THEN
GOSUB men
END IF
GOSUB getkeys
IF s = 1 THEN GOTO 10
d = d + 1
IF d = d1 THEN
y0 = y
y = y + 7
d = 0
e28 = 0
eras$ = "on"
GOSUB men
SELECT CASE p10
CASE 10: GOSUB piece1
CASE 20: GOSUB piece2
CASE 30: GOSUB piece3
CASE 40: GOSUB piece4
CASE 50: GOSUB piece5
CASE 60: GOSUB piece6
CASE 70: GOSUB piece7
END SELECT
e28 = 1
eras$ = "on"
GOSUB men
e28 = 0
END IF
i% = 1
10 IF s = 1 THEN
GOSUB checkline
i% = 3
END IF
w99 = w99 + 1
e28 = 0
11
NEXT i%
IF m34 = -1 THEN GOTO 9
IF y0 > y32 THEN y32 = y0
n = n1
n1 = (INT(RND * 7) + 1) * 10
IF c64 = 1 THEN s1000 = s1000 + 10
IF c64 = 2 THEN s1000 = s1000 + 40
IF c64 = 3 THEN s1000 = s1000 + 80
IF c64 = 4 THEN s1000 = s1000 + 160
IF c64 = 5 THEN s1000 = s1000 + 320
IF c64 = 6 THEN s1000 = s1000 + 640
IF c64 = 7 THEN s1000 = s1000 + 1280
IF c64 = 8 THEN s1000 = s1000 + 2560
IF c64 = 9 THEN s1000 = s1000 + 5120
IF c64 = 10 THEN s1000 = s1000 + 10240
LOOP
RETURN
dribble:
r101 = 1
FOR y% = 1 TO 100
IF runx%(r101) > 0 THEN GOSUB drib
IF runy%(r101) = 0 THEN y% = 100
r101 = r101 + 1
NEXT y%
RETURN
drib:
runy%(r101) = runy%(r101) + 1
IF runy%(r101) = 183 THEN
w1 = runx%(r101) - 3
w101 = runy%(r101) - 8
GOSUB addrip
GOSUB killrun
RETURN
END IF
IF POINT(runx%(r101), runy%(r101)) <> 0 THEN LINE (runx%(r101), runy%(r101))-(runx%(r101), runy%(r101)), 40
IF POINT(runx%(r101), runy%(r101)) = 0 THEN GOSUB killrun
RETURN
killrun:
r102 = r101
r100 = r100 - 1
DO
runx%(r102) = runx%(r102 + 1)
runy%(r102) = runy%(r102 + 1)
r102 = r102 + 1
LOOP UNTIL r102 = 99
GOSUB splush
RETURN
killdrip:
d102 = d101
d100 = d100 - 1
DO
dripx%(d102) = dripx%(d102 + 1)
dripy%(d102) = dripy%(d102 + 1)
dript%(d102) = dript%(d102 + 1)
d102 = d102 + 1
LOOP UNTIL d102 = 99
GOSUB splush
RETURN
drip:
GOSUB dribble
d101 = 1
FOR y% = 1 TO 100
IF dripx%(d101) > 0 THEN GOSUB drop
IF dripx%(d101) = 0 THEN y% = 100
d101 = d101 + 1
NEXT y%
d101 = 1
FOR y% = 1 TO 100
IF dripx%(d101) > 0 THEN GOSUB drap
IF dripx%(d101) = 0 THEN y% = 100
d101 = d101 + 1
NEXT y%
RETURN
stopit:
dript%(d101) = dript%(d101) + 1
IF dript%(d101) > 99 THEN GOSUB killdrip
RETURN
drop:
LINE (dripx%(d101), dripy%(d101))-(dripx%(d101), dripy%(d101)), 9
dripy%(d101) = dripy%(d101) + 1
IF dripy%(d101) > 197 THEN
dripy%(d101) = 184
b108 = b108 + 1
GOSUB stopit
END IF
IF POINT(dripx%(d101), dripy%(d101)) = 40 THEN
LINE (dripx%(d101), dripy%(d101))-(dripx%(d101), dripy%(d101)), 9
dripy%(d101) = 184
b108 = b108 + 1
GOSUB stopit
END IF
IF b108 = 312 THEN
b108 = 0
b100 = b100 + 10
GOSUB blood
END IF
RETURN
drap:
IF dripy%(d101) = 185 THEN GOSUB splash
LINE (dripx%(d101), dripy%(d101))-(dripx%(d101), dripy%(d101)), 40
RETURN
splash:
IF dripx%(d101) < 12 THEN RETURN
IF b100 >= 10 THEN LINE (dripx%(d101), 197)-(317, 197), 40, BF
IF b100 >= 20 THEN LINE (dripx%(d101), 197)-(317, 196), 40, BF
IF b100 >= 30 THEN LINE (dripx%(d101), 197)-(317, 195), 40, BF
IF b100 >= 40 THEN LINE (dripx%(d101), 197)-(317, 194), 40, BF
IF b100 >= 50 THEN LINE (dripx%(d101), 197)-(317, 193), 40, BF
IF b100 >= 60 THEN LINE (dripx%(d101), 197)-(317, 192), 40, BF
IF b100 >= 70 THEN LINE (dripx%(d101), 197)-(317, 191), 40, BF
IF b100 >= 80 THEN LINE (dripx%(d101), 197)-(317, 190), 40, BF
IF b100 >= 90 THEN LINE (dripx%(d101), 197)-(317, 189), 40, BF
IF b100 >= 100 THEN LINE (dripx%(d101), 197)-(317, 188), 40, BF
IF b100 >= 110 THEN LINE (dripx%(d101), 197)-(317, 187), 40, BF
IF b100 >= 120 THEN LINE (dripx%(d101), 197)-(317, 186), 40, BF
IF b100 >= 130 THEN LINE (dripx%(d101), 197)-(317, 185), 40, BF
IF b100 >= 140 THEN LINE (dripx%(d101), 197)-(317, 184), 40, BF
IF b100 >= 150 THEN LINE (dripx%(d101), 197)-(317, 183), 40, BF
IF b100 >= 160 THEN LINE (dripx%(d101), 197)-(317, 182), 40, BF
RETURN
splush:
'IF dripx%(d101) < 12 THEN RETURN
IF b100 >= 10 THEN LINE (12, 197)-(317, 197), 40, BF
IF b100 >= 20 THEN LINE (12, 197)-(317, 196), 40, BF
IF b100 >= 30 THEN LINE (12, 197)-(317, 195), 40, BF
IF b100 >= 40 THEN LINE (12, 197)-(317, 194), 40, BF
IF b100 >= 50 THEN LINE (12, 197)-(317, 193), 40, BF
IF b100 >= 60 THEN LINE (12, 197)-(317, 192), 40, BF
IF b100 >= 70 THEN LINE (12, 197)-(317, 191), 40, BF
IF b100 >= 80 THEN LINE (12, 197)-(317, 190), 40, BF
IF b100 >= 90 THEN LINE (12, 197)-(317, 189), 40, BF
IF b100 >= 100 THEN LINE (12, 197)-(317, 188), 40, BF
IF b100 >= 110 THEN LINE (12, 197)-(317, 187), 40, BF
IF b100 >= 120 THEN LINE (12, 197)-(317, 186), 40, BF
IF b100 >= 130 THEN LINE (12, 197)-(317, 185), 40, BF
IF b100 >= 140 THEN LINE (12, 197)-(317, 184), 40, BF
IF b100 >= 150 THEN LINE (12, 197)-(317, 183), 40, BF
IF b100 >= 160 THEN LINE (12, 197)-(317, 182), 40, BF
RETURN
cheat:
cheat$ = "yup"
RETURN
yes:
RETURN
checkline:
g9 = 0
eras$ = "on"
e28 = 0
GOSUB men
c = 0
c1 = 0
c3 = 177
PUT (151, 50), bloc%, PSET
DO WHILE c3 > y
FOR c% = 1 TO 28
IF POINT(50 + c, c3) <> 0 THEN c1 = c1 + 1
c = c + 8
NEXT c%
IF c1 = 28 THEN GOSUB killine
c3 = c3 - 7
c = 0
c1 = 0
LOOP
eras$ = "on"
e28 = 1
GOSUB men
s1000 = s1000 + (100 * g9)
IF g9 = 4 THEN s1000 = s1000 + 400
RETURN
killine:
g9 = g9 + 1
LINE (48, c3 - 3)-(271, c3 + 2), 0, BF
PUT (151, 50), bloc%
GET (48, 20)-(271, c3 - 4), drop%
LINE (48, 20)-(271, 27), 0, BF
PUT (48, 27), drop%, PSET
c3 = c3 + 7
l = l + 1
'IF l = 10 THEN
'd1 = d1 - 5
'IF d1 < 1 THEN d1 = 1
'l = 0
'END IF
l1000 = l1000 + 1
RETURN
getkeys:
kbd$ = INKEY$
k$ = " "
FOR k% = 1 TO k1000
SELECT CASE kbd$
CASE CHR$(0) + "H": k$ = "u"
CASE CHR$(0) + "P": k$ = "d"
CASE CHR$(0) + "K": k$ = "l"
CASE CHR$(0) + "M": k$ = "r"
CASE CHR$(27): k$ = "e"
END SELECT
NEXT k%
x0 = x
y0 = y
p0 = p
IF k$ = "e" THEN GOSUB menu
IF k$ = " " THEN RETURN
IF k$ = "l" THEN x = x - 8
IF k$ = "r" THEN x = x + 8
IF k$ = "u" THEN p = p + 1
IF k$ = "d" THEN y = y + 7
IF p = 5 THEN p = 1
e28 = 0
eras$ = "on"
GOSUB men
PUT (151, 50), bloc%
SELECT CASE p10
CASE 10: GOSUB piece1
CASE 20: GOSUB piece2
CASE 30: GOSUB piece3
CASE 40: GOSUB piece4
CASE 50: GOSUB piece5
CASE 60: GOSUB piece6
CASE 70: GOSUB piece7
END SELECT
e28 = 1
eras$ = "on"
GOSUB men
eras$ = "off"
x0 = x
y0 = y
p0 = p
IF k$ = "d" THEN GOSUB ugh
IF s = 1 THEN s = 0
IF s = 3 THEN s = 1
RETURN
ugh:
IF s = 1 THEN s = 3
RETURN
piece1:
SELECT CASE p0
CASE 1: PUT (x0 + 8, y0), p11%, XOR
CASE 2: PUT (x0, y0 + 7), p12%, XOR
CASE 3: PUT (x0 + 8, y0), p13%, XOR
CASE 4: PUT (x0, y0 + 7), p14%, XOR
END SELECT
SELECT CASE p
CASE 1: GOSUB check11
CASE 2: GOSUB check12
CASE 3: GOSUB check11
CASE 4: GOSUB check12
END SELECT
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x + 8, y), p11%, XOR
CASE 2: PUT (x, y + 7), p12%, XOR
CASE 3: PUT (x + 8, y), p13%, XOR
CASE 4: PUT (x, y + 7), p14%, XOR
END SELECT
RETURN
piece2:
SELECT CASE p0
CASE 1: PUT (x0, y0), p21%, XOR
CASE 2: PUT (x0, y0), p22%, XOR
CASE 3: PUT (x0, y0), p23%, XOR
CASE 4: PUT (x0, y0), p24%, XOR
END SELECT
GOSUB check21
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x, y), p21%, XOR
CASE 2: PUT (x, y), p22%, XOR
CASE 3: PUT (x, y), p23%, XOR
CASE 4: PUT (x, y), p24%, XOR
END SELECT
RETURN
piece3:
SELECT CASE p0
CASE 1: PUT (x0, y0), p31%, XOR
CASE 2: PUT (x0, y0), p32%, XOR
CASE 3: PUT (x0, y0), p33%, XOR
CASE 4: PUT (x0, y0), p34%, XOR
END SELECT
SELECT CASE p
CASE 1: GOSUB check31
CASE 2: GOSUB check32
CASE 3: GOSUB check33
CASE 4: GOSUB check34
END SELECT
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x, y), p31%, XOR
CASE 2: PUT (x, y), p32%, XOR
CASE 3: PUT (x, y), p33%, XOR
CASE 4: PUT (x, y), p34%, XOR
END SELECT
RETURN
piece4:
SELECT CASE p0
CASE 1: PUT (x0, y0), p41%, XOR
CASE 4: PUT (x0, y0), p42%, XOR
CASE 3: PUT (x0, y0), p43%, XOR
CASE 2: PUT (x0, y0), p44%, XOR
END SELECT
SELECT CASE p
CASE 1: GOSUB check41
CASE 2: GOSUB check42
CASE 3: GOSUB check43
CASE 4: GOSUB check44
END SELECT
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x, y), p41%, XOR
CASE 4: PUT (x, y), p42%, XOR
CASE 3: PUT (x, y), p43%, XOR
CASE 2: PUT (x, y), p44%, XOR
END SELECT
RETURN
piece5:
SELECT CASE p0
CASE 1: PUT (x0, y0), p51%, XOR
CASE 2: PUT (x0, y0), p52%, XOR
CASE 3: PUT (x0, y0), p53%, XOR
CASE 4: PUT (x0, y0), p54%, XOR
END SELECT
SELECT CASE p
CASE 1: GOSUB check51
CASE 2: GOSUB check52
CASE 3: GOSUB check51
CASE 4: GOSUB check52
END SELECT
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x, y), p51%, XOR
CASE 2: PUT (x, y), p52%, XOR
CASE 3: PUT (x, y), p53%, XOR
CASE 4: PUT (x, y), p54%, XOR
END SELECT
RETURN
piece6:
SELECT CASE p0
CASE 1: PUT (x0, y0), p61%, XOR
CASE 2: PUT (x0, y0), p62%, XOR
CASE 3: PUT (x0, y0), p63%, XOR
CASE 4: PUT (x0, y0), p64%, XOR
END SELECT
SELECT CASE p
CASE 1: GOSUB check61
CASE 2: GOSUB check62
CASE 3: GOSUB check61
CASE 4: GOSUB check62
END SELECT
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x, y), p61%, XOR
CASE 2: PUT (x, y), p62%, XOR
CASE 3: PUT (x, y), p63%, XOR
CASE 4: PUT (x, y), p64%, XOR
END SELECT
RETURN
piece7:
SELECT CASE p0
CASE 1: PUT (x0, y0), p71%, XOR
CASE 2: PUT (x0, y0), p72%, XOR
CASE 3: PUT (x0, y0), p73%, XOR
CASE 4: PUT (x0, y0), p74%, XOR
END SELECT
SELECT CASE p
CASE 1: GOSUB check71
CASE 2: GOSUB check72
CASE 3: GOSUB check73
CASE 4: GOSUB check74
END SELECT
IF s = 1 THEN
x = x0
y = y0
p = p0
END IF
SELECT CASE p
CASE 1: PUT (x, y), p71%, XOR
CASE 2: PUT (x, y), p72%, XOR
CASE 3: PUT (x, y), p73%, XOR
CASE 4: PUT (x, y), p74%, XOR
END SELECT
RETURN
check11:
IF POINT(x + 13, y + 3) <> 0 THEN s = 1
IF POINT(x + 13, y + 10) <> 0 THEN s = 1
IF POINT(x + 13, y + 17) <> 0 THEN s = 1
IF POINT(x + 13, y + 24) <> 0 THEN s = 1
RETURN
check12:
IF POINT(x + 3, y + 13) <> 0 THEN s = 1
IF POINT(x + 12, y + 13) <> 0 THEN s = 1
IF POINT(x + 20, y + 13) <> 0 THEN s = 1
IF POINT(x + 28, y + 13) <> 0 THEN s = 1
RETURN
check13:
IF POINT(x + 13, y + 3) <> 0 THEN s = 1
IF POINT(x + 13, y + 10) <> 0 THEN s = 1
IF POINT(x + 13, y + 17) <> 0 THEN s = 1
IF POINT(x + 13, y + 24) <> 0 THEN s = 1
RETURN
check14:
IF POINT(x + 3, y + 13) <> 0 THEN s = 1
IF POINT(x + 12, y + 13) <> 0 THEN s = 1
IF POINT(x + 20, y + 13) <> 0 THEN s = 1
IF POINT(x + 28, y + 13) <> 0 THEN s = 1
RETURN
check21:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
RETURN
check22:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
RETURN
check23:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
RETURN
check24:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
RETURN
check31:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 17) <> 0 THEN s = 1
IF POINT(x + 12, y + 17) <> 0 THEN s = 1
RETURN
check32:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 20, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
RETURN
check33:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 17) <> 0 THEN s = 1
RETURN
check34:
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 20, y + 10) <> 0 THEN s = 1
IF POINT(x + 20, y + 3) <> 0 THEN s = 1
RETURN
check41:
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 17) <> 0 THEN s = 1
IF POINT(x + 3, y + 17) <> 0 THEN s = 1
RETURN
check42:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 20, y + 10) <> 0 THEN s = 1
RETURN
check43:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 17) <> 0 THEN s = 1
RETURN
check44:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 20, y + 3) <> 0 THEN s = 1
IF POINT(x + 20, y + 10) <> 0 THEN s = 1
RETURN
check51:
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 20, y + 3) <> 0 THEN s = 1
RETURN
check52:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 17) <> 0 THEN s = 1
RETURN
check53:
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 20, y + 3) <> 0 THEN s = 1
RETURN
check54:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 17) <> 0 THEN s = 1
RETURN
check61:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 20, y + 10) <> 0 THEN s = 1
RETURN
check62:
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 17) <> 0 THEN s = 1
RETURN
check63:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 20, y + 17) <> 0 THEN s = 1
RETURN
check64:
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 17) <> 0 THEN s = 1
RETURN
check71:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 3, y + 17) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
RETURN
check72:
IF POINT(x + 3, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 20, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
RETURN
check73:
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 17) <> 0 THEN s = 1
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
RETURN
check74:
IF POINT(x + 3, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 10) <> 0 THEN s = 1
IF POINT(x + 20, y + 10) <> 0 THEN s = 1
IF POINT(x + 12, y + 3) <> 0 THEN s = 1
RETURN
men:
IF w2 <> 0 THEN
w100 = w402
w1 = w2
w101 = w102
diir$ = dir2$
w = w302
GOSUB man
w302 = w
w2 = w1
w102 = w101
dir2$ = diir$
w402 = w100
END IF
IF m35 = 1 THEN RETURN
IF w3 <> 0 THEN
w100 = w403
w1 = w3
w101 = w103
diir$ = dir3$
w = w303
GOSUB man
w303 = w
w3 = w1
w103 = w101
dir3$ = diir$
w403 = w100
END IF
IF m35 = 2 THEN RETURN
IF w4 <> 0 THEN
w100 = w404
w1 = w4
w101 = w104
diir$ = dir4$
w = w304
GOSUB man
w304 = w
w4 = w1
w104 = w101
dir4$ = diir$
w404 = w100
END IF
IF m35 = 3 THEN RETURN
IF w5 <> 0 THEN
w100 = w405
w1 = w5
w101 = w105
diir$ = dir5$
w = w305
GOSUB man
w305 = w
w5 = w1
w105 = w101
dir5$ = diir$
w405 = w100
END IF
IF m35 = 4 THEN RETURN
IF w6 <> 0 THEN
w100 = w406
w1 = w6
w101 = w106
diir$ = dir6$
w = w306
GOSUB man
w306 = w
w6 = w1
w106 = w101
dir6$ = diir$
w406 = w100
END IF
IF m35 = 5 THEN RETURN
IF w7 <> 0 THEN
w100 = w407
w1 = w7
w101 = w107
diir$ = dir7$
w = w307
GOSUB man
w307 = w
w7 = w1
w107 = w101
dir7$ = diir$
w407 = w100
END IF
IF m35 = 6 THEN RETURN
IF w8 <> 0 THEN
w100 = w408
w1 = w8
w101 = w108
diir$ = dir8$
w = w308
GOSUB man
w308 = w
w8 = w1
w108 = w101
dir8$ = diir$
w408 = w100
END IF
IF m35 = 7 THEN RETURN
IF w9 <> 0 THEN
w100 = w409
w1 = w9
w101 = w109
diir$ = dir9$
w = w309
GOSUB man
w309 = w
w9 = w1
w109 = w101
dir9$ = diir$
w409 = w100
END IF
IF m35 = 8 THEN RETURN
IF w10 <> 0 THEN
w100 = w410
w1 = w10
w101 = w110
diir$ = dir10$
w = w310
GOSUB man
w310 = w
w10 = w1
w110 = w101
dir10$ = diir$
w410 = w100
END IF
IF m35 = 9 THEN RETURN
IF w11 <> 0 THEN
w100 = w411
w1 = w11
w101 = w111
diir$ = dir11$
w = w311
GOSUB man
w311 = w
w11 = w1
w111 = w101
dir11$ = diir$
w411 = w100
END IF
IF m35 = 10 THEN RETURN
IF w12 <> 0 THEN
w100 = w412
w1 = w12
w101 = w112
diir$ = dir12$
w = w312
GOSUB man
w312 = w
w12 = w1
w112 = w101
dir12$ = diir$
w412 = w100
END IF
IF m35 = 11 THEN RETURN
IF w13 <> 0 THEN
w100 = w413
w1 = w13
w101 = w113
diir$ = dir13$
w = w313
GOSUB man
w313 = w
w13 = w1
w113 = w101
dir13$ = diir$
w413 = w100
END IF
IF m35 = 12 THEN RETURN
IF w14 <> 0 THEN
w100 = w414
w1 = w14
w101 = w114
diir$ = dir14$
w = w314
GOSUB man
w314 = w
w14 = w1
w114 = w101
dir14$ = diir$
w414 = w100
END IF
IF m35 = 13 THEN RETURN
IF w15 <> 0 THEN
w100 = w415
w1 = w15
w101 = w115
diir$ = dir15$
w = w315
GOSUB man
w315 = w
w15 = w1
w115 = w101
dir15$ = diir$
w415 = w100
END IF
IF m35 = 14 THEN RETURN
IF w16 <> 0 THEN
w100 = w416
w1 = w16
w101 = w116
diir$ = dir16$
w = w316
GOSUB man
w316 = w
w16 = w1
w116 = w101
dir16$ = diir$
w416 = w100
END IF
IF m35 = 15 THEN RETURN
IF w17 <> 0 THEN
w100 = w417
w1 = w17
w101 = w117
diir$ = dir17$
w = w317
GOSUB man
w317 = w
w17 = w1
w117 = w101
dir17$ = diir$
w417 = w100
END IF
IF m35 = 16 THEN RETURN
IF w18 <> 0 THEN
w100 = w418
w1 = w18
w101 = w118
diir$ = dir18$
w = w318
GOSUB man
w318 = w
w18 = w1
w118 = w101
dir18$ = diir$
w418 = w100
END IF
IF m35 = 17 THEN RETURN
IF w19 <> 0 THEN
w100 = w419
w1 = w19
w101 = w119
diir$ = dir19$
w = w319
GOSUB man
w319 = w
w19 = w1
w119 = w101
dir19$ = diir$
w419 = w100
END IF
IF m35 = 18 THEN RETURN
IF w20 <> 0 THEN
w100 = w420
w1 = w20
w101 = w120
diir$ = dir20$
w = w320
GOSUB man
w320 = w
w20 = w1
w120 = w101
dir20$ = diir$
w420 = w100
END IF
IF m35 = 19 THEN RETURN
IF w21 <> 0 THEN
w100 = w421
w1 = w21
w101 = w121
diir$ = dir21$
w = w321
GOSUB man
w321 = w
w21 = w1
w121 = w101
dir21$ = diir$
w421 = w100
END IF
RETURN
wt:
FOR w% = 1 TO d1
NEXT w%
PUT (w1 - 13, w101 + 2), drop%, PSET
RETURN
align:
a20 = 20
FOR a% = 1 TO 22
IF w101 > a20 THEN a20 = a20 + 7
IF w101 < a20 THEN
w101 = a20
a% = 22
END IF
NEXT a%
RETURN
splot:
IF POINT(ax, ay) <> 9 THEN GOSUB splott
RETURN
splott:
IF CINT(ay) = w101 + 6 THEN LINE (ax, ay)-(ax, ay), 4
IF CINT(ay) <> w101 + 6 THEN LINE (ax, ay)-(ax, ay), 40
RETURN
splat:
IF ABS(x0 - w1) > 30 THEN RETURN
IF w101 < y0 THEN RETURN
IF s = 0 THEN RETURN
IF POINT(w1, w101 + 8) = 0 THEN RETURN
GOSUB align
GET (w1 - 13, w101 + 2)-(w1 + 16, w101 + 10), drop%
CIRCLE (w1 + 3, w101 + 7), 3, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 4, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 5, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 6, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 7, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 8, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 9, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 10, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 11, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 12, 40, , , 1 / 8
GOSUB wt
CIRCLE (w1 + 3, w101 + 7), 13, 40, , , 1 / 8
GOSUB wt
FOR splat = .1 TO 3.141592654# * 2 STEP 1
ax = (w1 + 3) + 5 * COS(1 * splat)
ay = (w101 + 7) + 1 * SIN(1 * splat)
IF POINT(ax, ay) <> 0 THEN GOSUB splot
NEXT splat
FOR splat = .1 TO 3.141592654# * 2 STEP .5
ax = (w1 + 3) + 10 * COS(1 * splat)
ay = (w101 + 7) + 2 * SIN(1 * splat)
IF POINT(ax, ay) <> 0 THEN GOSUB splot
NEXT splat
FOR splat = .1 TO 3.141592654# * 2 STEP .2
ax = (w1 + 3) + 12 * COS(1 * splat)
ay = (w101 + 7) + 2 * SIN(1 * splat)
IF POINT(ax, ay) <> 0 THEN GOSUB splot
NEXT splat
w72 = 0
FOR w% = 1 TO 4
w72 = w72 + 1
IF POINT(w1 - w72, w101 + 6) <> 0 THEN LINE (w1 - w72, w101 + 6)-(w1 - w72, w101 + 6), 4
NEXT w%
w72 = 0
FOR w% = 1 TO 8
w72 = w72 + 1
IF POINT(w1 + w72, w101 + 6) <> 0 THEN LINE (w1 + w72, w101 + 6)-(w1 + w72, w101 + 6), 4
NEXT w%
FOR f% = 1 TO 7
IF POINT(w1 + 7, w101) = 0 THEN w1 = w1 - 1
NEXT f%
FOR f% = 1 TO 7
IF POINT(w1, w101) = 0 THEN w1 = w1 + 1
NEXT f%
LINE (w1, w101 + 7)-(w1, w101 + 7), 4
IF w101 < 174 THEN DRAW "c4r6c40f1d2u2h1g1d1f1d2g1h2e1u1h1l1g1d3f1"
IF w101 = 174 THEN
DRAW "c4r6"
GOSUB addrip
GOSUB blood
END IF
IF w101 <> 174 THEN GOSUB addrun
LINE (w1, w101 + 7)-(w1, w101 + 7), 40
e28 = 3
c64 = c64 + 1
w1 = 151 + c64
w101 = 50
m1000 = m1000 + 1
RETURN
explode:
IF diir$ = "r" THEN GOSUB walkright
IF diir$ = "l" THEN GOSUB walkleft
FOR splat = .1 TO 3.141592654# * 2 STEP 1
ax = (w1 + 3) + 5 * COS(1 * splat)
ay = (w101 + 7) + 5 * SIN(1 * splat)
IF POINT(ax, ay) <> 0 THEN GOSUB splot
NEXT splat
FOR splat = .1 TO 3.141592654# * 2 STEP .5
ax = (w1 + 3) + 10 * COS(1 * splat)
ay = (w101 + 7) + 10 * SIN(1 * splat)
IF POINT(ax, ay) <> 0 THEN GOSUB splot
NEXT splat
FOR splat = .1 TO 3.141592654# * 2 STEP .2
ax = (w1 + 3) + 12 * COS(1 * splat)
ay = (w101 + 7) + 12 * SIN(1 * splat)
IF POINT(ax, ay) <> 0 THEN GOSUB splot
NEXT splat
'GOSUB addrun
e28 = 3
c64 = c64 + 1
w1 = 151 + c64
w101 = 50
m1000 = m1000 + 1
RETURN
addrip:
d100 = d100 + 1
IF d100 = 101 THEN d100 = 1
dripx%(d100) = w1 + 3
dripy%(d100) = w101 + 8
RETURN
addrun:
r100 = r100 + 1
IF r100 = 101 THEN r100 = 1
runx%(r100) = w1 + 3
runy%(r100) = w101 + 8
RETURN
blood:
IF b100 = 10 THEN LINE (3, 197)-(317, 197), 40
IF b100 = 20 THEN LINE (3, 196)-(317, 196), 40
IF b100 = 30 THEN LINE (3, 195)-(317, 195), 40
IF b100 = 40 THEN LINE (3, 194)-(317, 194), 40
IF b100 = 50 THEN LINE (3, 193)-(317, 193), 40
IF b100 = 60 THEN LINE (3, 192)-(317, 192), 40
IF b100 = 70 THEN LINE (3, 191)-(317, 191), 40
IF b100 = 80 THEN LINE (3, 190)-(317, 190), 40
IF b100 = 90 THEN LINE (3, 189)-(317, 189), 40
IF b100 = 100 THEN LINE (3, 188)-(317, 188), 40
IF b100 = 110 THEN LINE (3, 187)-(317, 187), 40
IF b100 = 120 THEN LINE (3, 186)-(317, 186), 40
IF b100 = 130 THEN LINE (3, 185)-(317, 185), 40
IF b100 = 140 THEN LINE (3, 184)-(317, 184), 40
IF b100 = 150 THEN LINE (3, 183)-(317, 183), 40
IF b100 = 160 THEN
LINE (3, 182)-(317, 182), 40
GOSUB bloodbonus
END IF
RETURN
wipem:
IF e28 = 1 THEN GOSUB checksplat
IF e28 = 3 THEN RETURN
IF diir$ = "l" THEN GOSUB walkleft
IF diir$ = "r" THEN GOSUB walkright
RETURN
man:
IF kll$ = "doit" THEN GOSUB explode
IF kll$ = "doit" THEN RETURN
IF eras$ = "on" THEN GOSUB wipem
IF e28 = 3 THEN e28 = 1
IF eras$ = "on" THEN RETURN
IF w1 = 0 THEN RETURN
w99 = 0
w = 0
IF diir$ = "l" THEN GOSUB walkleft
IF diir$ = "r" THEN GOSUB walkright
w100 = w100 + 1
IF w100 = 7 THEN w100 = 1
IF w = 2 THEN
w101 = w101 + 1
w100 = 1
END IF
IF w = 3 THEN GOSUB j
IF diir$ = "l" THEN GOSUB fl
IF diir$ = "r" THEN GOSUB fr
IF w = 1 THEN GOSUB trn
IF diir$ = "l" THEN GOSUB walkleft
IF diir$ = "r" THEN GOSUB walkright
RETURN
j:
IF diir$ = "l" THEN GOSUB jl
IF diir$ = "r" THEN GOSUB jr
RETURN
jr:
w1 = w1 + 8
w101 = w101 - 9
RETURN
jl:
w1 = w1 - 8
w101 = w101 - 9
RETURN
trn:
IF diir$ = "l" THEN diir$ = "n"
IF diir$ = "r" THEN diir$ = "l"
IF diir$ = "n" THEN diir$ = "r"
RETURN
fl:
IF w100 = 3 THEN w1 = w1 - 1
IF w100 = 5 THEN w1 = w1 - 1
IF w100 = 6 THEN w1 = w1 - 1
IF w1 < 47 THEN w1 = 47
RETURN
fr:
IF w100 = 3 THEN w1 = w1 + 1
IF w100 = 5 THEN w1 = w1 + 1
IF w100 = 6 THEN w1 = w1 + 1
IF w1 > 267 THEN w1 = 267
RETURN
walkleft:
IF eras$ = "off" THEN GOSUB lcheck
IF w100 = 1 THEN PUT (w1, w101), r1%
IF w100 = 2 THEN PUT (w1, w101), r2%
IF w100 = 3 THEN PUT (w1, w101), r3%
IF w100 = 4 THEN PUT (w1, w101 - 1), r4%
IF w100 = 5 THEN PUT (w1, w101 - 1), r5%
IF w100 = 6 THEN PUT (w1, w101), r6%
RETURN
walkright:
IF eras$ = "off" THEN GOSUB rcheck
IF w100 = 1 THEN PUT (w1, w101), l1%
IF w100 = 2 THEN PUT (w1, w101), l2%
IF w100 = 3 THEN PUT (w1, w101), l3%
IF w100 = 4 THEN PUT (w1, w101 - 1), l4%
IF w100 = 5 THEN PUT (w1, w101 - 1), l5%
IF w100 = 6 THEN PUT (w1, w101), l6%
RETURN
lcheck:
IF POINT(w1 - 1, w101 + 2) <> 0 THEN w = 3
IF POINT(w1 - 2, w101 + 2) <> 0 THEN w = 3
IF POINT(w1 - 3, w101 + 2) <> 0 THEN w = 3
IF w = 3 THEN GOSUB lc
IF POINT(w1 + 5, w101 + 7) = 0 THEN w = 2
RETURN
lc:
IF POINT(w1 - 1, w101 - 2) <> 0 THEN w = 1
IF POINT(w1 - 2, w101 - 2) <> 0 THEN w = 1
IF POINT(w1 - 3, w101 - 2) <> 0 THEN w = 1
RETURN
rcheck:
IF POINT(w1 + 6, w101 + 2) <> 0 THEN w = 3
IF POINT(w1 + 7, w101 + 2) <> 0 THEN w = 3
IF POINT(w1 + 8, w101 + 2) <> 0 THEN w = 3
IF w = 3 THEN GOSUB rc
IF POINT(w1 + 2, w101 + 7) = 0 THEN w = 2
RETURN
rc:
IF POINT(w1 + 6, w101 - 2) <> 0 THEN w = 1
IF POINT(w1 + 7, w101 - 2) <> 0 THEN w = 1
IF POINT(w1 + 8, w101 - 2) <> 0 THEN w = 1
RETURN
bloodbonus:
ax = 160 + 30 * COS(1 * rot)
ay = 100 + 30 * SIN(1 * rot)
PUT (ax - 21, ay - 9), bldbns%
FOR bb% = 1 TO 20
FOR rot = 0 TO 3.141592654# * 2 STEP .1
p$ = "n"
gre$ = STR$(b69)
gre$ = MID$(gre$, 2, (LEN(gre$) - 1))
o$ = p$ + gre$
PUT (ax - 21, ay - 9), bldbns%
ax = 160 + b69 * COS(1 * rot)
ay = 100 + b69 * SIN(1 * rot)
PUT (ax - 21, ay - 9), bldbns%
NEXT rot
b69 = b69 + 1
NEXT bb%
FOR bb% = 1 TO 20
FOR rot = 0 TO 3.141592654# * 2 STEP .1
PUT (ax - 21, ay - 9), bldbns%
ax = 160 + b69 * COS(1 * rot)
ay = 100 + b69 * SIN(1 * rot)
PUT (ax - 21, ay - 9), bldbns%
NEXT rot
b69 = b69 - 1
NEXT bb%
ax = 160 + b69 * COS(1 * 0)
ay = 100 + b69 * SIN(1 * 0)
SLEEP 1
PUT (ax - 20, ay - 9), bldbns%
'e28 = 0
'eras$ = "on"
'GOSUB men
e28 = 1
kll$ = "doit"
eras$ = "on"
GOSUB men
e28 = 0
kll$ = "dont"
IF d1 > d97 / 2 THEN d1 = d1 - d97 / 2
IF d1 <= d97 / 2 THEN d1 = d1 / 2
IF d1 < 1 THEN d1 = 1
d1 = CINT(d1)
b100 = 0
m35 = m35 + 1
IF m34 = 21 THEN m34 = 20
SLEEP 1
LINE (3, 182)-(317, 197), 9, BF
s1000 = s1000 + 5000
RETURN
checksplat:
IF s = 0 THEN RETURN
IF w1 < x - 4 THEN RETURN
IF w101 < y - 4 THEN RETURN
IF w1 > x + 31 THEN RETURN
IF w101 > y + 27 THEN RETURN
s45 = 0
SELECT CASE p10
CASE 10: GOSUB cpiece1
CASE 20: GOSUB cpiece2
CASE 30: GOSUB cpiece3
CASE 40: GOSUB cpiece4
CASE 50: GOSUB cpiece5
CASE 60: GOSUB cpiece6
CASE 70: GOSUB cpiece7
END SELECT
IF POINT(w1 + 3, w101 + 3) <> 0 THEN s45 = 2
IF s45 = 2 THEN GOSUB splat
s45 = 0
RETURN
cpiece1:
SELECT CASE p0
CASE 1: GOSUB cp11
CASE 2: GOSUB cp12
CASE 3: GOSUB cp13
CASE 4: GOSUB cp14
END SELECT
RETURN
cpiece2:
SELECT CASE p0
CASE 1: GOSUB cp21
CASE 2: GOSUB cp22
CASE 3: GOSUB cp23
CASE 4: GOSUB cp24
END SELECT
RETURN
cpiece3:
SELECT CASE p0
CASE 1: GOSUB cp31
CASE 2: GOSUB cp32
CASE 3: GOSUB cp33
CASE 4: GOSUB cp34
END SELECT
RETURN
cpiece4:
SELECT CASE p0
CASE 1: GOSUB cp41
CASE 2: GOSUB cp42
CASE 3: GOSUB cp43
CASE 4: GOSUB cp44
END SELECT
RETURN
cpiece5:
SELECT CASE p0
CASE 1: GOSUB cp51
CASE 2: GOSUB cp52
CASE 3: GOSUB cp53
CASE 4: GOSUB cp54
END SELECT
RETURN
cpiece6:
SELECT CASE p0
CASE 1: GOSUB cp61
CASE 2: GOSUB cp62
CASE 3: GOSUB cp63
CASE 4: GOSUB cp64
END SELECT
RETURN
cpiece7:
SELECT CASE p0
CASE 1: GOSUB cp71
CASE 2: GOSUB cp72
CASE 3: GOSUB cp73
CASE 4: GOSUB cp74
END SELECT
RETURN
cp11:
IF w1 < x + 7 THEN s45 = s45 + 1
IF w101 < y + 27 THEN s45 = s45 + 1
RETURN
cp13:
IF w1 < x + 7 THEN s45 = s45 + 1
IF w101 < y + 27 THEN s45 = s45 + 1
RETURN
cp12:
IF w1 < x + 31 THEN s45 = s45 + 1
IF w101 < y + 6 THEN s45 = s45 + 1
RETURN
cp14:
IF w1 < x + 31 THEN s45 = s45 + 1
IF w101 < y + 6 THEN s45 = s45 + 1
RETURN
cp21:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp22:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp23:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp24:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp31:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp33:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp32:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp34:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp41:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp43:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp42:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp44:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp51:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp53:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp52:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp54:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp61:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp63:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp62:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp64:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp71:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp72:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
cp73:
IF w1 < x + 15 THEN s45 = s45 + 1
IF w101 < y + 20 THEN s45 = s45 + 1
RETURN
cp74:
IF w1 < x + 23 THEN s45 = s45 + 1
IF w101 < y + 13 THEN s45 = s45 + 1
RETURN
test:
CLS
LOCATE 10, 10: PRINT "Performing Speed Test"
LOCATE 12, 13: PRINT "  Please Wait"
TIMER ON
StartTime = TIMER
WHILE TimePast < 10
TimePast = TIMER - StartTime
LOCATE 14, 19: PRINT CINT(10 - TimePast)
g = g + 1
WEND
LOCATE 14, 18: PRINT "Done!"
CLS
scn1$ = "Ada           10"
scn2$ = "Ada           9"
scn3$ = "Ada           8"
scn4$ = "Ada           7"
scn5$ = "Ada           6"
scn6$ = "Ada           5"
scn7$ = "Ada           4"
scn8$ = "Ada           3"
scn9$ = "Ada           2"
scn10$ = "Ada           1"
scn11$ = STR$(g)
OPEN "tet.inf" FOR OUTPUT AS #1
WRITE #1, scn1$
WRITE #1, scn2$
WRITE #1, scn3$
WRITE #1, scn4$
WRITE #1, scn5$
WRITE #1, scn6$
WRITE #1, scn7$
WRITE #1, scn8$
WRITE #1, scn9$
WRITE #1, scn10$
WRITE #1, scn11$
CLOSE #1
RETURN
checkscor:
s56 = 0
IF s1000 > hs110 THEN s56 = s56 + 1
IF s1000 > hs109 THEN s56 = s56 + 1
IF s1000 > hs108 THEN s56 = s56 + 1
IF s1000 > hs107 THEN s56 = s56 + 1
IF s1000 > hs106 THEN s56 = s56 + 1
IF s1000 > hs105 THEN s56 = s56 + 1
IF s1000 > hs104 THEN s56 = s56 + 1
IF s1000 > hs103 THEN s56 = s56 + 1
IF s1000 > hs102 THEN s56 = s56 + 1
IF s1000 > hs101 THEN s56 = s56 + 1
IF s56 = 0 THEN RETURN
GOSUB getname
OPEN "tet.inf" FOR OUTPUT AS #1
SELECT CASE s56
CASE 1: GOSUB scn1
CASE 2: GOSUB scn2
CASE 3: GOSUB scn3
CASE 4: GOSUB scn4
CASE 5: GOSUB scn5
CASE 6: GOSUB scn6
CASE 7: GOSUB scn7
CASE 8: GOSUB scn8
CASE 9: GOSUB scn9
CASE 10: GOSUB scn10
END SELECT
LINE (48, 20)-(271, 180), 0, BF
LOCATE 8, 9: PRINT "   Name          Score"
LOCATE 10, 13: PRINT scn1$
LOCATE 11, 13: PRINT scn2$
LOCATE 12, 13: PRINT scn3$
LOCATE 13, 13: PRINT scn4$
LOCATE 14, 13: PRINT scn5$
LOCATE 15, 13: PRINT scn6$
LOCATE 16, 13: PRINT scn7$
LOCATE 17, 13: PRINT scn8$
LOCATE 18, 13: PRINT scn9$
LOCATE 19, 13: PRINT scn10$
WRITE #1, scn1$
WRITE #1, scn2$
WRITE #1, scn3$
WRITE #1, scn4$
WRITE #1, scn5$
WRITE #1, scn6$
WRITE #1, scn7$
WRITE #1, scn8$
WRITE #1, scn9$
WRITE #1, scn10$
WRITE #1, scn11$
CLOSE #1
SLEEP
GOSUB getkeys
FOR m% = 1 TO 15000
GOSUB melt
IF INKEY$ = CHR$(27) THEN m% = 15000
NEXT m%
SYSTEM
RETURN
scn10:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = scn6$
scn6$ = scn5$
scn5$ = scn4$
scn4$ = scn3$
scn3$ = scn2$
scn2$ = scn1$
scn1$ = n123$
RETURN
scn9:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = scn6$
scn6$ = scn5$
scn5$ = scn4$
scn4$ = scn3$
scn3$ = scn2$
scn2$ = n123$
RETURN
scn8:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = scn6$
scn6$ = scn5$
scn5$ = scn4$
scn4$ = scn3$
scn3$ = n123$
RETURN
scn7:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = scn6$
scn6$ = scn5$
scn5$ = scn4$
scn4$ = n123$
RETURN
scn6:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = scn6$
scn6$ = scn5$
scn5$ = n123$
RETURN
scn5:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = scn6$
scn6$ = n123$
RETURN
scn4:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = scn7$
scn7$ = n123$
RETURN
scn3:
scn10$ = scn9$
scn9$ = scn8$
scn8$ = n123$
RETURN
scn2:
scn10$ = scn9$
scn9$ = n123$
RETURN
scn1:
scn10$ = n123$
RETURN
getable:
OPEN "tet.inf" FOR INPUT AS #1
LINE INPUT #1, scn1$
LINE INPUT #1, scn2$
LINE INPUT #1, scn3$
LINE INPUT #1, scn4$
LINE INPUT #1, scn5$
LINE INPUT #1, scn6$
LINE INPUT #1, scn7$
LINE INPUT #1, scn8$
LINE INPUT #1, scn9$
LINE INPUT #1, scn10$
LINE INPUT #1, scn11$
CLOSE #1
g = LEN(scn11$) - 1
scn11$ = RIGHT$(scn11$, g)
g = VAL(scn11$)
PRINT g
d1 = CINT(g / 220)
k1000 = CINT(g / 170)
d97 = d1 / 10
w92 = d1 / 30
m35 = 5
scn1$ = MID$(scn1$, 2, (LEN(scn1$) - 2))
scn2$ = MID$(scn2$, 2, (LEN(scn2$) - 2))
scn3$ = MID$(scn3$, 2, (LEN(scn3$) - 2))
scn4$ = MID$(scn4$, 2, (LEN(scn4$) - 2))
scn5$ = MID$(scn5$, 2, (LEN(scn5$) - 2))
scn6$ = MID$(scn6$, 2, (LEN(scn6$) - 2))
scn7$ = MID$(scn7$, 2, (LEN(scn7$) - 2))
scn8$ = MID$(scn8$, 2, (LEN(scn8$) - 2))
scn9$ = MID$(scn9$, 2, (LEN(scn9$) - 2))
scn10$ = MID$(scn10$, 2, (LEN(scn10$) - 2))
hs1$ = MID$(scn1$, 14, (LEN(scn1$) - 13))
hs2$ = MID$(scn2$, 14, (LEN(scn2$) - 13))
hs3$ = MID$(scn3$, 14, (LEN(scn3$) - 13))
hs4$ = MID$(scn4$, 14, (LEN(scn4$) - 13))
hs5$ = MID$(scn5$, 14, (LEN(scn5$) - 13))
hs6$ = MID$(scn6$, 14, (LEN(scn6$) - 13))
hs7$ = MID$(scn7$, 14, (LEN(scn7$) - 13))
hs8$ = MID$(scn8$, 14, (LEN(scn8$) - 13))
hs9$ = MID$(scn9$, 14, (LEN(scn9$) - 13))
hs10$ = MID$(scn10$, 14, (LEN(scn10$) - 13))
hs101 = VAL(hs1$)
hs102 = VAL(hs2$)
hs103 = VAL(hs3$)
hs104 = VAL(hs4$)
hs105 = VAL(hs5$)
hs106 = VAL(hs6$)
hs107 = VAL(hs7$)
hs108 = VAL(hs8$)
hs109 = VAL(hs9$)
hs110 = VAL(hs10$)
RETURN
qut:
k12 = 1
RETURN
menu:
IF j67 = 23 THEN RETURN
ON KEY(1) GOSUB qut
KEY(0) ON
GET (48, 20)-(271, 180), drop%
m = 64
m1 = 1
m11 = 0
m12 = 0
m13 = 0
m14 = 0
m15 = 0
LINE (48, 20)-(271, 180), 0, BF
k12 = 0
DO UNTIL k12 = 1
PUT (55, m), block%, AND
kbd$ = INKEY$
mk$ = " "
FOR k% = 1 TO k1000
SELECT CASE kbd$
CASE CHR$(0) + "H": mk$ = "u"
CASE CHR$(0) + "P": mk$ = "d"
CASE CHR$(0) + "K": mk$ = "l"
CASE CHR$(0) + "M": mk$ = "r"
CASE CHR$(27): GOSUB quit
END SELECT
NEXT k%
LOCATE 6, 10: PRINT "   Press F1 To Play"
LOCATE 8, 9: PRINT "  Name           Score"
LOCATE 10, 12: PRINT scn1$
LOCATE 11, 12: PRINT scn2$
LOCATE 12, 12: PRINT scn3$
LOCATE 13, 12: PRINT scn4$
LOCATE 14, 12: PRINT scn5$
LOCATE 15, 12: PRINT scn6$
LOCATE 16, 12: PRINT scn7$
LOCATE 17, 12: PRINT scn8$
LOCATE 18, 12: PRINT scn9$
LOCATE 19, 12: PRINT scn10$
LOCATE 21, 10: PRINT "  Press Esc To Quit"
LOOP
LINE (48, 20)-(271, 180), 0, BF
PUT (48, 20), drop%
RETURN
getname:
IF j67 = 23 THEN GOSUB enditall
s37 = 37
LINE (48, 20)-(271, 180), 0, BF
LOCATE 6, 10: PRINT "  You have achieved"
LOCATE 8, 10: PRINT "    a high score!!"
LOCATE 10, 9: PRINT "Please enter your name.."
LOCATE 13, 10: INPUT ; "", n123$
j67 = 23
n123$ = n123$ + SPACE$(15)
n123$ = MID$(n123$, 1, 13)
n123$ = n123$ + STR$(s1000)
RETURN
enditall:
GOSUB getkeys
FOR m% = 1 TO 15000
GOSUB melt
IF INKEY$ = CHR$(27) THEN m% = 15000
NEXT m%
SYSTEM
RETURN
melt:
MaxX% = 319: MaxY% = 199
BlockWidth% = 5: Shift% = 1
DIM Black%(3000)
X1% = INT(RND * (319 + 5)) - 5
X2% = X1% + 5
IF X1% < 0 THEN X1% = 0
IF X2% > 319 THEN X2% = 319
GET (X1%, 0)-(X2%, 199 - 1), Black%(0)
PUT (X1%, 1), Black%(0), PSET
LINE (X1%, 0)-(X2%, 1 - 1), 0, BF
ERASE Black%
RETURN
intro:
CLS
SLEEP 2
COLOR 2
LOCATE 10, 9: PRINT "     In the beginning,"
SLEEP 2
COLOR 3
LOCATE 14, 9: PRINT "    There was Tetris..."
SLEEP 2
FOR m% = 1 TO 1090
LINE (1, 81)-(319, 81), 0
LINE (1, 114)-(319, 114), 0
GOSUB melt
NEXT m%
LOCATE 10, 9: PRINT "     But now........"
SLEEP 2
COLOR 40
LOCATE 14, 9: PRINT "   There's a new game"
LOCATE 16, 9: PRINT "     on the block.."
SLEEP 1
DEF SEG = 0
KeyFlags = PEEK(1047)
POKE 1047, &H0
DEF SEG
FOR m% = 1 TO 1090
'LINE (1, 81)-(319, 81), 0
'LINE (1, 114)-(319, 114), 0
LINE (1, 121)-(319, 121), 4
GOSUB melt
NEXT m%
LINE (1, 81)-(319, 121), 0, BF

PUT (81, 55), drop%, PSET
FOR m% = 1 TO 6000
LINE (1, 121)-(319, 121), 40
GOSUB malt
'IF INKEY$ = CHR$(27) THEN m% = 6000
IF m% > 1500 THEN GOSUB mer
NEXT m%
LINE (1, 121)-(319, 121), 40
COLOR 29
DEF SEG = 0
KeyFlags = PEEK(1047)
POKE 1047, &H0
DEF SEG
SLEEP
RETURN
mer:
IF INKEY$ <> "" THEN m% = 6000
RETURN
malt:
MaxX% = 319: MaxY% = 199
BlockWidth% = 5: Shift% = 1
DIM lack%(3000)
X1% = INT(RND * (319 + 5)) - 5
X2% = X1% + 5
IF X1% < 0 THEN X1% = 0
IF X2% > 319 THEN X2% = 319
GET (X1%, 121)-(X2%, 198), lack%(0)
PUT (X1%, 122), lack%(0), PSET
LINE (X1%, 121)-(X2%, 121), 0, BF
ERASE lack%
RETURN
'Written By Christian Dever
