Sei sulla pagina 1di 29

MSCORE3.

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)

' playy = note of scale start from c


' egbdf = 1, 0 Prints out letters next to score
' outype = 1, 2, 3, 4 Output is
diatonic notes,
'
chromatic notes,
'
diatonic chords,
'
other chords
' intype = 1, 2, 3, 4, 5 User input is
'
'
'
'

Guess
Guess
Guess
Guess
Guess

note.
note on keyboard/ scale shown
note on keyboard/ no scale
chord
type of chord

DIM SHARED keys(8) AS STRING


' String of keys available
DIM SHARED keyys(2, 48) AS STRING ' Name of note, symbol before note on score
DIM SHARED chods(3, 22) AS STRING ' 1 Name of chord for chosen key
' 2 = Description of chord (e.g dominant 7)
' 3 = Description continued
DIM
DIM
DIM
DIM
DIM
DIM
DIM
DIM

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)

DIM SHARED whscal(60) AS INTEGER

'
'
'
'
'
'
'
'
'
'
'

4 notes in chord + chord no.


Location of note on screen
Chord in relation to C, in C (no. note.)
Chord in relation to D, in Key.
Note nos. in each scale + start note
Location of sharps/ flats in key
Position of root of chord, in KEY
2 corners of box for each key,col 1=w 2=b
bottom left x, bottom left y, top right x
Starts from Bass C ends on treble E
0 or 1 value if note is in scale or not

'
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

'if answer is wrong then do ggo again

CLS
LOCATE 10, 25
PRINT "You have now completed"
LOCATE 12, 32
PRINT "Level "; levell
WHILE INKEY$ = "": WEND
NEXT levell
'

if user has completed all levels, give time of completion

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
'

Choose key to start from

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

CASE CHR$(0) + "P": keyy = keyy - 1


IF keyy = 0 THEN keyy = 8
LOCATE 14, 30
PRINT keys(keyy); " "

'down

= keyy - 1

CASE CHR$(0) + "M": keyy = keyy + 1


IF keyy = 9 THEN keyy = 1
LOCATE 14, 30
PRINT keys(keyy); " "

'right = column + 1

CASE CHR$(0) + "K": keyy = keyy - 1


IF keyy = 0 THEN keyy = 8
LOCATE 14, 30
PRINT keys(keyy); " "

'left

= column - 1

CASE CHR$(32): GOTO 10


CASE CHR$(13): GOTO 10
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": GOTO 5: CASE "m": GOTO 5
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
GOTO 5
END SELECT

"
Page 3

MSCORE3.BAS
LOOP
END SELECT
LOOP
10
'

Choose level to start from

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

CASE CHR$(0) + "P": slevel = slevel - 1


IF slevel = 0 THEN slevel = 16
LOCATE 14, 29
PRINT slevel; " "

'down

= keyy - 1

CASE CHR$(0) + "M": slevel = slevel + 1


IF slevel = 17 THEN slevel = 1
LOCATE 14, 29
PRINT slevel; " "

'right = column + 1

CASE CHR$(0) + "K": slevel = slevel - 1


IF slevel = 0 THEN slevel = 16
LOCATE 14, 29
PRINT slevel; " "

'left

= column - 1

CASE CHR$(32): GOTO 12


CASE CHR$(13): GOTO 12
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": GOTO 5: CASE "m": GOTO 5
CASE ""
CASE ELSE: LOCATE 28, 30: PRINT "
GOTO 11
END SELECT
LOOP
END SELECT

"

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) =

= "Key of Bb or Gm": playy = 4


-1
6
24:
sharp(2, 3) = 1
10:
sharp(2, 4) = 1
21:
sharp(2, 5) = 2
7:
sharp(2, 6) = 2

CASE 3: keyy$
sharp(1, 1) =
sharp(1, 2) =
sharp(1, 3) =
sharp(1, 4) =

= "Key of F or Dm": playy = 4


-1
4
24:
sharp(2, 3) = 1
10:
sharp(2, 4) = 1

CASE 4: keyy$ = "Key of C or Am": playy = 5


sharp(1, 1) = 0
sharp(1, 2) = 0
CASE 5: keyy$
sharp(1, 1) =
sharp(1, 2) =
sharp(1, 3) =

