SCREEN 12 ssz = 50: vsz = 8 tah = 20: tih = 12 vszin = 1: hszin = 10: szszin = 9 LOCATE 1, 1: PRINT "1:u 1/2:o 1/4:a 1/8:e 1/16:i" DIM hang(10, 100) DIM hossz(10, 100) DIM skala(-10 TO 10) FOR sor = 1 TO 9 FOR vonal = 1 TO 5 iksz = sor * ssz - vonal * vsz LINE (1, iksz)-(600, iksz), vszin NEXT vonal NEXT sor sor = 1: x = 1: y = 1 sore = sor: xe = x: ye = y xveg = 73: utsosor = 9 x1 = 18 y1 = ssz - vsz / 2 - 7 FOR i = -2 TO 2 FOR j = -2 TO 2 PSET (x1 + i, y1 + j), 15 - POINT(x1 + i, y1 + j) NEXT j NEXT i halad: aa: a$ = INKEY$ IF a$ = "" THEN GOTO aa mi = ASC(a$) SELECT CASE mi CASE IS = 9 'nagyugras IF x < xveg - 8 THEN xe = x: x = x + 8 GOTO egyutt CASE IS = 57 'sorfel IF sor > 1 THEN sore = sor: sor = sor - 1 GOTO egyutt CASE IS = 51 'sorle IF sor < utsosor THEN sore = sor: sor = sor + 1 GOTO egyutt CASE IS = 49 'sorvege xe = x: x = xveg GOTO egyutt CASE IS = 55 'soreleje xe = x: x = 1 GOTO egyutt CASE IS = 56 'fel ye = y IF y < 8 THEN y = y + 1 ELSE GOTO halad GOTO egyutt CASE IS = 52 'bal xe = x IF x > 1 THEN x = x - 1 ELSE GOTO halad GOTO egyutt CASE IS = 54 'jobb xe = x IF x < 73 THEN x = x + 1 ELSE GOTO halad GOTO egyutt CASE IS = 50 'le ye = y IF y > -2 THEN y = y - 1 ELSE GOTO halad GOTO egyutt '**************** H A N G O K ****************** CASE IS = 117 'egesz hang(sor, x) = y hossz(sor, x) = 1 CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin 'ss = sor: xx = x: yy = y: GOSUB atrajzol GOTO egyutt CASE IS = 111 'fel hang(sor, x) = skala(y) hossz(sor, x) = .5 CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin 'ss = sor: xx = x: yy = y: GOSUB atrajzol GOTO egyutt CASE IS = 97 'negyed hang(sor, x) = skala(y) hossz(sor, x) = .25 CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin PAINT (10 + x * 8, sor * ssz - y * vsz / 2 - 7), hszin, hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin ss = sor: xx = x: yy = y: GOSUB atrajzol GOTO egyutt CASE IS = 101 'nyolcad hang(sor, x) = skala(y) hossz(sor, x) = .125 CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin PAINT (10 + x * 8, sor * ssz - y * vsz / 2 - 7), hszin, hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah)-(6 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 + tah - tih / 2), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah)-(14 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 - tah + tih / 2), hszin ss = sor: xx = x: yy = y: GOSUB atrajzol GOTO egyutt CASE IS = 105 'tizenhatod hang(sor, x) = skala(y) hossz(sor, x) = .0625 CIRCLE (10 + x * 8, sor * ssz - y * vsz / 2 - 7), vsz / 2, hszin PAINT (10 + x * 8, sor * ssz - y * vsz / 2 - 7), hszin, hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7)-(6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah), hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7 + tah)-(6 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 + tah - tih / 2), hszin IF y > 3 THEN LINE (6 + x * 8, sor * ssz - y * vsz / 2 - 7 - vsz / 2 + tah)-(6 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - vsz / 2 - 7 + tah - tih / 2), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7)-(14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7 - tah)-(14 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 - 7 - tah + tih / 2), hszin IF y <= 3 THEN LINE (14 + x * 8, sor * ssz - y * vsz / 2 - 7 + vsz / 2 - tah)-(14 + x * 8 + tih / 3, sor * ssz - y * vsz / 2 + vsz / 2 - 7 - tah + tih / 2), hszin ss = sor: xx = x: yy = y: GOSUB atrajzol GOTO egyutt ' **************** S Z U N E T E K *************** CASE IS = 84 ' ures egesz hang(sor, x) = 0 hossz(sor, x) = 1 GOTO egyutt CASE IS = 79 ' ures fel hang(sor, x) = 0 hossz(sor, x) = .5 GOTO egyutt CASE IS = 65 ' ures negyed hang(sor, x) = 0 hossz(sor, x) = .25 GOTO egyutt CASE IS = 69 ' ures nyolcad hang(sor, x) = 0 hossz(sor, x) = .125 GOTO egyutt CASE IS = 73 ' ures tizenhatod hang(sor, x) = 0 hossz(sor, x) = .0625 GOTO egyutt END SELECT GOTO halad egyutt: ss = sore: xx = xe: yy = ye: GOSUB atrajzol 'iksz = 5 + xe * 8 'ipsz = sore * ssz - vsz * (INT(ye / 2) + 1) 'IF ye >= 0 THEN LINE (iksz, ipsz)-(iksz + 10, ipsz), vszin sore = sor: xe = x: ye = y ss = sor: xx = x: yy = y: GOSUB atrajzol GOTO halad atrajzol: x1 = 10 + xx * 8 y1 = ss * ssz - yy * vsz / 2 - 7 FOR i = -2 TO 2 FOR j = -2 TO 2 PSET (x1 + i, y1 + j), 15 - POINT(x1 + i, y1 + j) NEXT j NEXT i RETURN