01.01 C PROGRAM HEXAPAWN BY RALPH MAYER 01.10 E 01.20 T "THIS PROGRAM PLAYS A GAME CALLED HEXAPAWN",!!,"DO YOU " 01.25 A "NEED INSTRUCTIONS? ",W,!!;I (W-155),2.1;T "THE GAME " 01.27 T "IS PLAYED ON A THREE BY THREE BOARd NUMBERED AS BELOW" 01.30 T !!,"1 2 3",!,"4 5 6",!,"7 8 9"!,!,"WE EACH START OFF WITH" 01.35 T " THREE PAWNS-MINE ARE O'S; YOURS ARE X'S",!,"THEY " 01.40 T "MOVE LIKE PAWNS IN CHESS. THDY CAN MOVE FORWARD" 01.45 T " TO AN",!,"EMPTY SPACE OR DIAGONALLY TO TAKE ANOTHER " 01.50 T "PAWN. YOU",!,"WIN BY REACHING THE OTHER SIDE OF THE " 01.55 T "BOARD OR BY MAKING IT",!,"IMPOSSIBLE FOR THE OTHER " 01.60 T "PLAYER TO MOVE.",!,"I AM PROGRAMMED TO LEARN SO IF " 01.65 T "YOU WIN AT FIRST DON'T WORRY-",!,"I'LL SOON CATCH UP." 01.70 T !!," GOOD LUCK",!!!! 02.10 F X=1,3;S B[X]=1;S B[X+3]=0;S B[X+6]=2 02.20 D 10;S W1=0;S W2=2;S W3=1;D 3;I (-J4)2.3,2.4,, 02.30 S SP=SP+1;S C[K]=0;T "YOU WON THE LAST GAME",!! 02.35 T "SCORE IS",!!," ME YOU",!,%3.0,SC," ",SP,!! 02.37 A "DO YOU WANT TO PLAY AGAIN?",W,!!;S J=1;I (155-W)2.1;Q 02.40 D 6;T "MY TURN",!!;I (-J1)2.5;S YT=YT+1;S L=YT;D 8 02.50 S J1=10*L;D 12;I (-FABS(J4-1))2.6;D 5 02.60 S W1=6;S W2=1;S W3=2;D 3;I (J4),2.2;C 02.70 D 11;S SC=SC+1;T "I WON THE LAST GAME",!!;G 2.35 03.10 S J4=0;S J1=0;F X=1,3;D 3.7 03.20 I (-J1)3.5;F X=1,9;D 3.8 03.30 S J4=1;I (J1),3.5;S J2=1;I (1-W2)3.4;S J2=-1 03.40 F X=1,J1;D 4 03.50 R 03.70 I (-FABS(B[X+W1]-W2))3.5;S J4=1;S J1=1;S X=3 03.80 I (-FABS(B[X]-W3))3.5;S J1=J1+1;S T[J1]=X 04.10 S G=T[X]+3*J2;S J3=0;D 4.5;S J3=W2 04.20 S G=T[X]+4*J2;I (9-G)4.3;I (G-1)4.3;C 04.25 I (FABS(G+T[X]-10)),4.3;D 4.5 04.30 S G=T[X]+2*J2;I (FITR((G-1)/3)-FITR((T[X]-1)/3)),3.5;D 4.5;R 04.50 I (-FABS(B[G]-J3))3.5;S J4=0;S J1=X;S X=9 05.10 S J4=J4+1;F X=1,3,7;S J1=B[X+2];S B[X+2]=B[X];S B[X]=J1 06.10 S N=0;S J4=0;S M=0;S J1=0;I (-YT)6.2;R 06.20 F Z=1,YT;S J2=0;F X=1,9;D 7 06.30 I (-J1)7.9;D 5;S J1=0;I (-M)7.9;S M=1;G 6.2 07.10 S Y=10*Z+X;I (FABS(B[X]-D[Y])),7.2;S X=9;R 07.20 S J2=J2+1;I (9-J2),7.3;R 07.30 S J3=0;S L=Z;S Y=Y-X;S J1=1;F W=1,N[L];D 7.8 07.40 S Z=YT;I (-J3)7.9;S C[K]=0;S J1=0;S N=1;R 07.80 I (C[Y+W]),7.9;S J3=1;S W=N[L] 07.90 R 08.10 S J2=10*L;S J1=0;F X=1,9;S D[J2+X]=B[X];D 9;S N[L]=J1 09.10 I (-FABS(B[X]-1))9.4;S G=X+3;S J3=0;D 9.5 09.20 S G=X+4;S J3=2;I (9-G)9.3;I (FABS(X-3)),9.3;D 9.5 09.30 S G=X+2;I (FITR((G-.5)/3)-FITR((X-.5)/3)),9.4;D 9.5 09.40 R 09.50 I (-FABS(B[G]-J3))9.4;S J1=J1+1;S C[J2+J1]=10*X+G 10.10 D 11;T "YOUR TURN",!!;I (-J)10.25;C 10.11 T "WHAT IS THE PRESENT POSITION OF THE PAWN YOU WANT" 10.12 A " TO MOVE",X,!!;I (-FABS(B[X]-2))10.7;A "TO WHAT" 10.20 A " POSITION DO YOU WANT TO MOVE IT",Y,!!;G 10.3 10.25 A "FROM ",X,!!;I (-FABS(B[X]-2))10.7;A "TO ",Y,!! 10.30 I (Y-1)10.7;I (X-Y-2)10.7,10.4;I (X-Y-4)10.5,10.45,10.7 10.40 I (-FABS(B[Y]-1))10.7;C 10.41 I (FITR((X-1)/3)-FITR((Y-1)/3)),10.7,10.6 10.45 I (-FABS(B[Y]-1))10.7;I (X-7)10.6,10.7,10.6 10.50 I (B[Y]),10.6,10.7 10.60 S B[X]=0;S B[Y]=2;D 11;R 10.70 T "THAT IS AN ILLEGAL MOVE-TRY AGAIN",!!;G 10.11 11.10 S J1=1;S J2=3;I (J),11.15;T "NEW BOARD IS",!;G 11.2 11.15 T "THE BOARD NOW LOOKS LIKE THIS",! 11.20 T !," ";F X=J1,J2;D 11.5 11.30 S J1=J1+3;S J2=J2+3;I (J2-9)11.2,11.2;T !!;R 11.50 I (B[X]-1)11.6,11.7;T "X " 11.60 T "- " 11.70 T "O " 12.20 S J2=FITR(FABS(FRAN()*N[L])-.01)+1 12.30 I (C[J1+J2]),12.2;S K=J1+J2;S X=FITR(C[K]/10) 12.40 S Y=C[K]-X*10;S B[X]=0;S B[Y]=1;I (-N)12.5;R 12.50 F J2=1,N[L];S C[J1+J2]=0 13.10 T "S YT",YT,!;F Z=1,YT;S J1=10*Z;D 14 14.10 T !;F X=1,9;T "S Y",X+J1,"; S D[Y]",D[X+J1],! 14.20 T !,"S Z",Z,"; S N[Z]",N[Z],! 14.30 T !;F X=1,N[Z];T "S Y",X+J1,"; S C[Y]",C[X+J1],!