= "Key of G or Em": playy = 5


1
4
20:
sharp(2, 3) = 1
Page 5

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) =

= "Key of D or Bm": playy = 5


1
6
20:
sharp(2, 3) = 1
6:
sharp(2, 4) = 1
23:
sharp(2, 5) = 2
9:
sharp(2, 6) = 2

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) =

= "Key of A or F#m": playy = 5


1
8
20:
sharp(2, 3) = 1
6:
sharp(2, 4) = 1
23:
sharp(2, 5) = 2
9:
sharp(2, 6) = 2
19:
sharp(2, 7) = 3
5:
sharp(2, 8) = 3

CASE 8: keyy$ = "Key of E or C#m": playy = 5


sharp(1, 1) = 1
sharp(1, 2) = 10
sharp(1, 3) = 20:
sharp(2, 3) = 1
sharp(1, 4) = 6:
sharp(2, 4) = 1
sharp(1, 5) = 23:
sharp(2, 5) = 2
sharp(1, 6) = 9:
sharp(2, 6) = 2
sharp(1, 7) = 19:
sharp(2, 7) = 3
sharp(1, 8) = 5:
sharp(2, 8) = 3
sharp(1, 9) = 22:
sharp(2, 9) = 4
sharp(1, 10) = 8:
sharp(2, 10) = 4

END SELECT
'********************************************************************
'***** C H R O M A T I C
L A Y O U T
*********
'********************************************************************

SELECT CASE keyy


'
Name of note, symbol before note on score, location on screen
'--------------------------'-----K E Y
O F
Eb ----'--------------------------CASE 1
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) = "Eb": keyys(2, 1) = "": keyya(1) = 28


2) = "E": keyys(2, 2) = "h": keyya(2) = 28
3) = "F": keyys(2, 3) = "": keyya(3) = 27
4) = "F#": keyys(2, 4) = "#": keyya(4) = 27
5) = "G": keyys(2, 5) = "": keyya(5) = 26
6) = "Ab": keyys(2, 6) = "": keyya(6) = 25
7) = "A": keyys(2, 7) = "h": keyya(7) = 25
8) = "Bb": keyys(2, 8) = "": keyya(8) = 24
9) = "B": keyys(2, 9) = "h": keyya(9) = 24
10) = "C": keyys(2, 10) = "": keyya(10) = 23
11) = "Db": keyys(2, 11) = "b": keyya(11) = 22
12) = "D": keyys(2, 12) = "": keyya(12) = 22

'--------------------------'-----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,

1) = "Eb": keyys(2, 1) = "": keyya(1) = 28


2) = "E": keyys(2, 2) = "h": keyya(2) = 28
3) = "F": keyys(2, 3) = "": keyya(3) = 27
4) = "F#": keyys(2, 4) = "#": keyya(4) = 27
5) = "G": keyys(2, 5) = "": keyya(5) = 26
6) = "Ab": keyys(2, 6) = "b": keyya(6) = 25
7) = "A": keyys(2, 7) = "": keyya(7) = 25
8) = "Bb": keyys(2, 8) = "": keyya(8) = 24
9) = "B": keyys(2, 9) = "h": keyya(9) = 24
10) = "C": keyys(2, 10) = "": keyya(10) = 23
11) = "C#": keyys(2, 11) = "#": keyya(11) = 23
12) = "D": keyys(2, 12) = "": keyya(12) = 22

'--------------------------'-----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,

1) = "Eb": keyys(2, 1) = "b": keyya(1) = 28


2) = "E": keyys(2, 2) = "": keyya(2) = 28
3) = "F": keyys(2, 3) = "": keyya(3) = 27
4) = "F#": keyys(2, 4) = "#": keyya(4) = 27
5) = "G": keyys(2, 5) = "": keyya(5) = 26
6) = "G#": keyys(2, 6) = "#": keyya(6) = 26
7) = "A": keyys(2, 7) = "": keyya(7) = 25
8) = "Bb": keyys(2, 8) = "": keyya(8) = 24
9) = "B": keyys(2, 9) = "h": keyya(9) = 24
10) = "C": keyys(2, 10) = "": keyya(10) = 23
11) = "C#": keyys(2, 11) = "#": keyya(11) = 23
12) = "D": keyys(2, 12) = "": keyya(12) = 22

