Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BAS
'PROGRAM MSCORE
'THIS PROGRAM WILL ALLOW YOU TO LEARN HOW TO READ MUSIC
'RUN THIS PROGRAM IN QBASIC
'WRITTEN BY ALEX CENDROWICZ, 1999
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
SUB
SUB
SUB
SUB
SUB
aintro (namme)
astart (keyy)
initial (playy, keyy, keyy$)
outputt (playy, keyy, keyy$, ggo, egbdf, outype, intype)
user (ggo, egbdf, outype, intype, menu, playy)
Guess
Guess
Guess
Guess
Guess
note.
note on keyboard/ scale shown
note on keyboard/ no scale
chord
type of chord
SHARED
SHARED
SHARED
SHARED
SHARED
SHARED
SHARED
SHARED
now(5)
keyya(48)
crdinc(22, 4)
chodd(22, 4)
scalle(29)
sharp(2, 10)
rootkey(22)
drawkeyb(60, 9)
'
'
'
'
'
'
'
'
'
'
'
'
input variables/ arrays
COMMON SHARED chordd, mchorig, menu, slevel, levell, answ, startt
DIM SHARED keyb(4)
SCREEN 12
CALL aintro(namme)
DO
1
CALL astart(keyy)
CALL initial(playy, keyy, keyy$)
time1 = TIMER
FOR levell = slevel TO 16
CLS
LOCATE 12, 30
PRINT "L E V E L
"; levell
WHILE INKEY$ = "": WEND
SELECT CASE levell
CASE 1: egbdf = 1:
CASE 2: egbdf = 1:
CASE 3: egbdf = 0:
outype = 1:
outype = 2:
outype = 1:
intype = 1
intype = 1
intype = 1
Page 1
CASE 4: egbdf = 0:
CASE 5: egbdf = 0:
CASE 6: egbdf = 0:
CASE 7: egbdf = 0:
CASE 8: egbdf = 0:
CASE 9: egbdf = 0:
CASE 10: egbdf = 0:
CASE 11: egbdf = 0:
CASE 12: egbdf = 0:
CASE 13: egbdf = 0:
CASE 14: egbdf = 0:
CASE 15: egbdf = 0:
CASE 16: egbdf = 0:
END SELECT
outype
outype
outype
outype
outype
outype
outype
outype
outype
outype
outype
outype
outype
=
=
=
=
=
=
=
=
=
=
=
=
=
MSCORE3.BAS
2:
intype
1:
intype
2:
intype
1:
intype
2:
intype
3:
intype
3:
intype
3:
intype
3:
intype
4:
intype
4:
intype
4:
intype
4:
intype
=
=
=
=
=
=
=
=
=
=
=
=
=
1
2
2
3
3
2
3
4
5
2
3
4
5
ggo = 0
startt = 1
DO
ggo = ggo + 1
CLS
CALL outputt(playy, keyy, keyy$, ggo, egbdf, outype, intype)
startt = 0
CALL user(ggo, egbdf, outype, intype, menu, playy)
IF menu = 1 THEN GOTO 1
IF answ = 0 THEN ggo = ggo - 1
LOOP UNTIL ggo = 50
CLS
LOCATE 10, 25
PRINT "You have now completed"
LOCATE 12, 32
PRINT "Level "; levell
WHILE INKEY$ = "": WEND
NEXT levell
'
time2 = TIMER
CLS
mins = FIX((time2 - time1) / 60)
secs = FIX((time2 - time1) - mins)
LOCATE 12, 22: PRINT "Time taken ="; mins; "minutes and"; secs; "seconds"
WHILE INKEY$ = "": WEND
LOOP
SUB aintro (namme)
CLS
LOCATE 6, 36
PRINT "SCOREREAD"
LOCATE 7, 32
PRINT "ver 1.1 Jan 1998."
LOCATE 9, 31
PRINT "by Alex Cendrowicz"
LOCATE 20, 13
PRINT "This program will teach you to read music scores faster"
WHILE INKEY$ = "": WEND
END SUB
SUB astart (keyy)
menu = 0
RANDOMIZE TIMER
keys(1) = "Eb"
Page 2
MSCORE3.BAS
keys(2)
keys(3)
keys(4)
keys(5)
keys(6)
keys(7)
keys(8)
=
=
=
=
=
=
=
"Bb"
"F"
"C"
"G"
"D"
"A"
"E"
keyy = 4
slevel = 1
'
5 CLS
LOCATE 12, 30
PRINT "Enter key (using arrows and enter)."
LOCATE 14, 30
PRINT keys(keyy); " "
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "H": keyy = keyy + 1
IF keyy = 9 THEN keyy = 1
LOCATE 14, 30
PRINT keys(keyy); " "
'up
= keyy + 1
'down
= keyy - 1
'right = column + 1
'left
= column - 1
"
Page 3
MSCORE3.BAS
LOOP
END SELECT
LOOP
10
'
11 CLS
LOCATE 12, 30
PRINT "Enter level (using arrows and enter)."
LOCATE 14, 29
PRINT slevel; " "
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "H": slevel = slevel + 1
IF slevel = 17 THEN slevel = 1
LOCATE 14, 29
PRINT slevel; " "
'up
= keyy + 1
'down
= keyy - 1
'right = column + 1
'left
= column - 1
"
LOOP
12
Page 4
MSCORE3.BAS
END SUB
SUB initial (playy, keyy, keyy$)
'********************************************************************
'*****
I N I T I A L I Z E
A R R A Y S ************************
'********************************************************************
FOR a = 1 TO 10
FOR B = 1 TO 2
sharp(B, a) = 0
NEXT B
NEXT a
FOR a = 1 TO 22
FOR B = 1 TO 4
crdinc(a, B) = 0
chodd(a, B) = 0
NEXT B
NEXT a
FOR a = 1 TO 60
whscal(a) = 0
NEXT a
'********************************************************************
'*****
K E Y
L A Y O U T
****************************
'********************************************************************
SELECT CASE keyy
CASE 1: keyy$ = "Key of Eb or Cm": playy = 4
sharp(1, 1) = -1
sharp(1, 2) = 8
sharp(1, 3) = 24:
sharp(2, 3) = 1
sharp(1, 4) = 10:
sharp(2, 4) = 1
sharp(1, 5) = 21:
sharp(2, 5) = 2
sharp(1, 6) = 7:
sharp(2, 6) = 2
sharp(1, 7) = 25:
sharp(2, 7) = 3
sharp(1, 8) = 11:
sharp(2, 8) = 3
CASE 2: keyy$
sharp(1, 1) =
sharp(1, 2) =
sharp(1, 3) =
sharp(1, 4) =
sharp(1, 5) =
sharp(1, 6) =
CASE 3: keyy$
sharp(1, 1) =
sharp(1, 2) =
sharp(1, 3) =
sharp(1, 4) =
sharp(1, 4) = 6:
MSCORE3.BAS
sharp(2, 4) = 1
CASE 6: keyy$
sharp(1, 1) =
sharp(1, 2) =
sharp(1, 3) =
sharp(1, 4) =
sharp(1, 5) =
sharp(1, 6) =
CASE 7: keyy$
sharp(1, 1) =
sharp(1, 2) =
sharp(1, 3) =
sharp(1, 4) =
sharp(1, 5) =
sharp(1, 6) =
sharp(1, 7) =
sharp(1, 8) =
END SELECT
'********************************************************************
'***** C H R O M A T I C
L A Y O U T
*********
'********************************************************************
'--------------------------'-----K E Y
O F
Bb ----Page 6
MSCORE3.BAS
'--------------------------CASE 2
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
'--------------------------'-----K E Y
O F
F ----'--------------------------CASE 3
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
'--------------------------'-----K E Y
O F
C ----'--------------------------CASE 4
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
'--------------------------'-----K E Y
O F
G ----'--------------------------CASE 5
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
1)
2)
3)
4)
5)
6)
7)
8)
9)
=
=
=
=
=
=
=
=
=
MSCORE3.BAS
keyys(1, 10) = "C#": keyys(2, 10) = "#": keyya(10) = 23
keyys(1, 11) = "D": keyys(2, 11) = "": keyya(11) = 22
keyys(1, 12) = "D#": keyys(2, 12) = "#": keyya(12) = 22
'--------------------------'-----K E Y
O F
D ----'--------------------------CASE 6
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
'--------------------------'-----K E Y
O F
A ----'--------------------------CASE 7
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
1) = "E":
keyys(2, 1) = "":
keyya(1) = 28
2) = "E#":
keyys(2, 2) = "#":
keyya(2) = 28
3) = "F#":
keyys(2, 3) = "":
keyya(3) = 27
4) = "G":
keyys(2, 4) = "h":
keyya(4) = 26
5) = "G#": keyys(2, 5) = "":
keyya(5) = 26
6) = "A": keyys(2, 6) = "": keyya(6) = 25
7) = "A#": keyys(2, 7) = "#": keyya(7) = 25
8) = "B": keyys(2, 8) = "": keyya(8) = 24
9) = "B#": keyys(2, 9) = "#": keyya(9) = 24
10) = "C#": keyys(2, 10) = "": keyya(10) = 23
11) = "D": keyys(2, 11) = "": keyya(11) = 22
12) = "D#": keyys(2, 12) = "#": keyya(12) = 22
'--------------------------'-----K E Y
O F
E ----'--------------------------CASE 8
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
keyys(1,
END SELECT
'
FOR O = 1 TO
FOR a = 1 TO
keyys(1, a +
keyys(2, a +
3
12
12 * O) = keyys(1, a)
12 * O) = keyys(2, a)
Page 8
MSCORE3.BAS
keyya(a + 12 * O) = keyya(a) - 7 * O
NEXT a
NEXT O
'********************************************************************
'***** D I A T O N I C
L A Y O U T
************
'********************************************************************
SELECT CASE keyy
CASE 1
scalle(1) = 1
scalle(2) = 3
scalle(3) = 5
scalle(4) = 6
scalle(5) = 8
scalle(6) = 10
scalle(7) = 12
scalle(29) = 1
CASE 2
scalle(1) = 1
scalle(2) = 3
scalle(3) = 5
scalle(4) = 7
scalle(5) = 8
scalle(6) = 10
scalle(7) = 12
scalle(29) = 8
CASE 3
scalle(1) = 2
scalle(2) = 3
scalle(3) = 5
scalle(4) = 7
scalle(5) = 8
scalle(6) = 10
scalle(7) = 12
scalle(29) = 3
CASE 4
scalle(1) = 1
scalle(2) = 2
scalle(3) = 4
scalle(4) = 6
scalle(5) = 8
scalle(6) = 9
scalle(7) = 11
scalle(29) = 9
CASE 5
scalle(1) = 1
scalle(2) = 3
scalle(3) = 4
scalle(4) = 6
scalle(5) = 8
scalle(6) = 9
scalle(7) = 11
scalle(29) = 4
CASE 6
scalle(1) = 1
scalle(2) = 3
scalle(3) = 4
scalle(4) = 6
scalle(5) = 8
scalle(6) = 10
scalle(7) = 11
scalle(29) = 11
CASE 7
scalle(1) = 1
scalle(2) = 3
scalle(3) = 5
Page 9
MSCORE3.BAS
scalle(4) = 6
scalle(5) = 8
scalle(6) = 10
scalle(7) = 11
scalle(29) = 6
CASE 8
scalle(1) = 1
scalle(2) = 3
scalle(3) = 5
scalle(4) = 6
scalle(5) = 8
scalle(6) = 10
scalle(7) = 12
scalle(29) = 1
END SELECT
FOR O = 1 TO 3
FOR a = 1 TO 7
scalle(a + 7 * O) = scalle(a) + 12 * O
NEXT a
NEXT O
'********************************************************************
'****** C H O R D
L A Y O U T
*******************
'********************************************************************
crdinc(1, 1) = 1:
crdinc(1, 2) = 5:
crdinc(1, 3) = 8
'C
crdinc(2, 1) = 3:
crdinc(2, 2) = 6:
crdinc(2, 3) = 10
'Dm
crdinc(3, 1) = 5:
crdinc(3, 2) = 8:
crdinc(3, 3) = 12
'Em
crdinc(4, 1) = 1:
crdinc(4, 2) = 6:
crdinc(4, 3) = 10
'F
crdinc(5, 1) = 3:
crdinc(5, 2) = 8:
crdinc(5, 3) = 12
'G
crdinc(6, 1) = 1:
crdinc(6, 2) = 5:
crdinc(6, 3) = 10
'Am
crdinc(7, 1) = 3:
crdinc(7, 2) = 6:
crdinc(7, 3) = 12
'Bd
'--------------------------------------------------------------------------crdinc(8, 1) = 5:
crdinc(8, 2) = 9:
crdinc(8, 3) = 12
'E
crdinc(9, 1) = 3:
crdinc(9, 2) = 5:
crdinc(9, 3) = 9
crdinc(9, 4) = 12
'E7
crdinc(10, 1) = 3:
crdinc(10, 2) = 6:
crdinc(10, 3) = 8
crdinc(10, 4) = 12
'G7
'--------------------------------------------------------------------------crdinc(11, 1) = 5:
crdinc(11, 2) = 8:
crdinc(11, 3) = 11
'Ed
crdinc(12, 1) = 3:
crdinc(12, 2) = 8:
crdinc(12, 3) = 11
'Gm
crdinc(13, 1) = 3:
crdinc(13, 2) = 6:
crdinc(13, 3) = 11
'Bb
crdinc(14, 1) = 2:
crdinc(14, 2) = 5:
crdinc(14, 3) = 10
'A
crdinc(15, 1) = 2:
crdinc(15, 2) = 5:
crdinc(15, 3) = 8
crdinc(15, 4) = 10
'A7
crdinc(16, 1) = 1:
crdinc(16, 2) = 5:
crdinc(16, 3) = 8
crdinc(16, 4) = 11
'C7
'---------------------------------------------------------------------------crdinc(17, 1) = 3:
crdinc(17, 2) = 7:
crdinc(17, 3) = 12
'Bm
crdinc(18, 1) = 3:
crdinc(18, 2) = 7:
crdinc(18, 3) = 10
'D
crdinc(19, 1) = 1:
crdinc(19, 2) = 3:
crdinc(19, 3) = 7
crdinc(19, 4) = 10
'D7
crdinc(20, 1) = 1:
crdinc(20, 2) = 7:
crdinc(20, 3) = 10
'F#d
crdinc(21, 1) = 4:
crdinc(21, 2) = 7:
crdinc(21, 3) = 12
'B
crdinc(22, 1) = 4:
crdinc(22, 2) = 7:
crdinc(22, 3) = 10
crdinc(22, 4) = 12
'B7
rootkey(1)
rootkey(2)
rootkey(3)
rootkey(4)
rootkey(5)
rootkey(6)
rootkey(7)
rootkey(8)
rootkey(9)
=
=
=
=
=
=
=
=
=
1
1
1
2
2
3
3
1
2
Page 10
MSCORE3.BAS
rootkey(10)
rootkey(11)
rootkey(12)
rootkey(13)
rootkey(14)
rootkey(15)
rootkey(16)
rootkey(17)
rootkey(18)
rootkey(19)
rootkey(20)
rootkey(21)
rootkey(22)
=
=
=
=
=
=
=
=
=
=
=
=
=
3
1
2
3
3
4
1
3
1
2
2
3
4
FOR a = 1 TO 22
SELECT CASE crdinc(a, 4)
CASE 0
FOR B = 1 TO 3
chodd(a, B) = crdinc(a, B) - 1 + scalle(29)
IF chodd(a, B) > 12 THEN
chodd(a, B) = chodd(a, B) - 12
END IF
NEXT B
CASE ELSE
FOR B = 1 TO 4
chodd(a, B) = crdinc(a, B) - 1 + scalle(29)
IF chodd(a, B) > 12 THEN
chodd(a, B) = chodd(a, B) - 12
END IF
NEXT B
END SELECT
NEXT a
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(1,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
1)
2)
3)
4)
5)
6)
7)
=
=
=
=
=
=
=
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
'
MSCORE3.BAS
8) = "Major dominant for ":
9) = "Dominant 7th for ":
10) = "Dominant 7th for ":
11) = "Diminished in subdominant key"
12) = "Subdom. for minor scale":
13) = "Subdom. for major scale":
14) = "Major dom. for minor scale":
15) = "Dom. 7th for minor scale ":
16) = "Dom. 7th for major scale":
17) = "Minor dom. for minor scale":
18) = "Dom. for major scale":
19) = "Dom. 7th for major scale":
20) = "Diminished in dominant key"
21) = "Major dom. for minor scale":
22) = "Dom. 7th for minor scale ":
12)
13)
14)
15)
16)
17)
18)
19)
=
=
=
=
=
=
=
=
"in
"in
"in
"in
"in
"in
"in
"in
subdom. key"
subdom. key"
subdom. key"
subdom. key"
subdom. key"
dom. key"
dom. key"
dom. key"
poss = 0
FOR a = 1 TO 5
FOR B = 1 TO 12
IF B = 1 OR B =
poss = poss + 1
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
ELSE
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
drawkeyb(a * 12
END IF
NEXT B
NEXT a
'
3 OR B = 5 OR B = 6 OR B = 8 OR B = 10 OR B = 12 THEN
-
12
12
12
12
12
12
12
12
12
+
+
+
+
+
+
+
+
+
B,
B,
B,
B,
B,
B,
B,
B,
B,
1)
2)
3)
4)
5)
6)
7)
8)
9)
=
=
=
=
=
=
=
=
=
302
390
312
320
302
390
312
370
1
+ poss * 10
12
12
12
12
12
12
12
12
12
+
+
+
+
+
+
+
+
+
B,
B,
B,
B,
B,
B,
B,
B,
B,
1)
2)
3)
4)
5)
6)
7)
8)
9)
=
=
=
=
=
=
=
=
=
302
370
312
319
302
370
312
350
2
+ poss * 10 + 7
+ poss * 10
+
+
+
poss * 10 + 2
3
poss * 10 - 2
3
+ poss * 10 + 3
+
+
+
poss * 10 + 2 + 7
3
poss * 10 - 2 + 3
3
FOR a = 1 TO 28
whscal(scalle(a) + playy - 1) = 1
NEXT a
END SUB
SUB outputt (playy, keyy, keyy$, ggo, egbdf, outype, intype)
DIM linn(4)
DIM other(2, 5)
'
Initialize arrays
FOR a = 1 TO 5
now(a) = 0
NEXT a
Page 12
MSCORE3.BAS
' Print ggo
LOCATE 1, 1
PRINT ggo; "/50"
'
m = 16
C = -9
'
Print the key things are in
LOCATE 2, 50
PRINT keyy$
'
'
1:
1
1
1
linn(3) = 1
FOR a = 1 TO 14
h = 2 * m * a + C
SELECT CASE a
Page 13
MSCORE3.BAS
CASE 1: IF linn(4) = 1 THEN LINE (250, h)-(290, h), 3
CASE 2: IF linn(3) = 1 THEN LINE (250, h)-(290, h), 3
CASE 3 TO 7: LINE (20, h)-(300, h), 3
CASE 8: IF linn(2) = 1 THEN LINE (250, h)-(290, h), 3
CASE 9 TO 13: LINE (20, h)-(300, h), 3
CASE 14: IF linn(1) = 1 THEN LINE (250, h)-(290, h), 3
END SELECT
NEXT a
'Begining of bar vertical line
LINE (220, 87)-(220, 215), 3
LINE (220, 279)-(220, 407), 3
'
MSCORE3.BAS
FOR a = 18 TO 27 STEP 2
LOCATE a, 39
PRINT keyys(1, scalle(29 - a))
NEXT a
COLOR 7
FOR a = 7 TO 14 STEP 2
LOCATE a, 41
PRINT keyys(1, scalle(29 - a))
NEXT a
FOR a = 19 TO 26 STEP 2
LOCATE a, 41
PRINT keyys(1, scalle(29 - a))
NEXT a
END IF
COLOR 15
'
"h"
keyya(now(1)) + C
+
-
8,
8,
8,
8,
y
y
y
y
32)-(x
20)-(x
16)-(x
20)-(x
+
+
+
8,
8,
8,
8,
y
y
y
y
+
+
+
20)
32)
20)
16)
CASE IS = "X"
y = m * keyya(now(1)) + C
x = 240
LINE (x - 16, y - 16)-(x + 16, y + 16)
LINE (x - 16, y + 16)-(x + 16, y - 16)
FOR cc = 1 TO 3 STEP .5
CIRCLE (x - 16, y - 16), cc
CIRCLE (x + 16, y + 16), cc
Page 15
MSCORE3.BAS
CIRCLE (x - 16, y + 16), cc
CIRCLE (x + 16, y - 16), cc
NEXT cc
END SELECT
CASE 3
'*****
FOR B = 1 TO 3
h = m * keyya(now(B)) + C
FOR a = 1 TO 14
CIRCLE (270, h), a
NEXT a
NEXT B
CASE 4
'*****
SELECT CASE chodd(now(5), 4)
CASE 0
FOR B = 1 TO 3
h = m * keyya(now(B)) + C
FOR a = 1 TO 14
CIRCLE (270, h), a
NEXT a
'------------------------------------------SELECT CASE keyys(2, now(B))
CASE IS = "#"
y = m * keyya(now(B)) + C
x = 240
LINE (x - 8, y - 32)-(x - 8, y + 40)
LINE (x + 8, y - 40)-(x + 8, y + 32)
LINE (x - 16, y - 8)-(x + 16, y - 24)
LINE (x - 16, y + 24)-(x + 16, y + 8)
CASE IS = "b"
y = m * keyya(now(B)) + C
x = 240
LINE (x - 8, y - 48)-(x - 8, y + 16)
CIRCLE (x - 8, y), 16, , 0, 1.57
CIRCLE (x - 8, y), 16, , 4.71, 0
CASE IS = "h"
y = m * keyya(now(B)) +
x = 240
LINE (x - 8, y - 32)-(x
LINE (x + 8, y - 20)-(x
LINE (x - 8, y - 16)-(x
LINE (x - 8, y + 20)-(x
C
+
+
+
8,
8,
8,
8,
y
y
y
y
+
+
+
20)
32)
20)
16)
CASE IS = "X"
y = m * keyya(now(B)) + C
x = 240
LINE (x - 16, y - 16)-(x + 16, y + 16)
LINE (x - 16, y + 16)-(x + 16, y - 16)
FOR cc = 1 TO 3 STEP .5
CIRCLE (x - 16, y - 16), cc
CIRCLE (x + 16, y + 16), cc
CIRCLE (x - 16, y + 16), cc
CIRCLE (x + 16, y - 16), cc
NEXT cc
END SELECT
'------------------------------------------NEXT B
CASE ELSE
FOR B = 1 TO 4
h = m * keyya(now(B)) + C
Page 16
MSCORE3.BAS
FOR a = 1 TO 14
CIRCLE (270, h), a
NEXT a
'------------------------------------------SELECT CASE keyys(2, now(B))
CASE IS = "#"
y = m * keyya(now(B)) + C
x = 240
LINE (x - 8, y - 32)-(x - 8, y + 40)
LINE (x + 8, y - 40)-(x + 8, y + 32)
LINE (x - 16, y - 8)-(x + 16, y - 24)
LINE (x - 16, y + 24)-(x + 16, y + 8)
CASE IS = "b"
y = m * keyya(now(B)) + C
x = 240
LINE (x - 8, y - 48)-(x - 8, y + 16)
CIRCLE (x - 8, y), 16, , 0, 1.57
CIRCLE (x - 8, y), 16, , 4.71, 0
CASE IS = "h"
y = m * keyya(now(B)) +
x = 240
LINE (x - 8, y - 32)-(x
LINE (x + 8, y - 20)-(x
LINE (x - 8, y - 16)-(x
LINE (x - 8, y + 20)-(x
C
+
+
+
8,
8,
8,
8,
y
y
y
y
+
+
+
20)
32)
20)
16)
CASE IS = "X"
y = m * keyya(now(B)) + C
x = 240
LINE (x - 16, y - 16)-(x + 16, y + 16)
LINE (x - 16, y + 16)-(x + 16, y - 16)
FOR cc = 1 TO 3 STEP .5
CIRCLE (x - 16, y - 16), cc
CIRCLE (x + 16, y + 16), cc
CIRCLE (x - 16, y + 16), cc
CIRCLE (x + 16, y - 16), cc
NEXT cc
END SELECT
'------------------------------------------NEXT B
END SELECT
END SELECT
'
IF intype = 5 THEN
mchorig = FIX(RND * 5) + 1
a = 0
FOR B = 1 TO 5
a = a + 1
other(1, a) = B
IF mchorig = B THEN a = a - 1
NEXT B
a = 0
DO
a = a + 1
SELECT CASE outype
CASE 3: other(2, a) = FIX(RND * 7) + 1
Page 17
MSCORE3.BAS
CASE 4: other(2, a) = FIX(RND * 22) + 1
END SELECT
IF a > 1 THEN
FOR B = 1 TO a - 1
IF other(2, a) = other(2, B) THEN a = a - 1
NEXT B
END IF
IF other(2, a) = now(5) THEN a = a - 1
LOOP UNTIL a = 4
LOCATE 3 * mchorig + 8, 46:
LOCATE 3 * mchorig + 9, 50:
FOR a = 1 TO 4
LOCATE 3 * other(1, a) + 8,
LOCATE 3 * other(1, a) + 9,
NEXT a
END IF
'
Draw Keyboard
IF intype = 2 THEN
FOR a = 1 TO 2
FOR B = 1 TO 53
MSCORE3.BAS
LOCATE 4, 45: PRINT "Use the Arrows and Return to "
LOCATE 5, 45: PRINT "type in the correct note "
LOCATE 6, 45: PRINT "the score shown on"
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 2: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "The previous level involved scale"
LOCATE 5, 45: PRINT "notes only. Now some notes will"
LOCATE 6, 45: PRINT "be sharp or flat."
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 3: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "By this stage you are expected"
LOCATE 5, 45: PRINT "to remember what notes are what."
LOCATE 6, 45: PRINT ""
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 4: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Now for some more sharps and"
LOCATE 5, 45: PRINT "flats."
LOCATE 6, 45: PRINT ""
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 5: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Use the left and right arrows to"
LOCATE 5, 45: PRINT "move along the keyboard."
LOCATE 6, 45: PRINT "Scale notes are highlighted"
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 6: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Now for some more sharps and"
LOCATE 5, 45: PRINT "flats."
LOCATE 6, 45: PRINT ""
Page 19
MSCORE3.BAS
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 7: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "You are now expected to remember"
LOCATE 5, 45: PRINT "where the scale lies on the "
LOCATE 6, 45: PRINT "keyboard"
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 8: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Now for some more sharps and"
LOCATE 5, 45: PRINT "flats."
LOCATE 6, 45: PRINT ""
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 9: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "CHORDS!"
LOCATE 5, 45: PRINT "Use the space-bar to select or"
LOCATE 6, 45: PRINT "de-select notes on the keyboard"
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 10: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "No more of that highlighted"
LOCATE 5, 45: PRINT "scale."
LOCATE 6, 45: PRINT ""
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 11: box = 2
LINE (340, 270)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Name that chord. Use the space"
LOCATE 5, 45: PRINT "bar to swap between major, minor"
LOCATE 6, 45: PRINT "diminished and seventh chords"
COLOR 2
LOCATE 8, 45: PRINT "Useful anagrams to remember are:"
LOCATE 10, 47: PRINT "For the treble clef"
Page 20
MSCORE3.BAS
LOCATE 11, 47: PRINT "1: Every Good Boy Does Football"
LOCATE 12, 47: PRINT "2: F A C E"
LOCATE 14, 47: PRINT "For the bass clef"
LOCATE 15, 47: PRINT "1: Good Boy Does Football And"
LOCATE 16, 47: PRINT "2: A C E G"
CASE 12: box = 1
LINE (340, 110)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Hard-core, chord theory, multiple"
LOCATE 5, 45: PRINT "choice. Use the arrows to select"
LOCATE 6, 45: PRINT "the correct answer"
CASE 13: box = 1
LINE (340, 110)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Chords with sharps or flats?"
LOCATE 5, 45: PRINT "Arise when modulating one key up"
LOCATE 6, 45: PRINT "or down: e.g. C to G or C to F"
CASE 14: box = 1
LINE (340, 110)-(630, 35), 10, B
LOCATE 4, 45: PRINT "The dominant of the minor scale is"
LOCATE 5, 45: PRINT "normally a minor chord but is often"
LOCATE 6, 45: PRINT "played as a major with a sharp 3rd"
CASE 15: box = 1
LINE (340, 110)-(630, 35), 10, B
LOCATE 4, 45: PRINT "When playing in different keys"
LOCATE 5, 45: PRINT "The dominant of the minor scale in"
LOCATE 6, 45: PRINT "the new key can also be major"
CASE 16: box = 1
LINE (340, 110)-(630, 35), 10, B
LOCATE 4, 45: PRINT "Since F is the subdominant to C. F"
LOCATE 5, 45: PRINT "is the subdominant key to the key"
LOCATE 6, 45: PRINT "of C. G is the dominant key to C"
END SELECT
WHILE INKEY$ = "": WEND
SELECT CASE box
CASE IS = 1
LINE (340, 110)-(630, 35), 0, BF
CASE IS = 2
LINE (340, 270)-(630, 35), 0, BF
END SELECT
END IF
COLOR 15
END SUB
SUB user (ggo, egbdf, outype, intype, menu, playy)
DIM
DIM
DIM
DIM
DIM
notte1s(7)
notte2s(4)
chodd1s(7)
chodd2s(4)
chodd3s(4)
AS
AS
AS
AS
AS
STRING
STRING
STRING
STRING
STRING
=
=
=
=
=
=
=
"A"
"B"
"C"
"D"
"E"
"F"
"G"
chodd1s(1)
chodd1s(2)
chodd1s(3)
chodd1s(4)
=
=
=
=
"A"
"B"
"C"
"D"
'intype
'intype
'intype
'intype
'intype
=
=
=
=
=
1,
1,
4,
4,
4,
A
b
A
b
m
to
to
to
to
to
G,
X,
G,
X,
7,
notte1
notte2
chodd1
chodd2
chodd3
'intype = 2 or 3
'vertical position of circle for intype 5
Page 21
MSCORE3.BAS
chodd1s(5) = "E"
chodd1s(6) = "F"
chodd1s(7) = "G"
notte2s(1)
notte2s(2)
notte2s(3)
notte2s(4)
=
=
=
=
"b"
""
"#"
"X"
chodd2s(1)
chodd2s(2)
chodd2s(3)
chodd2s(4)
=
=
=
=
"b"
""
"#"
"X"
chodd3s(1)
chodd3s(2)
chodd3s(3)
chodd3s(4)
=
=
=
=
""
"m"
"dim"
"7"
keybd(1)
keybd(2)
keybd(3)
keybd(4)
col = 2
=
=
=
=
0
0
0
0
mchod(1)
mchod(2)
mchod(3)
mchod(4)
mchod(5)
=
=
=
=
=
166
214
262
310
358
IF intype = 1 THEN
'*****************
notte1 = 1
notte2 = 2
LOCATE 18, 55: PRINT notte1s(notte1) + notte2s(notte2) + " "
101
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "M": notte1 = notte1 + 1:
'right
IF notte1 = 8 THEN notte1 = 1
LOCATE 18, 55: PRINT notte1s(notte1) + notte2s(notte2) + " "
CASE CHR$(0) + "K": notte1 = notte1 - 1:
'left
IF notte1 = 0 THEN notte1 = 7
LOCATE 18, 55: PRINT notte1s(notte1) + notte2s(notte2) + " "
CASE CHR$(0) + "H": notte2 = notte2 + 1:
'up
IF notte2 = 5 THEN notte2 = 4
LOCATE 18, 55: PRINT notte1s(notte1) + notte2s(notte2) + " "
CASE CHR$(0) + "P": notte2 = notte2 - 1:
'down
IF notte2 = 0 THEN notte2 = 1
LOCATE 18, 55: PRINT notte1s(notte1) + notte2s(notte2) + " "
CASE CHR$(32)
GOTO 102
CASE CHR$(13)
GOTO 102
CASE CHR$(27)
LOCATE 28, 30
PRINT "Quit Y / N or Menu M"
DO
Page 22
MSCORE3.BAS
kbd$ = INKEY$
SELECT CASE kbd$
CASE "Y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "M": menu = 1: GOTO 200: CASE "m": menu = 1: GOTO 200
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
"
GOTO 101
END SELECT
LOOP
END SELECT
LOOP
102
IF notte1s(notte1) + notte2s(notte2) = keyys(1, now(1)) THEN
LOCATE 19, 55: PRINT "CORRECT"
answ = 1
SOUND 2000, .1
ELSE
LOCATE 19, 55: PRINT "INCORRECT"
SOUND 50, 1
LOCATE 21, 55: PRINT "Should be : "; keyys(1, now(1))
answ = 0
WHILE INKEY$ = "": WEND
END IF
ELSEIF (intype = 2 OR intype = 3) AND (outype = 1 OR outype = 2) THEN
'*****************
keybd = 25
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, BF
111
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "M": keybd = keybd + 1:
'right
IF keybd = 54 THEN keybd = 53
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, BF
IF drawkeyb(keybd - 1, 9) = 1 THEN
LINE (drawkeyb(keybd - 1, 5), drawkeyb(keybd - 1, 6))-(drawkeyb(keybd - 1, 7),
drawkeyb(keybd - 1, 8)), 7, BF
ELSE
LINE (drawkeyb(keybd - 1, 5), drawkeyb(keybd - 1, 6))-(drawkeyb(keybd - 1, 7),
drawkeyb(keybd - 1, 8)), 8, BF
END IF
CASE CHR$(0) + "K": keybd = keybd - 1:
'left
IF keybd = 0 THEN keybd = 1
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, BF
IF drawkeyb(keybd + 1, 9) = 1 THEN
LINE (drawkeyb(keybd + 1, 5), drawkeyb(keybd + 1, 6))-(drawkeyb(keybd + 1, 7),
drawkeyb(keybd + 1, 8)), 7, BF
ELSE
LINE (drawkeyb(keybd + 1, 5), drawkeyb(keybd + 1, 6))-(drawkeyb(keybd + 1, 7),
drawkeyb(keybd + 1, 8)), 8, BF
END IF
CASE CHR$(32)
Page 23
MSCORE3.BAS
GOTO 112
CASE CHR$(13)
GOTO 112
CASE CHR$(27)
LOCATE 28, 30
PRINT "Quit Y / N or Menu M"
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE "Y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "M": menu = 1: GOTO 200: CASE "m": menu = 1: GOTO 200
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
"
GOTO 111
END SELECT
LOOP
END SELECT
LOOP
112
IF keybd = now(1) + playy - 1 THEN
LOCATE 15, 55: PRINT "CORRECT"
answ = 1
SOUND 2000, .1
ELSE
LOCATE 17, 55: PRINT "INCORRECT"
SOUND 50, 1
LOCATE 19, 55: PRINT "Should be : "
aa = now(1) + playy - 1
LINE (drawkeyb(aa, 5), drawkeyb(aa, 6))-(drawkeyb(aa, 7), drawkeyb(aa, 8)), 12,
BF
answ = 0
WHILE INKEY$ = "": WEND
END IF
'right
MSCORE3.BAS
IF keybd = keybd(a) THEN
col = 11: GOTO 34
ELSE
col = 2
END IF
LOOP UNTIL a >= nos
34
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), col, BF
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, B
'draw clear box
IF colold = 2 THEN
IF drawkeyb(keybd - 1,
LINE (drawkeyb(keybd drawkeyb(keybd - 1, 8)),
ELSE
LINE (drawkeyb(keybd drawkeyb(keybd - 1, 8)),
END IF
ELSE
LINE (drawkeyb(keybd drawkeyb(keybd - 1, 8)),
END IF
9) = 1 THEN
1, 5), drawkeyb(keybd - 1, 6))-(drawkeyb(keybd - 1, 7),
7, BF
1, 5), drawkeyb(keybd - 1, 6))-(drawkeyb(keybd - 1, 7),
8, BF
1, 5), drawkeyb(keybd - 1, 6))-(drawkeyb(keybd - 1, 7),
11, B
''''
CASE CHR$(0) + "K": keybd = keybd - 1:
IF keybd = 0 THEN keybd = 1
'left
MSCORE3.BAS
'col = 12 change current marker into a light blue one.
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 11, BF
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, B
col = 12
'keybd(new) = keybd i.e put new value into array
'nos (number) of notes in array goes up by one
SELECT CASE nos
CASE IS = 1: keybd(1) = keybd: nos = 2
CASE IS = 2: keybd(2) = keybd: nos = 3
CASE IS = 3: keybd(3) = keybd: nos = 4
CASE IS = 4: keybd(4) = keybd: nos = 5
END SELECT
ELSE
END IF
'nos (number) of notes in array goes up by one
'
ELSE
'Marker already on spot
'col = 2 change current marker into a green one
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, BF
col = 2
'remove one note from array
'nos (number) of notes in array goes down by one
IF keybd = keybd(1) THEN oper = 1
IF keybd = keybd(2) THEN oper = 2
IF keybd = keybd(3) THEN oper = 3
IF keybd = keybd(4) THEN oper = 4
DO
keybd(oper) = keybd(oper + 1)
oper = oper + 1
LOOP UNTIL oper = nos
nos = nos - 1
END IF
CASE CHR$(13)
IF nos > 3 THEN GOTO 122
CASE CHR$(27)
LOCATE 28, 30
PRINT "Quit Y / N or Menu M"
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE "Y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "M": menu = 1: GOTO 200: CASE "m": menu = 1: GOTO 200
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
"
GOTO 121
END SELECT
LOOP
END SELECT
LOOP
122
''''
'
'
'
MSCORE3.BAS
else wrong, show correct chord with light red border.
correct = 0
FOR a = 1 TO 4
FOR B = 1 TO 4
IF now(B) > 0 THEN
ab = now(B) + playy - 1
ELSE
ab = 0
END IF
IF keybd(a) = ab THEN correct = correct + 1
NEXT B
NEXT a
IF correct = 4 THEN
LOCATE 15, 55: PRINT "CORRECT"
answ = 1
SOUND 2000, .1
ELSE
LOCATE 17, 55: PRINT "INCORRECT"
SOUND 50, 1
LOCATE 19, 55: PRINT "Should be : "
FOR a = 1 TO 4
IF now(a) > 0 THEN
ab = now(a) + playy - 1
ELSE
ab = 0
END IF
LINE (drawkeyb(ab, 5) - 1, drawkeyb(ab, 6))-(drawkeyb(ab, 7) + 1, drawkeyb(ab,
8)), 12, B
LINE (drawkeyb(ab, 5) - 2, drawkeyb(ab, 6) + 1)-(drawkeyb(ab, 7) + 2,
drawkeyb(ab, 8) - 1), 12, B
NEXT a
answ = 0
WHILE INKEY$ = "": WEND
END IF
"
"
MSCORE3.BAS
CASE CHR$(0) + "K": chodd1 = chodd1 - 1:
'left
IF chodd1 = 0 THEN chodd1 = 7
LOCATE 18, 55: PRINT chodd1s(chodd1) + chodd2s(chodd2) + chodd3s(chodd3) + "
"
"
"
CASE CHR$(32)
chodd3 = chodd3 + 1
IF chodd3 = 5 THEN chodd3 = 1
LOCATE 18, 55: PRINT chodd1s(chodd1) + chodd2s(chodd2) + chodd3s(chodd3) + "
"
CASE CHR$(13)
GOTO 132
CASE CHR$(27)
LOCATE 28, 30
PRINT "Quit Y / N or Menu M"
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE "Y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "M": menu = 1: GOTO 200: CASE "m": menu = 1: GOTO 200
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
"
GOTO 131
END SELECT
LOOP
END SELECT
LOOP
132
IF chodd1s(chodd1) + chodd2s(chodd2) + chodd3s(chodd3) = chods(1, now(5)) THEN
LOCATE 19, 55: PRINT "CORRECT"
answ = 1
SOUND 2000, .1
ELSE
LOCATE 19, 55: PRINT "INCORRECT"
SOUND 50, 1
LOCATE 21, 55: PRINT "Should be : "; chods(1, now(5))
answ = 0
WHILE INKEY$ = "": WEND
END IF
ELSEIF intype = 5 THEN
'*****************
mchod = 3
CIRCLE (371, mchod(mchod)), 10, 10
141
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "H": mchod = mchod - 1:
Page 28
'up
MSCORE3.BAS
IF mchod = 0 THEN mchod = 1
CIRCLE (371, mchod(mchod)), 10, 10
CIRCLE (371, mchod(mchod + 1)), 10, 0
CASE CHR$(0)
IF mchod = 6
CIRCLE (371,
CIRCLE (371,
'down
CASE CHR$(13)
GOTO 142
CASE CHR$(27)
LOCATE 28, 30
PRINT "Quit Y / N or Menu M"
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE "Y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "y": CLS : LOCATE 13, 28:
PRINT "Thankyou for using ScoreRead"
WHILE INKEY$ = "": WEND
STOP
CASE "M": menu = 1: GOTO 200: CASE "m": menu = 1: GOTO 200
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
"
GOTO 141
END SELECT
LOOP
END SELECT
LOOP
142
IF mchod = mchorig THEN
LOCATE 5, 50: PRINT "CORRECT"
answ = 1
ELSE
COLOR 12
LOCATE 5, 50: PRINT "INCORRECT"
SOUND 50, 1
LOCATE 7, 50: PRINT "Should be :"
CIRCLE (371, mchod(mchorig)), 10, 12
CIRCLE (371, mchod(mchorig)), 11, 12
answ = 0
WHILE INKEY$ = "": WEND
END IF
COLOR 15
END IF
'*****
200
END SUB
Page 29