! Takoma Park Middle School
! Jr-5
! Contest 3
! Lisha Ruan
! Save your program name as "08-09 Jr-5 Contest 3
Blokus Ruan Lisha"
DIM Board$(10,10)
OPEN #1: SCREEN .15,.4,.05,.95
OPEN #2: SCREEN .45,.7,.05,.95
FOR Z = 1 TO 5
LET A$ =
"Y"
LET B$ =
"Y"
LET C$ =
"Y"
LET D$ =
"Y"
WINDOW #1
PRINT str$(Z)
& "..";
INPUT PROMPT
" ": Start$, Link1, Link2
LET Start$ =
ucase$(Start$)
LET AX$ =
Start$[2:2]
LET AX = VAL(AX$)
IF Start$[1:1] =
"A" THEN
LET AY = 1
ELSEIF
Start$[1:1] = "B" THEN
LET AY = 2
ELSEIF
Start$[1:1] = "C" THEN
LET AY = 3
ELSEIF
Start$[1:1] = "D" THEN
LET AY = 4
ELSEIF
Start$[1:1] = "E" THEN
LET AY = 5
ELSEIF
Start$[1:1] = "F" THEN
LET AY = 6
ELSEIF
Start$[1:1] = "G" THEN
LET AY = 7
ELSEIF
Start$[1:1] = "H" THEN
LET AY = 8
ELSEIF
Start$[1:1] = "I" THEN
LET AY = 9
ELSEIF
Start$[1:1] = "J" THEN
LET AY = 10
END IF
CALL ResetBoard
IF Link1 = 1 THEN
IF Link2 = 1
THEN
LET X = AX
- 1
LET Y = AY
+ 1
CALL PlaceA
CALL PlaceB
CALL PlaceC
CALL PlaceD
LET A1$ =
A$
LET B1$ =
B$
LET C1$ =
C$
LET D1$ =
D$
LET A$ =
"Y"
LET B$ =
"Y"
LET C$ =
"Y"
LET D$ =
"Y"
LET Y = AY
- 1
CALL PlaceA
CALL PlaceB
CALL PlaceC
CALL PlaceD
LET A2$ =
A$
LET B2$ =
B$
LET C2$ =
C$
LET D2$ =
D$
ELSEIF Link2 =
2 THEN
LET X = AX
- 2
LET Y = AY
+ 1
CALL PlaceA
CALL PlaceB
LET A1$ =
A$
LET B1$ =
B$
LET A$ =
"Y"
LET B$ =
"Y"
LET Y = AY
- 1
CALL PlaceA
CALL PlaceB
LET A2$ =
A$
LET B2$ =
B$
LET X = AX
LET Y = AY
+ 2
CALL PlaceC
CALL PlaceD
LET C1$ =
C$
LET D1$ =
D$
LET C$ =
"Y"
LET D$ =
"Y"
LET Y = AY
CALL PlaceC
CALL PlaceD
LET C2$ =
C$
LET D2$ =
D$
ELSEIF Link2 =
3 THEN
LET A$ =
"N"
LET Y = AY
+ 2
LET X = AX
- 2
CALL PlaceB
LET B1$ =
B$
LET B$ =
"Y"
LET X = AX
- 1
CALL PlaceC
CALL PlaceD
LET C1$ =
C$
LET D1$ =
D$
LET C$ =
"Y"
LET D$ =
"Y"
LET Y = AY
LET X = AX
- 2
CALL PlaceB
LET B2$ =
B$
LET X = AX
- 1
CALL PlaceC
CALL PlaceD
LET C2$ =
C$
LET D2$ =
D$
ELSEIF Link2 =
4 THEN
LET A$ =
"N"
LET B$ =
"N"
LET X = AX
- 2
LET Y = AY
+ 2
CALL PlaceC
LET C1$ =
C$
LET C$ =
"Y"
LET X = AX
LET Y = AY
+ 3
CALL PlaceD
LET D1$ =
D$
LET D$ =
"Y"
LET X = AX
- 2
LET Y = AY
CALL PlaceC
LET C1$ =
C$
LET C$ =
"Y"
LET X = AX
LET Y = AY
+ 1
CALL PlaceD
LET D1$ = D$
LET D$ =
"Y"
END IF
ELSEIF Link1 = 2
THEN
IF Link2 = 1
THEN
LET X = AX
+ 2
LET Y = AY
+ 1
CALL PlaceA
CALL PlaceB
CALL PlaceC
CALL PlaceD
LET A1$ =
A$
LET B1$ =
B$
LET C1$ =
C$
LET D1$ =
D$
LET A$ =
"Y"
LET B$ =
"Y"
LET C$ =
"Y"
LET D$ =
"Y"
LET Y = AY
- 1
CALL PlaceA
CALL PlaceB
CALL PlaceC
CALL PlaceD
LET A2$ =
A$
LET B2$ =
B$
LET C2$ =
C$
LET D2$ =
D$
ELSEIF Link2 =
2 THEN
LET X = AX
+ 1
LET Y = AY
+ 1
CALL PlaceA
CALL PlaceB
LET A1$ =
A$
LET B1$ =
B$
LET A$ =
"Y"
LET B$ =
"Y"
LET Y = AY
- 1
CALL PlaceA
CALL PlaceB
LET A2$ =
A$
LET B2$ =
B$
LET X = AX
+ 3
LET Y = AY
+ 2
CALL PlaceC
CALL PlaceD
LET C1$ =
C$
LET D1$ =
D$
LET C$ =
"Y"
LET D$ =
"Y"
LET Y = AY
CALL PlaceC
CALL PlaceD
LET C2$ =
C$
LET D2$ =
D$
ELSEIF Link2 =
3 THEN
LET A$ =
"N"
LET Y = AY
+ 2
LET X = AX
+ 1
CALL PlaceB
LET B1$ =
B$
LET B$ =
"Y"
LET X = AX
+ 2
CALL PlaceC
CALL PlaceD
LET C1$ =
C$
LET D1$ =
D$
LET C$ =
"Y"
LET D$ =
"Y"
LET Y = AY
LET X = AX
+ 1
CALL PlaceB
LET B2$ =
B$
LET X = AX
+ 2
CALL PlaceC
CALL PlaceD
LET C2$ =
C$
LET D2$ =
D$
ELSEIF Link2 =
4 THEN
LET A$ =
"N"
LET B$ =
"N"
LET X = AX
+ 1
LET Y = AY
+ 2
CALL PlaceC
LET C1$ =
C$
LET C$ =
"Y"
LET X = AX
+ 3
LET Y = AY
+ 3
CALL PlaceD
LET D1$ =
D$
LET D$ =
"Y"
LET X = AX
+ 1
LET Y = AY
CALL PlaceC
LET C1$ = C$
LET C$ =
"Y"
LET X = AX
+ 3
LET Y = AY
+ 1
CALL PlaceD
LET D1$ =
D$
LET D$ =
"Y"
END IF
END IF
IF A1$ =
"Y" OR A2$ = "Y" THEN
LET A$ =
"Y"
END IF
IF B1$ =
"Y" OR B2$ = "Y" THEN
LET B$ =
"Y"
END IF
IF C1$ =
"Y" OR C2$ = "Y" THEN
LET C$ =
"Y"
END IF
IF D1$ =
"Y" OR D2$ = "Y" THEN
LET D$ =
"Y"
END IF
LET String$ =
str$(Z) & "."
IF A$ =
"N" AND B$ = "N" AND C$ = "N" AND D$ =
"N" THEN
LET String$ =
String$ & " NONE"
ELSE
IF A$ =
"Y" THEN
LET String$
= String$ & " A,"
END IF
IF B$ =
"Y" THEN
LET String$
= String$ & " B,"
END IF
IF C$ = "Y"
THEN
LET String$
= String$ & " C,"
END IF
IF D$ =
"Y" THEN
LET String$
= String$ & " D,"
END IF
LET String$ =
String$[1:LEN(String$)-1]
END IF
WINDOW #2
PRINT String$
NEXT Z
SUB ResetBoard
MAT Board$ =
"0"
LET Board$(AX,AY)
= "A1"
LET
Board$(AX+1,AY) = "A2"
END SUB
SUB Check
LET Check$ =
"Y"
IF AX >= 2
THEN
IF
Board$(AX-1,AY) <> "0" THEN
LET Check$
= "N"
END IF
END IF
IF AX <= 8
THEN
IF Board$(AX+2,AY) <> "0"
THEN
LET Check$
= "N"
END IF
END IF
IF AY >= 2
THEN
IF
Board$(AX,AY-1) <> "0" THEN
LET Check$
= "N"
END IF
IF
Board$(AX+1,AY-1) <> "0" THEN
LET Check$
= "N"
END IF
END IF
IF AY <= 9
THEN
IF
Board$(AX,AY+1) <> "0" THEN
LET Check$
= "N"
END IF
IF
Board$(AX+1,AY+1) <> "0" THEN
LET Check$
= "N"
END IF
END IF
END SUB
SUB PlaceA
IF X >= 1 AND
X <= 9 AND Y >= 1 AND Y <= 10 THEN
IF Board$(X,Y)
= "0" THEN
LET
Board$(X,Y) = "A1"
ELSE
LET A$ =
"N"
END IF
IF
Board$(X+1,Y) = "0" THEN
LET
Board$(X+1,Y) = "A2"
ELSE
LET A$ =
"N"
END IF
CALL Check
IF Check$ =
"N" THEN
LET A$ =
"N"
END IF
ELSE
LET A$ =
"N"
END IF
CALL ResetBoard
END SUB
SUB PlaceB
IF X >= 1 AND
X <= 9 AND Y >= 2 AND Y <= 10 THEN
IF Board$(X,Y)
= "0" THEN
LET
Board$(X,Y) = "B1"
ELSE
LET B$ =
"N"
END IF
IF
Board$(X+1,Y) = "0" THEN
LET
Board$(X+1,Y) = "B2"
ELSE
LET B$ =
"N"
END IF
IF
Board$(X+1,Y-1) = "0" THEN
LET Board$(X+1,Y-1) = "B3"
ELSE
LET B$ =
"N"
END IF
CALL Check
IF Check$ =
"N" THEN
LET B$ =
"N"
END IF
ELSE
LET B$ =
"N"
END IF
CALL ResetBoard
END SUB
SUB PlaceC
IF X >= 2 AND
X <= 9 AND Y >= 2 AND Y <= 10 THEN
IF Board$(X,Y)
= "0" THEN
LET
Board$(X,Y) = "C1"
ELSE
LET C$ =
"N"
END IF
IF
Board$(X-1,Y-1) = "0" THEN
LET
Board$(X-1,Y-1) = "C2"
ELSE
LET C$ = "N"
END IF
IF
Board$(X,Y-1) = "0" THEN
LET
Board$(X,Y-1) = "C3"
ELSE
LET C$ =
"N"
END IF
IF
Board$(X+1,Y-1) = "0" THEN
LET
Board$(X+1,Y-1) = "C4"
ELSE
LET C$ =
"N"
END IF
CALL Check
IF Check$ =
"N" THEN
LET C$ =
"N"
END IF
ELSE
LET C$ =
"N"
END IF
CALL ResetBoard
END SUB
SUB PlaceD
IF X >= 2 AND
X <= 10 AND Y >= 3 AND Y <= 10 THEN
IF Board$(X,Y)
= "0" THEN
LET
Board$(X,Y) = "D1"
ELSE
LET D$ =
"N"
END IF
IF
Board$(X-1,Y-1) = "0" THEN
LET
Board$(X-1,Y-1) = "D2"
ELSE
LET D$ =
"N"
END IF
IF
Board$(X,Y-1) = "0" THEN
LET
Board$(X,Y-1) = "D3"
ELSE
LET D$ =
"N"
END IF
IF
Board$(X-1,Y-2) = "0" THEN
LET
Board$(X-1,Y-2) = "D4"
ELSE
LET D$ =
"N"
END IF
CALL Check
IF Check$ =
"N" THEN
LET D$ =
"N"
END IF
ELSE
LET D$ =
"N"
END IF
CALL ResetBoard
END SUB
END