'--------------------------'-----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,

1) = "E": keyys(2, 1) = "": keyya(1) = 28


2) = "F": keyys(2, 2) = "": keyya(2) = 27
3) = "F#": keyys(2, 3) = "#": keyya(3) = 27
4) = "G": keyys(2, 4) = "": keyya(4) = 26
5) = "G#": keyys(2, 5) = "#": keyya(5) = 26
6) = "A": keyys(2, 6) = "": keyya(6) = 25
7) = "Bb": keyys(2, 7) = "b": keyya(7) = 24
8) = "B": keyys(2, 8) = "": keyya(8) = 24
9) = "C": keyys(2, 9) = "": keyya(9) = 23
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
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)

=
=
=
=
=
=
=
=
=

"E": keyys(2, 1) = "": keyya(1) = 28


"F": keyys(2, 2) = "h": keyya(2) = 27
"F#": keyys(2, 3) = "": keyya(3) = 27
"G": keyys(2, 4) = "": keyya(4) = 26
"G#": keyys(2, 5) = "#": keyya(5) = 26
"A": keyys(2, 6) = "": keyya(6) = 25
"A#": keyys(2, 7) = "#": keyya(7) = 25
"B": keyys(2, 8) = "": keyya(8) = 24
"C": keyys(2, 9) = "": keyya(9) = 23
Page 7

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,

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) = "": 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) = "C": keyys(2, 9) = "h": keyya(9) = 23
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
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,

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) = "FX": keyys(2, 4) = "X": keyya(4) = 27
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) = "h": keyya(11) = 22
12) = "D#": keyys(2, 12) = "": keyya(12) = 22

END SELECT
'

location of note on screen for output

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,

1) = keyys(1, chodd(1, rootkey(1)))


2) = keyys(1, chodd(2, rootkey(2))) + "m"
3) = keyys(1, chodd(3, rootkey(3))) + "m"
4) = keyys(1, chodd(4, rootkey(4)))
5) = keyys(1, chodd(5, rootkey(5)))
6) = keyys(1, chodd(6, rootkey(6))) + "m"
7) = keyys(1, chodd(7, rootkey(7))) + "dim"
8) = keyys(1, chodd(8, rootkey(8)))
9) = keyys(1, chodd(9, rootkey(9))) + "7"
10) = keyys(1, chodd(10, rootkey(10))) + "7"
11) = keyys(1, chodd(11, rootkey(11))) + "dim"
12) = keyys(1, chodd(12, rootkey(12))) + "m"
13) = keyys(1, chodd(13, rootkey(13)))
14) = keyys(1, chodd(14, rootkey(14)))
15) = keyys(1, chodd(15, rootkey(15))) + "7"
16) = keyys(1, chodd(16, rootkey(16))) + "7"
17) = keyys(1, chodd(17, rootkey(17))) + "m"
18) = keyys(1, chodd(18, rootkey(18)))
19) = keyys(1, chodd(19, rootkey(19))) + "7"
20) = keyys(1, chodd(20, rootkey(20))) + "dim"
21) = keyys(1, chodd(21, rootkey(21)))
22) = keyys(1, chodd(22, rootkey(22))) + "7"

chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,
chods(2,

1)
2)
3)
4)
5)
6)
7)

=
=
=
=
=
=
=

"Tonic for major scale"


"Subdominant for minor scale"
"Minor dominant for":
"Subdominant for major scale"
"Dominant for major scale"
"Tonic for minor scale"
"Diminished"
Page 11

chods(3, 3) = "minor scale"

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 ":

chods(3, 8) = "minor scale"


