! 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