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