chods(3, 9) = "minor scale"
chods(3, 10) = "major scale"
chods(3,
chods(3,
chods(3,
chods(3,
chods(3,
chods(3,
chods(3,
chods(3,

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"

chods(3, 21) = "in dom. key"


chods(3, 22) = "in dom. key"

Draw Keyboard - array

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

Draw scale on keyboard array.

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)

'draw extra lines if needed.


'position (1-5) and chord no. for not correct chord

'
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

parameters linking height position as function of "LOCATE"

'
Print the key things are in
LOCATE 2, 50
PRINT keyy$
'

select random note/ notes and place them in array now(5)

SELECT CASE outype


CASE 1
now(1) = scalle(FIX(RND * 28) + 1)
CASE 2
now(1) = FIX(RND * 48) + 1
CASE 3
now(5) = FIX(RND * 7) + 1
FOR a = 1 TO 3
now(a) = chodd(now(5), a) + 12 * FIX(RND * 4)
NEXT a
CASE 4
now(5) = FIX(RND * 22) + 1
SELECT CASE chodd(now(5), 4)
CASE 0
FOR a = 1 TO 3
now(a) = chodd(now(5), a) + 12 * FIX(RND * 4)
NEXT a
CASE ELSE
FOR a = 1 TO 4
now(a) = chodd(now(5), a) + 12 * FIX(RND * 4)
NEXT a
END SELECT
END SELECT

'

Draw the lines + note

'Draw additional lines ? linn(4)


FOR a = 1 TO 4
linn(a) = 0
NEXT a
FOR a = 1 TO 4
SELECT CASE keyya(now(a))
CASE 1 TO 2:
linn(4) =
CASE 3 TO 4:
linn(3) =
CASE 16:
linn(2) =
CASE 28:
linn(1) =
CASE ELSE
END SELECT
NEXT a

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

'

Draw Klucz wiolinowy

CIRCLE (60, 177), 26, 7, 0, 3.5


CIRCLE (48, 177), 38, 7, 2.6, 0
LINE (16, 156)-(61, 95), 7
CIRCLE (48, 87), 15, 7, 5.8, 0
CIRCLE (48, 87), 15, 7, 0, 3.4
LINE (33, 92)-(63, 226), 7
CIRCLE (48, 230), 15, 7, 3.14, 0
CIRCLE (48, 230), 15, 7, 0, .2
'

Draw Klucz basowy

CIRCLE (48, 311), 32, 7, 0, 3.14


CIRCLE (15, 311), 65, 7, 4.9, 0
FOR a = 1 TO 4 STEP .5
CIRCLE (87, 295), a, 7
CIRCLE (87, 327), a, 7
NEXT a
'

Put sharps or flats in the key signature

SELECT CASE sharp(1, 1)


CASE IS = 1
FOR a = 3 TO sharp(1, 2)
y = m * sharp(1, a) + C
x = m * (2 * sharp(2, a) + 4.5)
LINE (x - 8, y - 32)-(x - 8, y + 40), 7
LINE (x + 8, y - 40)-(x + 8, y + 32), 7
LINE (x - 16, y - 8)-(x + 16, y - 24), 7
LINE (x - 16, y + 24)-(x + 16, y + 8), 7
NEXT a
CASE IS = -1
FOR a = 3 TO sharp(1, 2)
y = m * sharp(1, a) + C
x = m * (2 * sharp(2, a) + 4.5)
LINE (x - 8, y - 48)-(x - 8, y + 16), 7
CIRCLE (x - 8, y), 16, 7, 0, 1.57
CIRCLE (x - 8, y), 16, 7, 4.71, 0
NEXT a
CASE ELSE
END SELECT
'
Prints out letters next to score if egbdf = 1
COLOR 3
IF egbdf = 1 THEN
FOR a = 6 TO 15 STEP 2
LOCATE a, 39
PRINT keyys(1, scalle(29 - a))
NEXT a
Page 14

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
'

Draw note/ notes on screen from array now(5)

SELECT CASE outype


CASE 1
'*****
h = m * keyya(now(1)) + C
FOR a = 1 TO 14
CIRCLE (270, h), a
NEXT a
CASE 2
'*****
h = m * keyya(now(1)) + C
FOR a = 1 TO 14
CIRCLE (270, h), a
NEXT a
SELECT CASE keyys(2, now(1))
CASE IS = "#"
y = m * keyya(now(1)) + 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(1)) + 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 =
y = m *
x = 240
LINE (x
LINE (x
LINE (x
LINE (x

"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
'

Print out the multiple choice selection for intype = 5

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

PRINT mchorig; " "; chods(2, now(5))


PRINT chods(3, now(5))
46: PRINT other(1, a); " "; chods(2, other(2, a))
50: PRINT chods(3, other(2, a))

'draw white keys first black keys next

IF a = 1 AND drawkeyb(B, 9) = 1 THEN


LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 7, BF
LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 0, B
IF whscal(B) = 1 THEN
LINE (drawkeyb(B, 1) + 1, drawkeyb(B, 2) - 1)-(drawkeyb(B, 3) - 1, drawkeyb(B,
4) + 1), 15, B
END IF
END IF
IF a = 2 AND drawkeyb(B, 9) = 2 THEN
LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 8, BF
LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 0, B
IF whscal(B) = 1 THEN
LINE (drawkeyb(B, 1) + 1, drawkeyb(B, 2) - 1)-(drawkeyb(B, 3) - 1, drawkeyb(B,
4) + 1), 0, B
END IF
END IF
NEXT B
NEXT a
END IF
IF intype = 3 THEN
FOR a = 1 TO 2
FOR B = 1 TO 53

'draw white keys first black keys next

IF a = 1 AND drawkeyb(B, 9) = 1 THEN


LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 7, BF
LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 0, B
END IF
IF a = 2 AND drawkeyb(B, 9) = 2 THEN
LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 8, BF
LINE (drawkeyb(B, 1), drawkeyb(B, 2))-(drawkeyb(B, 3), drawkeyb(B, 4)), 0, B
END IF
NEXT B
NEXT a
END IF
IF startt = 1 THEN
COLOR 10
SELECT CASE levell
CASE 1: box = 2
LINE (340, 270)-(630, 35), 10, B
Page 18

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

DIM keybd(5) AS INTEGER


DIM mchod(5) AS INTEGER
notte1s(1)
notte1s(2)
notte1s(3)
notte1s(4)
notte1s(5)
notte1s(6)
notte1s(7)

=
=
=
=
=
=
=

"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

ELSEIF (intype = 2 OR intype = 3) AND (outype = 3 OR outype = 4) THEN


'*****************
keybd = 25
nos = 1
LINE (drawkeyb(keybd, 5), drawkeyb(keybd, 6))-(drawkeyb(keybd, 7),
drawkeyb(keybd, 8)), 2, BF
121
DO
kbd$ = INKEY$
SELECT CASE kbd$
''''
CASE CHR$(0) + "M": keybd = keybd + 1:
IF keybd = 54 THEN keybd = 53
'draw new box
a = 0
colold = col
col = 2
DO
a = a + 1
Page 24

'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

'draw new box


a = 0
colold = col
col = 2
DO
a = a + 1
IF keybd = keybd(a) THEN
col = 11: GOTO 35
ELSE
col = 2
END IF
LOOP UNTIL a >= nos
35
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, 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
ELSE
LINE (drawkeyb(keybd + 1, 5), drawkeyb(keybd + 1, 6))-(drawkeyb(keybd + 1, 7),
drawkeyb(keybd + 1, 8)), 11, B
END IF
CASE CHR$(32)
''''
IF (col = 2) THEN
IF (nos < 5) THEN

'No marker on spot, array not full


Page 25

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
''''
'
'

Compare input array keybd(4) with output array now(4) + playy


If correct, print correct
Page 26

'

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

ELSEIF intype = 4 THEN


'*****************
chodd1 = 1
chodd2 = 2
chodd3 = 1
LOCATE 18, 55: PRINT chodd1s(chodd1) + chodd2s(chodd2) + chodd3s(chodd3) + "
131
DO
kbd$ = INKEY$
SELECT CASE kbd$
CASE CHR$(0) + "M": chodd1 = chodd1 + 1:
'right
IF chodd1 = 8 THEN chodd1 = 1
LOCATE 18, 55: PRINT chodd1s(chodd1) + chodd2s(chodd2) + chodd3s(chodd3) + "
Page 27

"

"

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$(0) + "H": chodd2 = chodd2 + 1:


'up
IF chodd2 = 5 THEN chodd2 = 4
LOCATE 18, 55: PRINT chodd1s(chodd1) + chodd2s(chodd2) + chodd3s(chodd3) + "

"

CASE CHR$(0) + "P": chodd2 = chodd2 - 1:


'down
IF chodd2 = 0 THEN chodd2 = 1
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,

+ "P": mchod = mchod + 1:


THEN mchod = 5
mchod(mchod)), 10, 10
mchod(mchod - 1)), 10, 0

'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

Potrebbero piacerti anche