Created
September 1, 2020 18:03
-
-
Save Nicholas-Westby/b51faa079d20c479cd14fb53ebf88767 to your computer and use it in GitHub Desktop.
A Tetris clone I made in high school in QuickBasic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DECLARE SUB AddLines (AddAmount AS INTEGER) | |
DECLARE SUB AddScore (AddAmount AS INTEGER) | |
DECLARE SUB MyColor (TheColor AS INTEGER) | |
DECLARE SUB MyLocate (x AS INTEGER, y AS INTEGER) | |
DECLARE SUB MyPrint (PrintString AS STRING) | |
DECLARE SUB PrintMain (Variable1 AS STRING, Variable2 AS STRING, FunctionNum AS INTEGER) | |
DECLARE SUB CheckEraseLines () | |
DECLARE SUB NewShape () | |
DECLARE SUB PatchScreen () | |
DECLARE FUNCTION DirFunction! (MaxCount!) | |
DECLARE SUB Initialize () | |
DECLARE SUB DrawShape () | |
DECLARE SUB MakeBlock (a!, B!, Num AS INTEGER) | |
DECLARE SUB xyBlock (Left!, Top!, Num AS INTEGER) | |
DECLARE SUB MakeStartScreen (Num!) | |
DECLARE SUB DrawObject (Left!, Top!, ObjectNum!) | |
DIM SHARED CurrentShape AS INTEGER | |
DIM SHARED CurrentDirection AS INTEGER | |
DIM SHARED ScreenBlocks(1 TO 16, 1 TO 21) AS INTEGER | |
DIM SHARED Block(1 TO 7, 1 TO 4, 1 TO 4, 1 TO 4) AS INTEGER | |
DIM SHARED Col AS INTEGER | |
DIM SHARED Row AS INTEGER | |
DIM SHARED Score AS INTEGER | |
DIM SHARED Lines AS INTEGER | |
DIM k AS STRING | |
GOSUB ObtainSpeed | |
Initialize | |
Main: | |
GOSUB CheckFunctions | |
GOTO Main | |
CheckFunctions: | |
Speed = 2 + Lines / 4 | |
FunctionNum = DirFunction(LoopSpeed / Speed) | |
IF FunctionNum = 0 THEN GOTO Quit | |
IF FunctionNum = 1 THEN | |
FOR a = 1 TO 4 | |
FOR B = 1 TO 4 | |
c = Block(CurrentShape, CurrentDirection, a, B) | |
IF c <> 0 THEN | |
ScreenBlocks(Col + a - 1, Row + B - 1) = c | |
END IF | |
NEXT B | |
NEXT a | |
SCREEN , , 2, 0 | |
DrawShape | |
PCOPY 2, 1 | |
PCOPY 1, 0 | |
CheckEraseLines | |
NewShape | |
SCREEN , , 0, 0 | |
DrawShape | |
FOR B = 1 TO 4 | |
FOR a = 1 TO 4 | |
c = Block(CurrentShape, CurrentDirection, a, B) | |
IF B + Row - 1 >= 1 THEN | |
d = ScreenBlocks(a + Col - 1, B + Row - 1) | |
IF c <> 0 AND d <> 0 THEN GOTO YouLost | |
END IF | |
NEXT a | |
NEXT B | |
END IF | |
IF FunctionNum = 2 THEN | |
PatchScreen | |
Col = Col + 1 | |
SCREEN , , 1, 0 | |
DrawShape | |
PCOPY 1, 0 | |
END IF | |
IF FunctionNum = 3 THEN | |
PatchScreen | |
Row = Row + 1 | |
SCREEN , , 1, 0 | |
DrawShape | |
PCOPY 1, 0 | |
END IF | |
IF FunctionNum = 4 THEN | |
PatchScreen | |
Col = Col - 1 | |
SCREEN , , 1, 0 | |
DrawShape | |
PCOPY 1, 0 | |
END IF | |
IF FunctionNum = 5 THEN | |
PatchScreen | |
CurrentDirection = CurrentDirection + 1 | |
IF CurrentDirection > 4 THEN CurrentDirection = 1 | |
SCREEN , , 1, 0 | |
DrawShape | |
PCOPY 1, 0 | |
END IF | |
IF FunctionNum = 6 THEN | |
PatchScreen | |
CurrentDirection = CurrentDirection - 1 | |
IF CurrentDirection < 1 THEN CurrentDirection = 4 | |
SCREEN , , 1, 0 | |
DrawShape | |
PCOPY 1, 0 | |
END IF | |
IF FunctionNum = 7 THEN | |
DO | |
FunctionNum = DirFunction(0) | |
IF FunctionNum = 3 THEN | |
PatchScreen | |
Row = Row + 1 | |
SCREEN , , 1, 0 | |
DrawShape | |
PCOPY 1, 0 | |
END IF | |
LOOP UNTIL FunctionNum = 1 | |
FOR a = 1 TO 4 | |
FOR B = 1 TO 4 | |
c = Block(CurrentShape, CurrentDirection, a, B) | |
IF c <> 0 THEN | |
ScreenBlocks(Col + a - 1, Row + B - 1) = c | |
END IF | |
NEXT B | |
NEXT a | |
SCREEN , , 2, 0 | |
DrawShape | |
PCOPY 2, 1 | |
PCOPY 1, 0 | |
CheckEraseLines | |
NewShape | |
SCREEN , , 0, 0 | |
DrawShape | |
END IF | |
RETURN | |
YouLost: | |
GOTO Quit | |
Quit: | |
END | |
ObtainSpeed: | |
IF a = 1 THEN a = 2 | |
IF a = 0 THEN | |
LOCATE 12, 33: PRINT "Loading....." | |
a = 1 | |
ON TIMER(2) GOSUB ObtainSpeed | |
TIMER ON | |
END IF | |
DO UNTIL a = 2 | |
k = INKEY$ | |
IF NOT k = "" THEN | |
LoopSpeed = 0 | |
a = 0 | |
PRINT "Don't press any keys!!!!!!!!!!!!!!!!!!!!!!!!" | |
GOTO ObtainSpeed | |
END IF | |
LoopSpeed = LoopSpeed + .001 | |
LOOP | |
TIMER OFF | |
RETURN | |
SUB AddLines (AddAmount AS INTEGER) | |
Lines = Lines + AddAmount | |
DIM Image(0 TO 100) | |
SCREEN , , 3, 0 | |
GET (263, 68)-STEP(47, 7), Image | |
SCREEN , , 2, 0 | |
PUT (263, 68), Image, PSET | |
MyLocate 263, 68 | |
MyPrint LTRIM$(RTRIM$(STR$(Lines))) | |
END SUB | |
SUB AddScore (AddAmount AS INTEGER) | |
Score = Score + AddAmount | |
DIM Image(0 TO 100) | |
SCREEN , , 3, 0 | |
GET (263, 38)-STEP(47, 7), Image | |
SCREEN , , 2, 0 | |
PUT (263, 38), Image, PSET | |
MyLocate 263, 38 | |
MyPrint LTRIM$(RTRIM$(STR$(Score))) | |
END SUB | |
SUB Captions | |
'Screen 0 = Visual Screen. | |
'Screen 1 = Construction Screen. | |
'Screen 2 = Screen with blocks. | |
'Screens 3 - 7 = Background Screens. | |
'The left of the game area is 40. | |
'The top of the game area is 27. | |
'There are 16 columns that are 10 dots wide. | |
'There are 21 rows that are 8 dots tall. | |
'Blocks: | |
'1 - L. | |
'2 - Backward L. | |
'3 - Square. | |
'4 - T. | |
'5 - Right slope zig zag. | |
'6 - Left slope zig zag. | |
'7 - Line. | |
'For CurrentDirection: 1 = Up, 2 = Right, 3 = Down, 4 = Left. | |
END SUB | |
SUB CheckEraseLines | |
DIM FullLine(1 TO 4) AS INTEGER | |
TopLine = 21 | |
Count = 0 | |
FOR B = 1 TO 21 | |
Delete = 1 | |
FOR a = 1 TO 16 | |
c = ScreenBlocks(a, B) | |
IF c = 0 THEN Delete = 0 | |
IF c <> 0 AND TopLine >= B THEN TopLine = B | |
NEXT a | |
IF Delete = 1 THEN | |
Count = Count + 1 | |
FullLine(Count) = B | |
END IF | |
NEXT B | |
IF Count > 0 THEN | |
FOR c = 1 TO Count | |
d = FullLine(c) | |
FOR B = d TO 2 STEP -1 | |
FOR a = 1 TO 16 | |
ScreenBlocks(a, B) = ScreenBlocks(a, B - 1) | |
NEXT a | |
NEXT B | |
NEXT c | |
FOR c = 0 TO Count - 1 | |
B = TopLine + c | |
FOR a = 1 TO 16 | |
ScreenBlocks(a, B) = 0 | |
NEXT a | |
NEXT c | |
PCOPY 3, 2 | |
FOR B = 21 TO TopLine STEP -1 | |
FOR a = 1 TO 16 | |
c = ScreenBlocks(a, B) | |
IF c <> 0 THEN MakeBlock a, B, INT(c) | |
NEXT a | |
NEXT B | |
AddScore INT(Count ^ 2 * 10) | |
AddLines INT(Count) | |
PCOPY 2, 1 | |
PCOPY 1, 0 | |
END IF | |
END SUB | |
FUNCTION DirFunction (MaxCount) | |
DIM k AS STRING | |
STATIC Count AS DOUBLE | |
Num = -1 | |
DO UNTIL k <> "" OR Count >= MaxCount | |
k = INKEY$ | |
Count = Count + .001 | |
LOOP | |
IF Count >= MaxCount THEN | |
Count = 0 | |
Num = 3 | |
END IF | |
IF k = " " THEN Num = 7 | |
IF k = CHR$(0) + "M" THEN | |
TestCol = Col + 1 | |
Num = 2 | |
END IF | |
IF k = CHR$(0) + "P" THEN | |
Num = 3 | |
END IF | |
IF k = CHR$(0) + "K" THEN | |
TestCol = Col - 1 | |
Num = 4 | |
END IF | |
IF UCASE$(k) = "F" THEN | |
TestDirection = CurrentDirection + 1 | |
IF TestDirection > 4 THEN TestDirection = 1 | |
Num = 5 | |
END IF | |
IF UCASE$(k) = "S" THEN | |
TestDirection = CurrentDirection - 1 | |
IF TestDirection < 1 THEN TestDirection = 4 | |
Num = 6 | |
END IF | |
IF k = CHR$(27) THEN Num = 0 | |
IF Num = 2 OR Num = 4 THEN | |
FOR a = 1 TO 4 | |
FOR B = 1 TO 4 | |
c = Block(CurrentShape, CurrentDirection, a, B) | |
IF c <> 0 THEN | |
d = TestCol + a - 1 | |
IF d < 1 OR d > 16 THEN Num = -1 | |
IF Num <> -1 THEN IF ScreenBlocks(d, Row + B - 1) <> 0 THEN Num = -1 | |
END IF | |
NEXT B | |
NEXT a | |
END IF | |
IF Num = 3 THEN | |
FOR a = 1 TO 4 | |
FOR B = 1 TO 4 | |
c = Block(CurrentShape, CurrentDirection, a, B) | |
IF c <> 0 THEN | |
d = Col + a - 1 | |
e = Row + B | |
IF e > 21 THEN Num = 1 | |
IF Num = 3 THEN | |
f = ScreenBlocks(d, e) | |
IF f <> 0 THEN Num = 1 | |
END IF | |
END IF | |
NEXT B | |
NEXT a | |
END IF | |
IF Num = 5 OR Num = 6 THEN | |
FOR a = 1 TO 4 | |
FOR B = 1 TO 4 | |
c = Block(CurrentShape, TestDirection, a, B) | |
IF c <> 0 THEN | |
d = Col + a - 1 | |
e = Row + B - 1 | |
IF d < 1 OR d > 16 OR e < 1 OR e > 21 THEN Num = -1 | |
IF Num = 5 OR Num = 6 THEN | |
IF ScreenBlocks(d, e) <> 0 THEN Num = -1 | |
END IF | |
END IF | |
NEXT B | |
NEXT a | |
END IF | |
DO | |
k = INKEY$ | |
LOOP UNTIL k = "" | |
DirFunction = Num | |
END FUNCTION | |
SUB DrawShape | |
FOR a = 1 TO 4 | |
FOR B = 1 TO 4 | |
IF Block(CurrentShape, CurrentDirection, a, B) <> 0 THEN | |
MakeBlock Col + a - 1, Row + B - 1, Block(CurrentShape, CurrentDirection, a, B) | |
END IF | |
NEXT B | |
NEXT a | |
END SUB | |
SUB Initialize | |
RANDOMIZE TIMER | |
Block(1, 1, 1, 3) = 2 | |
Block(1, 1, 1, 2) = 2 | |
Block(1, 1, 2, 2) = 2 | |
Block(1, 1, 3, 2) = 2 | |
Block(1, 2, 2, 1) = 2 | |
Block(1, 2, 3, 1) = 2 | |
Block(1, 2, 3, 2) = 2 | |
Block(1, 2, 3, 3) = 2 | |
Block(1, 3, 1, 3) = 2 | |
Block(1, 3, 2, 3) = 2 | |
Block(1, 3, 3, 3) = 2 | |
Block(1, 3, 3, 2) = 2 | |
Block(1, 4, 2, 1) = 2 | |
Block(1, 4, 2, 2) = 2 | |
Block(1, 4, 2, 3) = 2 | |
Block(1, 4, 3, 3) = 2 | |
Block(2, 1, 1, 2) = 2 | |
Block(2, 1, 2, 2) = 2 | |
Block(2, 1, 3, 2) = 2 | |
Block(2, 2, 1, 3) = 2 | |
Block(2, 2, 2, 3) = 2 | |
Block(2, 2, 2, 2) = 2 | |
Block(2, 2, 2, 1) = 2 | |
Block(2, 1, 3, 3) = 2 | |
Block(2, 3, 1, 2) = 2 | |
Block(2, 3, 1, 3) = 2 | |
Block(2, 3, 2, 3) = 2 | |
Block(2, 3, 3, 3) = 2 | |
Block(2, 4, 2, 1) = 2 | |
Block(2, 4, 1, 1) = 2 | |
Block(2, 4, 1, 2) = 2 | |
Block(2, 4, 1, 3) = 2 | |
Block(3, 1, 1, 1) = 2 | |
Block(3, 1, 2, 1) = 2 | |
Block(3, 1, 1, 2) = 2 | |
Block(3, 1, 2, 2) = 2 | |
Block(3, 2, 1, 1) = 2 | |
Block(3, 2, 2, 1) = 2 | |
Block(3, 2, 1, 2) = 2 | |
Block(3, 2, 2, 2) = 2 | |
Block(3, 3, 1, 1) = 2 | |
Block(3, 3, 2, 1) = 2 | |
Block(3, 3, 1, 2) = 2 | |
Block(3, 3, 2, 2) = 2 | |
Block(3, 4, 1, 1) = 2 | |
Block(3, 4, 2, 1) = 2 | |
Block(3, 4, 1, 2) = 2 | |
Block(3, 4, 2, 2) = 2 | |
Block(4, 1, 1, 1) = 2 | |
Block(4, 1, 2, 1) = 2 | |
Block(4, 1, 3, 1) = 2 | |
Block(4, 1, 2, 2) = 2 | |
Block(4, 2, 3, 1) = 2 | |
Block(4, 2, 3, 2) = 2 | |
Block(4, 2, 3, 3) = 2 | |
Block(4, 2, 2, 2) = 2 | |
Block(4, 3, 1, 3) = 2 | |
Block(4, 3, 2, 3) = 2 | |
Block(4, 3, 3, 3) = 2 | |
Block(4, 3, 2, 2) = 2 | |
Block(4, 4, 1, 1) = 2 | |
Block(4, 4, 1, 2) = 2 | |
Block(4, 4, 1, 3) = 2 | |
Block(4, 4, 2, 2) = 2 | |
Block(5, 1, 1, 3) = 2 | |
Block(5, 1, 2, 3) = 2 | |
Block(5, 1, 2, 2) = 2 | |
Block(5, 1, 3, 2) = 2 | |
Block(5, 2, 1, 1) = 2 | |
Block(5, 2, 1, 2) = 2 | |
Block(5, 2, 2, 2) = 2 | |
Block(5, 2, 2, 3) = 2 | |
Block(5, 3, 1, 3) = 2 | |
Block(5, 3, 2, 3) = 2 | |
Block(5, 3, 2, 2) = 2 | |
Block(5, 3, 3, 2) = 2 | |
Block(5, 4, 1, 1) = 2 | |
Block(5, 4, 1, 2) = 2 | |
Block(5, 4, 2, 2) = 2 | |
Block(5, 4, 2, 3) = 2 | |
Block(6, 1, 1, 1) = 2 | |
Block(6, 1, 2, 1) = 2 | |
Block(6, 1, 2, 2) = 2 | |
Block(6, 1, 3, 2) = 2 | |
Block(6, 2, 1, 3) = 2 | |
Block(6, 2, 1, 2) = 2 | |
Block(6, 2, 2, 2) = 2 | |
Block(6, 2, 2, 1) = 2 | |
Block(6, 3, 1, 1) = 2 | |
Block(6, 3, 2, 1) = 2 | |
Block(6, 3, 2, 2) = 2 | |
Block(6, 3, 3, 2) = 2 | |
Block(6, 4, 1, 3) = 2 | |
Block(6, 4, 1, 2) = 2 | |
Block(6, 4, 2, 2) = 2 | |
Block(6, 4, 2, 1) = 2 | |
Block(7, 1, 1, 2) = 2 | |
Block(7, 1, 2, 2) = 2 | |
Block(7, 1, 3, 2) = 2 | |
Block(7, 1, 4, 2) = 2 | |
Block(7, 2, 3, 1) = 2 | |
Block(7, 2, 3, 2) = 2 | |
Block(7, 2, 3, 3) = 2 | |
Block(7, 2, 3, 4) = 2 | |
Block(7, 3, 1, 3) = 2 | |
Block(7, 3, 2, 3) = 2 | |
Block(7, 3, 3, 3) = 2 | |
Block(7, 3, 4, 3) = 2 | |
Block(7, 4, 2, 1) = 2 | |
Block(7, 4, 2, 2) = 2 | |
Block(7, 4, 2, 3) = 2 | |
Block(7, 4, 2, 4) = 2 | |
MakeStartScreen 2 | |
NewShape | |
NewShape | |
SCREEN , , 0, 0 | |
DrawShape | |
LINE (56, 80)-STEP(16 * 8 - 1, 3 * 8 - 1), 0, BF | |
FOR i = 0 TO 2 | |
LINE (56 + i, 80 + i)-STEP(16 * 8 - 1 - i * 2, 3 * 8 - 1 - i * 2), 15, B | |
NEXT i | |
LINE (59, 101)-STEP(121, 0), 7 | |
LINE (58, 102)-STEP(123, 0), 7 | |
LINE (57, 103)-STEP(125, 0), 7 | |
LINE (181, 83)-STEP(0, 17), 7 | |
LINE (182, 82)-STEP(0, 19), 7 | |
LINE (183, 81)-STEP(0, 21), 7 | |
LINE (56, 80)-STEP(2, 2), 7 | |
MyColor 14 | |
MyLocate 263, 38: MyPrint "0" | |
LOCATE 12, 9: PRINT "Press any key." | |
MyLocate 263, 68: MyPrint "0" | |
SLEEP | |
SCREEN , , 1, 0 | |
MyLocate 263, 38: MyPrint "0" | |
MyLocate 263, 68: MyPrint "0" | |
SCREEN , , 2, 0 | |
MyLocate 263, 38: MyPrint "0" | |
MyLocate 263, 68: MyPrint "0" | |
END SUB | |
SUB MakeBlock (a, B, Num AS INTEGER) | |
Left = (a - 1) * 10 + 40 | |
Top = (B - 1) * 8 + 27 | |
xyBlock Left, Top, Num | |
END SUB | |
SUB MakeStartScreen (Num) | |
DIM Image(1 TO 1000) | |
SCREEN 7 | |
IF Num = 1 THEN | |
C1 = 0 | |
C2 = 9 | |
C3 = 1 | |
LINE (Left, Top)-STEP(19, 13), C3, BF | |
LINE (Left, Top)-STEP(1, 0), C1 | |
PSET (Left, Top + 1), C1 | |
LINE (Left + 19, Top)-STEP(0, 12), C1 | |
PSET (Left + 15, Top), C1 | |
LINE (Left + 14, Top)-STEP(0, 4), C1 | |
LINE (Left + 15, Top + 3)-STEP(2, 0), C1 | |
LINE (Left + 17, Top + 4)-STEP(1, 0), C1 | |
LINE (Left + 13, Top + 4)-STEP(0, 3), C1 | |
LINE (Left + 12, Top + 7)-STEP(0, 2), C1 | |
LINE (Left + 11, Top + 9)-STEP(0, 3), C1 | |
LINE (Left + 1, Top + 13)-STEP(16, 0), C1 | |
LINE (Left + 7, Top + 10)-STEP(3, 0), C1 | |
LINE (Left + 5, Top + 9)-STEP(2, 0), C1 | |
LINE (Left + 1, Top + 8)-STEP(4, 0), C1 | |
LINE (Left, Top + 7)-STEP(1, 0), C1 | |
LINE (Left + 17, Top + 12)-STEP(1, 0), C1 | |
LINE (Left, Top + 2)-STEP(0, 4), C2 | |
LINE (Left, Top + 8)-STEP(0, 5), C2 | |
LINE (Left + 1, Top + 1)-STEP(0, 1), C2 | |
PSET (Left + 2, Top + 1), C2 | |
LINE (Left + 2, Top)-STEP(11, 0), C2 | |
LINE (Left + 16, Top)-STEP(2, 0), C2 | |
LINE (Left + 15, Top + 1)-STEP(1, 0), C2 | |
PSET (Left + 15, Top + 2), C2 | |
LINE (Left + 15, Top + 4)-STEP(1, 0), C2 | |
LINE (Left + 14, Top + 5)-STEP(1, 0), C2 | |
LINE (Left + 17, Top + 5)-STEP(1, 0), C2 | |
LINE (Left + 14, Top + 6)-STEP(0, 2), C2 | |
LINE (Left + 13, Top + 8)-STEP(0, 2), C2 | |
LINE (Left + 12, Top + 10)-STEP(0, 3), C2 | |
LINE (Left + 1, Top + 9)-STEP(3, 0), C2 | |
LINE (Left + 5, Top + 10)-STEP(1, 0), C2 | |
LINE (Left + 7, Top + 11)-STEP(3, 0), C2 | |
LINE (Left + 18, Top + 13)-STEP(1, 0), C2 | |
GET (0, 0)-STEP(19, 13), Image | |
FOR a = 1 TO 14 | |
Top = (a - 1) * 14 | |
FOR B = 1 TO 16 | |
Left = (B - 1) * 20 | |
PUT (Left, Top), Image, PSET | |
NEXT B | |
NEXT a | |
GET (0, 0)-(319, 3), Image | |
PUT (0, 14 * 14), Image, PSET | |
END IF | |
IF Num = 2 THEN | |
C1 = 0 | |
C2 = 9 | |
C3 = 1 | |
LINE (Left, Top)-STEP(19, 13), C3, BF | |
LINE (Left, Top + 3)-STEP(2, 0), C1 | |
LINE (Left + 2, Top + 4)-STEP(4, 0), C1 | |
LINE (Left + 6, Top + 3)-STEP(2, 0), C1 | |
LINE (Left + 8, Top + 2)-STEP(0, -1), C1 | |
LINE (Left + 7, Top + 1)-STEP(0, -1), C1 | |
PSET (Left + 6, Top), C1 | |
LINE (Left + 6, Top + 13)-STEP(-2, 0), C1 | |
LINE (Left + 4, Top + 12)-STEP(-2, 0), C1 | |
LINE (Left + 2, Top + 11)-STEP(-2, 0), C1 | |
LINE (Left + 19, Top + 11)-STEP(-1, 0), C1 | |
LINE (Left + 18, Top + 12)-STEP(-1, 0), C1 | |
LINE (Left + 17, Top + 13)-STEP(-1, 0), C1 | |
LINE (Left + 16, Top)-STEP(0, 2), C1 | |
LINE (Left + 17, Top + 2)-STEP(1, 0), C1 | |
LINE (Left + 18, Top + 3)-STEP(1, 0), C1 | |
LINE (Left + 12, Top + 7)-STEP(-1, 0), C1 | |
PSET (Left + 11, Top + 8), C1 | |
LINE (Left + 10, Top + 9)-STEP(1, 1), C1, B | |
LINE (Left + 11, Top + 11)-STEP(1, 0), C1 | |
LINE (Left + 12, Top + 12)-STEP(0, 1), C1 | |
LINE (Left + 12, Top)-STEP(-1, 0), C1 | |
LINE (Left + 11, Top + 1)-STEP(0, 2), C1 | |
LINE (Left + 12, Top + 3)-STEP(0, 3), C1 | |
LINE (Left + 13, Top + 6)-STEP(4, 0), C1 | |
LINE (Left + 17, Top + 7)-STEP(2, 0), C1 | |
LINE (Left, Top + 7)-STEP(1, 0), C1 | |
LINE (Left + 1, Top + 8)-STEP(3, 0), C1 | |
LINE (Left + 4, Top + 9)-STEP(2, 0), C1 | |
LINE (Left + 6, Top + 10)-STEP(3, 0), C1 | |
LINE (Left, Top + 4)-STEP(1, 0), C2 | |
LINE (Left + 2, Top + 5)-STEP(5, 0), C2 | |
LINE (Left + 7, Top + 4)-STEP(2, 0), C2 | |
LINE (Left + 9, Top + 3)-STEP(0, -2), C2 | |
PSET (Left + 8, Top), C2 | |
LINE (Left + 5, Top)-STEP(-1, 0), C2 | |
LINE (Left + 3, Top + 13)-STEP(-1, 0), C2 | |
LINE (Left + 1, Top + 12)-STEP(-1, 0), C2 | |
LINE (Left + 19, Top + 12)-STEP(0, 1), C2 | |
PSET (Left + 18, Top + 13), C2 | |
LINE (Left + 17, Top)-STEP(0, 1), C2 | |
PSET (Left + 17, Top + 3), C2 | |
LINE (Left + 18, Top + 4)-STEP(1, 0), C2 | |
PSET (Left + 13, Top + 8), C2 | |
LINE (Left + 12, Top + 8)-STEP(0, 2), C2 | |
LINE (Left + 13, Top + 11)-STEP(0, 2), C2 | |
LINE (Left + 13, Top)-STEP(0, 1), C2 | |
LINE (Left + 12, Top + 1)-STEP(0, 1), C2 | |
LINE (Left + 13, Top + 3)-STEP(0, 2), C2 | |
LINE (Left + 13, Top + 7)-STEP(3, 0), C2 | |
LINE (Lfet + 17, Top + 8)-STEP(2, 0), C2 | |
PSET (Left, Top + 8), C2 | |
LINE (Left + 1, Top + 9)-STEP(2, 0), C2 | |
LINE (Left + 4, Top + 10)-STEP(1, 0), C2 | |
LINE (Left + 6, Top + 11)-STEP(4, 0), C2 | |
GET (0, 0)-STEP(19, 13), Image | |
FOR a = 1 TO 16 | |
Left = (a - 1) * 20 | |
FOR B = 1 TO 14 | |
Top = (B - 1) * 14 | |
PUT (Left, Top), Image, PSET | |
NEXT B | |
NEXT a | |
GET (0, 0)-STEP(319, 3), Image | |
PUT (0, 14 ^ 2), Image, PSET | |
END IF | |
xyBlock 40, 27, 0 | |
GET (40, 27)-STEP(9, 7), Image | |
FOR a = 1 TO 16 | |
Left = (a - 1) * 10 + 40 | |
FOR B = 1 TO 21 | |
Top = (B - 1) * 8 + 27 | |
PUT (Left, Top), Image, PSET | |
NEXT B | |
NEXT a | |
LINE (39, 26)-STEP(161, 8 * 21 + 1), 13, B | |
MyColor 13 | |
MyLocate 96, 18: MyPrint "TETRIS" | |
FOR i = 0 TO 13 | |
Top = i * 8 + 26 | |
xyBlock 201, Top, 1 | |
xyBlock 311, Top, 1 | |
NEXT i | |
FOR i = 1 TO 10 | |
Left = i * 10 + 201 | |
xyBlock Left, 26, 1 | |
xyBlock Left, 130, 1 | |
NEXT i | |
LINE (211, 34)-STEP(19, 13), 4, BF | |
c = 1 | |
d = 1 | |
FOR a = 34 TO 47 | |
d = d * -1 | |
FOR B = 211 TO 230 | |
c = c * -1 | |
IF d * c = 1 THEN PSET (B, a), 8 | |
NEXT B | |
NEXT a | |
LINE (211, 34)-STEP(19, 13), 7 | |
LINE (211, 48)-STEP(9, -7), 7 ' add 171, 7 | |
GET (211, 34)-STEP(19, 13), Image | |
FOR a = 1 TO 6 | |
Top = (a - 1) * 14 + 34 | |
FOR B = 1 TO 5 | |
Left = (B - 1) * 20 + 211 | |
PUT (Left, Top), Image, PSET | |
NEXT B | |
NEXT a | |
GET (211, 34)-STEP(5 * 20, 11), Image | |
PUT (211, 34 + 6 * 14), Image, PSET | |
MyColor 14 | |
MyLocate 215, 38 | |
MyPrint "Score:" | |
MyLocate 215, 68 | |
MyPrint "Lines:" | |
MyLocate 215, 98 | |
MyPrint "Next:" | |
FOR i = 1 TO 7 | |
PCOPY 0, i | |
NEXT i | |
END SUB | |
SUB MyColor (TheColor AS INTEGER) | |
PrintMain STR$(TheColor), "", 2 | |
END SUB | |
SUB MyLocate (x AS INTEGER, y AS INTEGER) | |
PrintMain STR$(x), STR$(y), 1 | |
END SUB | |
SUB MyPrint (PrintString AS STRING) | |
PrintMain PrintString, "", 0 | |
END SUB | |
SUB NewShape | |
DIM Image(0 TO 500) | |
STATIC NextShape AS INTEGER | |
CurrentShape = NextShape | |
NextShape = INT(RND * 7 + 1) | |
IF CurrentShape < 1 OR CurrentShape > 7 THEN CurrentShape = 1 | |
CurrentDirection = 1 | |
Col = 7 | |
FOR B = 1 TO 4 | |
FOR a = 1 TO 4 | |
c = Block(CurrentShape, CurrentDirection, a, B) | |
IF c <> 0 THEN EXIT FOR | |
NEXT a | |
IF c <> 0 THEN | |
TopLine = B | |
EXIT FOR | |
END IF | |
NEXT B | |
Row = 2 - TopLine | |
SCREEN , , 3, 0 | |
GET (260, 98)-STEP(39, 32), Image | |
SCREEN , , 2, 0 | |
PUT (260, 98), Image, PSET | |
FOR B = 1 TO 4 | |
FOR a = 1 TO 4 | |
c = Block(NextShape, 4, a, B) | |
IF c <> 0 THEN | |
EXIT FOR | |
END IF | |
NEXT a | |
IF c <> 0 THEN | |
TopLine = B | |
EXIT FOR | |
END IF | |
NEXT B | |
FOR B = 1 TO 4 | |
y = (B - 1) * 8 - (TopLine - 1) * 8 + 98 | |
FOR a = 1 TO 4 | |
x = (a - 1) * 10 + 260 | |
c = Block(NextShape, 4, a, B) | |
IF c <> 0 THEN xyBlock x, y, INT(c) | |
NEXT a | |
NEXT B | |
GET (260, 98)-STEP(39, 32), Image | |
SCREEN , , 1, 0 | |
PUT (260, 98), Image, PSET | |
SCREEN , , 0, 0 | |
PUT (260, 98), Image, PSET | |
END SUB | |
SUB PatchScreen | |
DIM Image(1 TO 3000) | |
Left = (Col - 1) * 10 + 40 | |
Top = (Row - 1) * 8 + 27 | |
Right = Left + 39 | |
Bottom = Top + 31 | |
IF Bottom > 199 THEN Bottom = 199 | |
IF Left < 0 THEN Left = 0 | |
IF Top < 0 THEN Top = 0 | |
IF Right > 319 THEN Right = 319 | |
SCREEN , , 2, 0 | |
GET (Left, Top)-(Right, Bottom), Image | |
SCREEN , , 1, 0 | |
PUT (Left, Top), Image, PSET | |
END SUB | |
SUB PrintMain (Variable1 AS STRING, Variable2 AS STRING, FunctionNum AS INTEGER) | |
DIM Letter AS STRING | |
STATIC PrintColor AS INTEGER | |
STATIC Left AS INTEGER | |
STATIC Top AS INTEGER | |
IF FunctionNum = 0 THEN | |
FOR i = 1 TO LEN(Variable1) | |
Letter = MID$(Variable1, i, 1) | |
IF Letter = "A" THEN | |
LINE (Left + 2, Top)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 2)-STEP(1, 4), PrintColor, BF | |
LINE (Left + 4, Top + 2)-STEP(1, 4), PrintColor, BF | |
LINE (Left + 2, Top + 4)-STEP(1, 0), PrintColor, BF | |
END IF | |
IF Letter = "B" THEN | |
LINE (Left, Top)-STEP(5, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 6)-STEP(5, 0), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 5, Top + 4)-STEP(1, 1), PrintColor, B | |
END IF | |
IF Letter = "C" THEN | |
LINE (Left + 5, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top)-STEP(3, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(3, 0), PrintColor | |
LINE (Left + 5, Top + 5)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "D" THEN | |
LINE (Left, Top)-STEP(4, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 6)-STEP(4, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "E" THEN | |
LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 2, Top)-STEP(4, 0), PrintColor | |
LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(4, 0), PrintColor | |
END IF | |
IF Letter = "F" THEN | |
LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 3, Top)-STEP(3, 0), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "G" THEN | |
LINE (Left + 2, Top)-STEP(3, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(4, 0), PrintColor | |
LINE (Left + 5, Top + 4)-STEP(1, 1), PrintColor, B | |
PSET (Left + 4, Top + 4), PrintColor | |
END IF | |
IF Letter = "H" THEN | |
LINE (Left, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 4, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 2, Top + 3)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "I" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
LINE (Left + 2, Top + 1)-STEP(1, 4), PrintColor, B | |
END IF | |
IF Letter = "J" THEN | |
LINE (Left + 3, Top)-STEP(3, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "K" THEN | |
LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B | |
PSET (Left, Top), PrintColor | |
PSET (Left, Top + 6), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 4)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top)-STEP(1, 1), PrintColor, B | |
LINE (Left + 5, Top + 5)-STEP(1, 1), PrintColor, B | |
END IF | |
IF Letter = "L" THEN | |
LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 3, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "M" THEN | |
LINE (Left, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 5, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 2, Top + 1)-STEP(0, 2), PrintColor | |
LINE (Left + 3, Top + 2)-STEP(0, 2), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(0, 2), PrintColor | |
END IF | |
IF Letter = "N" THEN | |
LINE (Left, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 5, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 2, Top + 1)-STEP(2, 2), PrintColor | |
LINE (Left + 2, Top + 2)-STEP(2, 2), PrintColor | |
END IF | |
IF Letter = "O" THEN | |
LINE (Left + 3, Top)-STEP(-3, 2), PrintColor | |
LINE (Left + 4, Top)-STEP(2, 2), PrintColor | |
LINE (Left + 3, Top + 6)-STEP(-3, -2), PrintColor | |
LINE (Left + 4, Top + 6)-STEP(2, -2), PrintColor | |
LINE (Left + 2, Top + 1)-STEP(-1, 1), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor | |
LINE (Left + 2, Top + 5)-STEP(-1, -1), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, -1), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 3)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "P" THEN | |
LINE (Left, Top)-STEP(5, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 6)-STEP(3, 0), PrintColor | |
LINE (Left + 5, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor | |
END IF | |
IF Letter = "Q" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 3), PrintColor, B | |
LINE (Left + 4, Top + 1)-STEP(1, 3), PrintColor, B | |
PSET (Left + 3, Top + 4), PrintColor | |
LINE (Left + 1, Top + 5)-STEP(3, 0), PrintColor | |
LINE (Left + 3, Top + 6)-STEP(2, 0), PrintColor | |
END IF | |
IF Letter = "R" THEN | |
LINE (Left, Top)-STEP(5, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 6)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 4)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 5)-STEP(1, 1), PrintColor, B | |
END IF | |
IF Letter = "S" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 4, Top + 1)-STEP(1, 0), PrintColor | |
PSET (Left + 2, Top + 2), PrintColor | |
LINE (Left + 1, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 3, Top + 4)-STEP(2, 0), PrintColor | |
LINE (Left, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "T" THEN | |
LINE (Left, Top)-STEP(5, 0), PrintColor | |
LINE (Left + 2, Top + 1)-STEP(1, 5), PrintColor, B | |
END IF | |
IF Letter = "U" THEN | |
LINE (Left, Top)-STEP(1, 5), PrintColor, B | |
LINE (Left + 4, Top)-STEP(1, 5), PrintColor, B | |
LINE (Left, Top + 6)-STEP(5, 0), PrintColor | |
END IF | |
IF Letter = "V" THEN | |
LINE (Left, Top)-STEP(1, 4), PrintColor, B | |
LINE (Left + 4, Top)-STEP(1, 4), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(3, 0), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "W" THEN | |
LINE (Left, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 5, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 2, Top + 4)-STEP(0, 1), PrintColor | |
LINE (Left + 4, Top + 4)-STEP(0, 1), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(0, 1), PrintColor | |
END IF | |
IF Letter = "X" THEN | |
LINE (Left, Top)-STEP(1, 1), PrintColor, B | |
LINE (Left + 5, Top)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 3)-STEP(2, 1), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 6)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "Y" THEN | |
LINE (Left, Top)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top)-STEP(1, 2), PrintColor, B | |
LINE (Left + 1, Top + 3)-STEP(3, 0), PrintColor | |
LINE (Left + 2, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "Z" THEN | |
LINE (Left, Top)-STEP(6, 0), PrintColor | |
LINE (Left + 5, Top + 1)-STEP(-4, 4), PrintColor | |
LINE (Left + 6, Top + 1)-STEP(-4, 4), PrintColor | |
LINE (Left, Top + 6)-STEP(6, 0), PrintColor | |
END IF | |
IF Letter = "a" THEN | |
LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 2), PrintColor, B | |
LINE (Left + 1, Top + 4)-STEP(2, 0), PrintColor | |
LINE (Left, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "b" THEN | |
PSET (Left, Top), PrintColor | |
LINE (Left + 1, Top)-STEP(1, 5), PrintColor, B | |
LINE (Left, Top + 6)-STEP(1, 0), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 3, Top + 6)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 4)-STEP(1, 1), PrintColor, B | |
END IF | |
IF Letter = "c" THEN | |
LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "d" THEN | |
PSET (Left + 3, Top), PrintColor | |
LINE (Left + 4, Top)-STEP(1, 5), PrintColor, B | |
LINE (Left + 1, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "e" THEN | |
LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top + 3)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 4)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "f" THEN | |
LINE (Left + 2, Top)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 4), PrintColor, B | |
PSET (Left, Top + 3), PrintColor | |
PSET (Left + 3, Top + 3), PrintColor | |
LINE (Left, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "g" THEN | |
LINE (Left + 1, Top + 2)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 3), PrintColor, B | |
LINE (Left, Top + 7)-STEP(4, 0), PrintColor | |
END IF | |
IF Letter = "h" THEN | |
PSET (Left, Top), PrintColor | |
LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B | |
PSET (Left, Top + 6), PrintColor | |
PSET (Left + 3, Top + 3), PrintColor | |
LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 3)-STEP(1, 3), PrintColor, B | |
END IF | |
IF Letter = "i" THEN | |
LINE (Left + 2, Top)-STEP(1, 0), PrintColor | |
PSET (Left + 1, Top + 2), PrintColor | |
LINE (Left + 2, Top + 2)-STEP(1, 3), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "j" THEN | |
LINE (Left + 4, Top)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 2)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 5)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 7)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "k" THEN | |
PSET (Left, Top), PrintColor | |
PSET (Left, Top + 6), PrintColor | |
LINE (Left + 1, Top)-STEP(1, 6), PrintColor, B | |
LINE (Left + 3, Top + 4)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "l" THEN | |
PSET (Left + 1, Top), PrintColor | |
LINE (Left + 2, Top)-STEP(1, 5), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "m" THEN | |
LINE (Left + 1, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 3), PrintColor, B | |
LINE (Left + 5, Top + 3)-STEP(1, 3), PrintColor, B | |
LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 3)-STEP(2, 1), PrintColor, B | |
PSET (Left + 3, Top + 5), PrintColor | |
END IF | |
IF Letter = "n" THEN | |
LINE (Left, Top + 2)-STEP(4, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 3), PrintColor, B | |
LINE (Left + 4, Top + 3)-STEP(1, 3), PrintColor, B | |
END IF | |
IF Letter = "o" THEN | |
LINE (Left + 1, Top + 2)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top + 3)-STEP(1, 2), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "p" THEN | |
LINE (Left, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 3)-STEP(1, 3), PrintColor, B | |
LINE (Left, Top + 7)-STEP(3, 0), PrintColor | |
LINE (Left + 3, Top + 2)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 3)-STEP(1, 1), PrintColor, B | |
LINE (Left + 3, Top + 5)-STEP(2, 0), PrintColor | |
END IF | |
IF Letter = "q" THEN | |
LINE (Left + 1, Top + 2)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 3), PrintColor, B | |
LINE (Left + 3, Top + 7)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "r" THEN | |
LINE (Left, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 3, Top + 2)-STEP(2, 0), PrintColor | |
LINE (Left + 1, Top + 3)-STEP(1, 2), PrintColor, B | |
PSET (Left + 3, Top + 3), PrintColor | |
LINE (Left + 5, Top + 3)-STEP(1, 1), PrintColor, B | |
LINE (Left, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "s" THEN | |
LINE (Left + 1, Top + 2)-STEP(4, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 4)-STEP(3, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 6)-STEP(4, 0), PrintColor | |
END IF | |
IF Letter = "t" THEN | |
LINE (Left + 2, Top + 1)-STEP(0, 4), PrintColor | |
LINE (Left + 3, Top)-STEP(0, 5), PrintColor | |
PSET (Left + 1, Top + 2), PrintColor | |
LINE (Left + 4, Top + 2)-STEP(1, 0), PrintColor | |
PSET (Left + 5, Top + 5), PrintColor | |
LINE (Left + 3, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "u" THEN | |
LINE (Left, Top + 2)-STEP(1, 3), PrintColor, B | |
LINE (Left + 4, Top + 2)-STEP(1, 3), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor | |
LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "v" THEN | |
LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(3, 0), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "w" THEN | |
LINE (Left, Top + 2)-STEP(1, 3), PrintColor, B | |
LINE (Left + 5, Top + 2)-STEP(1, 3), PrintColor, B | |
PSET (Left + 3, Top + 3), PrintColor | |
LINE (Left + 2, Top + 4)-STEP(2, 1), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "x" THEN | |
LINE (Left, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 4)-STEP(2, 0), PrintColor | |
LINE (Left + 1, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 6)-STEP(1, 0), PrintColor | |
LINE (Left + 5, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "y" THEN | |
LINE (Left, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 4, Top + 2)-STEP(1, 4), PrintColor, B | |
LINE (Left + 1, Top + 5)-STEP(2, 0), PrintColor | |
LINE (Left, Top + 7)-STEP(4, 0), PrintColor | |
END IF | |
IF Letter = "z" THEN | |
LINE (Left, Top + 2)-STEP(5, 0), PrintColor | |
PSET (Left, Top + 3), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(-2, 2), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(-2, 2), PrintColor | |
PSET (Left + 5, Top + 5), PrintColor | |
LINE (Left, Top + 6)-STEP(5, 0), PrintColor | |
END IF | |
IF Letter = "0" THEN | |
LINE (Left + 1, Top)-STEP(4, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left + 5, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left + 4, Top + 2)-STEP(0, 1), PrintColor | |
LINE (Left + 3, Top + 3)-STEP(0, 1), PrintColor | |
LINE (Left + 2, Top + 4)-STEP(0, 1), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(4, 0), PrintColor | |
END IF | |
IF Letter = "1" THEN | |
LINE (Left + 2, Top)-STEP(1, 5), PrintColor, B | |
PSET (Left + 1, Top + 1), PrintColor | |
LINE (Left, Top + 6)-STEP(5, 0), PrintColor | |
END IF | |
IF Letter = "2" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 1, Top + 4)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 5)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 6)-STEP(3, 0), PrintColor | |
LINE (Left + 4, Top + 5)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "3" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "4" THEN | |
PSET (Left + 3, Top), PrintColor | |
LINE (Left + 2, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 2)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top)-STEP(1, 5), PrintColor, B | |
LINE (Left, Top + 4)-STEP(3, 0), PrintColor | |
PSET (Left + 6, Top + 4), PrintColor | |
LINE (Left + 3, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "5" THEN | |
LINE (Left, Top)-STEP(5, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 2)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 2), PrintColor, B | |
LINE (Left, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "6" THEN | |
LINE (Left + 2, Top)-STEP(2, 0), PrintColor | |
LINE (Left + 1, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left, Top + 2)-STEP(1, 3), PrintColor, B | |
LINE (Left + 2, Top + 3)-STEP(2, 0), PrintColor | |
LINE (Left + 4, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "7" THEN | |
LINE (Left, Top)-STEP(5, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 4)-STEP(1, 2), PrintColor, B | |
END IF | |
IF Letter = "8" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 3)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left + 4, Top + 4)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 6)-STEP(3, 0), PrintColor | |
END IF | |
IF Letter = "9" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 4, Top + 1)-STEP(1, 3), PrintColor, B | |
LINE (Left + 1, Top + 3)-STEP(2, 0), PrintColor, B | |
LINE (Left + 3, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(2, 0), PrintColor | |
END IF | |
IF Letter = "." THEN | |
LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B | |
END IF | |
IF Letter = "," THEN | |
LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 7)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = ":" THEN | |
LINE (Left + 2, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B | |
END IF | |
IF Letter = ";" THEN | |
LINE (Left + 2, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 2, Top + 5)-STEP(1, 1), PrintColor, B | |
LINE (Left + 1, Top + 7)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "(" THEN | |
LINE (Left + 3, Top)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 2, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 3, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = ")" THEN | |
LINE (Left + 1, Top)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 3, Top + 2)-STEP(1, 2), PrintColor, B | |
LINE (Left + 2, Top + 5)-STEP(1, 0), PrintColor | |
LINE (Left + 1, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "!" THEN | |
LINE (Left + 1, Top + 1)-STEP(0, 2), PrintColor | |
LINE (Left + 2, Top)-STEP(1, 4), PrintColor, B | |
LINE (Left + 4, Top + 1)-STEP(0, 2), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "?" THEN | |
LINE (Left + 1, Top)-STEP(3, 0), PrintColor | |
LINE (Left, Top + 1)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 1)-STEP(1, 1), PrintColor, B | |
LINE (Left + 3, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 4)-STEP(1, 0), PrintColor | |
LINE (Left + 2, Top + 6)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "`" THEN | |
LINE (Left + 2, Top)-STEP(1, 1), PrintColor, B | |
LINE (Left + 3, Top + 2)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "'" THEN | |
LINE (Left + 1, Top)-STEP(1, 1), PrintColor, B | |
LINE (Left, Top + 2)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "+" THEN | |
LINE (Left + 2, Top + 1)-STEP(1, 4), PrintColor, B | |
LINE (Left, Top + 3)-STEP(1, 0), PrintColor | |
LINE (Left + 4, Top + 3)-STEP(1, 0), PrintColor | |
END IF | |
IF Letter = "-" THEN | |
LINE (Left, Top + 3)-STEP(5, 0), PrintColor | |
END IF | |
IF Letter = "*" THEN | |
LINE (Left + 2, Top + 2)-STEP(2, 2), PrintColor, BF | |
PSET (Left + 1, Top + 1), PrintColor | |
PSET (Left + 5, Top + 1), PrintColor | |
PSET (Left + 1, Top + 3), PrintColor | |
PSET (Left + 5, Top + 3), PrintColor | |
PSET (Left + 1, Top + 5), PrintColor | |
PSET (Left + 5, Top + 5), PrintColor | |
END IF | |
IF Letter = "/" THEN | |
LINE (Left, Top + 5)-STEP(5, -5), PrintColor | |
LINE (Left, Top + 6)-STEP(6, -6), PrintColor | |
END IF | |
IF Letter = "=" THEN | |
LINE (Left, Top + 2)-STEP(5, 0), PrintColor | |
LINE (Left, Top + 5)-STEP(5, 0), PrintColor | |
END IF | |
Left = Left + 8 | |
NEXT i | |
END IF | |
IF FunctionNum = 1 THEN | |
Left = VAL(Variable1) | |
Top = VAL(Variable2) | |
END IF | |
IF FunctionNum = 2 THEN PrintColor = VAL(Variable1) | |
END SUB | |
SUB xyBlock (Left, Top, Num AS INTEGER) | |
Right = Left + 9 | |
Bottom = Top + 7 | |
IF Num = 0 THEN | |
C1 = 11 | |
C2 = 3 | |
C3 = 9 | |
C4 = 1 | |
END IF | |
IF Num = 1 THEN | |
C1 = 15 | |
C2 = 7 | |
C3 = 8 | |
C4 = 0 | |
END IF | |
IF Num = 0 OR Num = 1 THEN | |
LINE (Left, Top)-STEP(4, 7), C2, BF | |
LINE (Left + 5, Top)-STEP(4, 7), C3, BF | |
FOR Dis = 0 TO 3 | |
LINE (Left + 1 + Dis, Top + Dis)-(Right - 1 - Dis, Top + Dis), C1 | |
LINE (Left + 1 + Dis, Bottom - Dis)-(Right - 1 - Dis, Bottom - Dis), C4 | |
NEXT Dis | |
END IF | |
IF Num = 2 THEN | |
LINE (Left, Top)-STEP(9, 7), 15, BF | |
END IF | |
END SUB | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment