diff --git a/day9/part2.bas b/day9/part2.bas index 917c83a..d82eecf 100644 --- a/day9/part2.bas +++ b/day9/part2.bas @@ -3,12 +3,16 @@ REM Written in Applesoft BASIC REM Same as part1, but track positions in SX and SY arrays. REM At 405, we reuse HX/HY/TX/TY to minimize changes from part1. +REM Also added simple graphics, see 305/400, 412/438, and 458... +REM Head, body, and tail are different colors. 10 DIM HS(7000) 20 DIM SX(10) 30 DIM SY(10) 40 FOR I = 0 TO 9:SX(I) = 0: NEXT I 50 FOR I = 0 TO 9:SY(I) = 0: NEXT I + 60 GR + 70 COLOR= 9: PLOT 19,19 100 S$ = "" 110 GET C$ 120 IF ASC (C$) < 32 GOTO 200 @@ -19,23 +23,28 @@ REM At 405, we reuse HX/HY/TX/TY to minimize changes from part1. 220 S = VAL ( MID$ (S$,3, LEN (S$) - 2)) 230 PRINT ">>",D$;" ";S 300 FOR I = 1 TO S + 305 COLOR= 0: PLOT 19 - SX(0),19 - SY(0) 310 IF D$ = "U" THEN SY(0) = SY(0) + 1: GOTO 400 320 IF D$ = "D" THEN SY(0) = SY(0) - 1: GOTO 400 330 IF D$ = "R" THEN SX(0) = SX(0) + 1: GOTO 400 340 IF D$ = "L" THEN SX(0) = SX(0) - 1: GOTO 400 350 PRINT "ERROR: ";D$ 360 END - 400 FOR K = 1 TO 9 + 400 COLOR= 1: PLOT 19 - SX(0),19 - SY(0) + 402 FOR K = 1 TO 9 405 HX = SX(K - 1):HY = SY(K - 1) 410 TX = SX(K):TY = SY(K) + 412 COLOR= 0: PLOT 19 - TX,19 - TY 415 DX = HX - TX:DY = HY - TY - 420 IF ABS (DX) < = 1 AND ABS (DY) < = 1 GOTO 460 + 420 IF ABS (DX) < = 1 AND ABS (DY) < = 1 GOTO 438 430 IF HX < > TX THEN GOSUB 500 435 IF HY < > TY THEN GOSUB 550 + 438 COLOR= 9: PLOT 19 - TX,19 - TY 440 SX(K) = TX:SY(K) = TY 445 NEXT K 450 HH = TX * 1000 + TY 455 GOSUB 600 + 458 COLOR= 12: PLOT 19 - TX,19 - TY 460 NEXT I 470 GOTO 100 500 Z = - 1 @@ -59,3 +68,4 @@ REM At 405, we reuse HX/HY/TX/TY to minimize changes from part1. 1050 PRINT "TOTAL: ";CO 1060 END +]PR#0