Home » Archimedes archive » Acorn User » AU 1993-05.adf » !StarInfo/Files/Squiggle1

!StarInfo/Files/Squiggle1

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1993-05.adf
Filename: !StarInfo/Files/Squiggle1
Read OK:
File size: 0EC1 bytes
Load address: FFFFFB44
Exec address: 78BD2E00
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
   10REM     >Squiggle1 (Info12)
   20REM By  Alan Beasley
   30REM     From original game by Barry Wickett
   40REM For 32-bit machines
   50REM (c) BAU May 1993
   60:
   70PROCsetup
   80REPEAT
   90PROCinitialize
  100PROCprompt("Player/Computer to start? Press P or C")
  110char$=FNget("p","c")
  120IF char$="p" THEN player%=1 ELSE player%=2
  130PROCprompt(STRING$(40," "))
  140PROCkey_numbers
  150REPEAT
  160player%=3-player%
  170PROCplay(player%)
  180UNTIL winner%>0
  190score%(winner%)+=1
  200VDU 4
  210COLOUR 1
  220PRINT TAB(3,22); score%(1)
  230PRINT TAB(34,22); score%(2)
  240PROCprompt(name$(winner%)+" wins!  Another game? (Y/N)")
  250again$=FNget("y","n")
  260UNTIL again$="n"
  270MODE12
  280END
  290:
  300DEF PROCplay(pl%)
  310rx%=FNord(x%)
  320ry%=FNord(y%)
  330GCOL 3,3
  340RECTANGLE FILL rx%,ry%,96,96
  350MOVE BY -60,-32
  360IF pl%=1 THEN
  370VDU 67
  380key%=FNcomputer
  390ELSE
  400VDU 80
  410key%=FNplayer
  420ENDIF
  430PROCdraw(FNord(x%),FNord(y%),key%)
  440board%(x%,y%)=key%
  450REPEAT
  460pd%=entrance(board%(x%,y%),pd%)
  470x%+=ix%(pd%)
  480y%+=iy%(pd%)
  490off_board%=x%<1 OR y%<1 OR x%>8 OR y%>8
  500home%=(x%=8 AND y%=9) OR (x%=9 AND y%=8)
  510UNTIL board%(x%,y%)=0 OR off_board%
  520IF home% THEN
  530winner%=pl%
  540ELSE
  550IF off_board% THEN winner%=3-pl%
  560ENDIF
  570ENDPROC
  580:
  590DEF PROCsetup
  600MODE 1
  610PROCreset
  620COLOUR 0,0,100,100
  630COLOUR 1,200,200,200
  640COLOUR 2,0,0,100
  650COLOUR 3,200,0,0
  660DIM board%(9,9),ix%(4),iy%(4),entrance(3,4)
  670DIM name$(2),keys%(2,4,3),score%(2)
  680FOR dir=1 TO 4
  690READ ix%(dir), iy%(dir)
  700NEXT dir
  710FOR piece=1 TO 3
  720FOR entrance=1 TO 4
  730READ entrance(piece,entrance)
  740NEXT entrance
  750NEXT piece
  760name$(1)="Computer"
  770name$(2)="Player"
  780FOR m%=1 TO 2
  790FOR j%=1 TO 4
  800FOR k%=1 TO 3
  810READ keys%(m%,j%,k%)
  820NEXT k%
  830NEXT j%
  840NEXT m%
  850RECTANGLE 96,96,804,804
  860GCOL 0,2
  870RECTANGLE 92,92,812,812
  880FOR piece=1 TO 3
  890px%=FNord(.5+piece*2)
  900py%=-12
  910PROCdraw(px%,py%,piece)
  920NEXT piece
  930VDU5
  940FOR n%=1 TO 2
  950IF n%=1 THEN
  960px%=0: py%=736
  970ELSE
  980px%=976: py%=676
  990ENDIF
 1000str$=name$(n%)+" score"
 1010FOR p%=1 TO LEN(str$)
 1020GCOL 0,1
 1030MOVE px%,(py%-32*p%)
 1040asc%=ASC(MID$(str$,p%,1))
 1050VDU asc%
 1060GCOL 0,3
 1070MOVE BY -36,4
 1080VDU asc%
 1090NEXT p%
 1100NEXT n%
 1110ENDPROC
 1120:
 1130DEF PROCreset
 1140VDU 26
 1150ORIGIN 124,100
 1160ENDPROC
 1170:
 1180DEF FNord(a)=(a*100) AND NOT 3
 1190:
 1200DEF PROCdraw(rx,ry,piece)
 1210VDU 24,rx;ry;rx+96;ry+96;
 1220GCOL 0,1
 1230RECTANGLE FILL rx,ry,96,96
 1240GCOL 0,2
 1250RECTANGLE rx,ry,96,96
 1260GCOL 0,3
 1270FOR ix=0 TO 4 STEP 4
 1280FOR iy=0 TO 4 STEP 4
 1290CASE piece OF
 1300WHEN 1:
 1310CIRCLE rx+ix,ry+iy,50
 1320CIRCLE rx+ix+96,ry+iy+96,50
 1330WHEN 2:
 1340LINE rx+ix,ry+iy+50,rx+ix+100,ry+iy+50
 1350LINE rx+ix+50,ry+iy,rx+ix+50,ry+iy+100
 1360WHEN 3:
 1370CIRCLE rx+ix+96,ry+iy,50
 1380CIRCLE rx+ix,ry+iy+96,51
 1390ENDCASE
 1400NEXT iy
 1410NEXT ix
 1420PROCreset
 1430ENDPROC
 1440:
 1450DATA 0,-1,-1,0,0,1,1,0
 1460DATA 4,3,2,1
 1470DATA 1,2,3,4
 1480DATA 2,1,4,3
 1490DATA 1,2,3
 1500DATA 1,2,3
 1510DATA 3,2,1
 1520DATA 3,2,1
 1530DATA 3,2,1
 1540DATA 3,2,1
 1550DATA 1,2,3
 1560DATA 1,2,3
 1570:
 1580DEF PROCinitialize
 1590board%()=0
 1600board%(1,1)=2: board%(8,8)=2
 1610FOR x=1 TO 8
 1620FOR y=1 TO 8
 1630PROCdraw(FNord(x),FNord(y),board%(x,y))
 1640NEXT y
 1650NEXT x
 1660winner%=0
 1670x%=2: y%=1: pd%=4
 1680ENDPROC
 1690:
 1700DEF PROCprompt(s$)
 1710VDU 4
 1720COLOUR 1
 1730tab%=20-(LEN(s$) DIV 2)
 1740PRINT TAB(tab%,30) s$
 1750VDU 5
 1760ENDPROC
 1770:
 1780DEF PROCkey_numbers
 1790FOR piece=1 TO 3
 1800px%=FNord(.5+piece*2)
 1810py%=-12
 1820GCOL 0,3
 1830MOVE px%+42,py%-32
 1840VDU5,48+piece
 1850GCOL 0,1
 1860MOVE BY -36,4
 1870VDU5,48+piece
 1880NEXT piece
 1890ENDPROC
 1900:
 1910DEF FNsafe(a%,b%,p%,k%)
 1920board%(a%,b%)=k%
 1930REPEAT
 1940p%=entrance(board%(a%,b%),p%)
 1950a%+=ix%(p%)
 1960b%+=iy%(p%)
 1970on_board%=(a%>0 AND a%<9 AND b%>0 AND b%<9)
 1980home%=(a%=8 AND b%=9) OR (a%=9 AND b%=8)
 1990UNTIL board%(a%,b%)=0 OR NOT on_board%
 2000=on_board% OR home%
 2010:
 2020DEF FNget(a$,b$)
 2030REPEAT
 2040g$=CHR$(GET OR 32)
 2050UNTIL g$=a$ OR g$=b$
 2060=g$
 2070:
 2080DEF FNplayer
 2090REPEAT
 2100k%=GET-48
 2110UNTIL k%>=1 AND k%<=3
 2120=k%
 2130:
 2140DEF FNcomputer
 2150PROCpause
 2160IF RND(2)=1 THEN =FNcomp1 ELSE =FNcomp2
 2170:
 2180DEF PROCpause
 2190time%=TIME+50
 2200REPEAT UNTIL TIME=time%
 2210ENDPROC
 2220:
 2230DEF FNcomp1
 2240k%=RND(3)
 2250try%=0
 2260REPEAT
 2270k%+=1
 2280IF k%=4 THEN k%=1
 2290try%+=1
 2300UNTIL FNsafe(x%,y%,pd%,k%) OR try%=3
 2310=k%
 2320:
 2330DEF FNcomp2
 2340try%=0
 2350odd_moves%=(16-x%-y%) MOD 2 = 1
 2360IF odd_moves% THEN m%=1 ELSE m%=2
 2370REPEAT
 2380try%+=1
 2390k%=keys%(m%,pd%,try%)
 2400UNTIL FNsafe(x%,y%,pd%,k%) OR try%=3
 2410=k%

�     >Squiggle1 (Info12)
� By  Alan Beasley
-�     From original game by Barry Wickett
(� For 32-bit machines
2� (c) BAU May 1993
<:
F
�setup
P�
Z�initialize
d5�prompt("Player/Computer to start? Press P or C")
nchar$=�get("p","c")
x'� char$="p" � player%=1 � player%=2
��prompt(�40," "))
��key_numbers
��
�player%=3-player%
��play(player%)
�� winner%>0
�score%(winner%)+=1
�� 4
�� 1
�� �3,22); score%(1)
�� �34,22); score%(2)
�9�prompt(name$(winner%)+" wins!  Another game? (Y/N)")
�again$=�get("y","n")
� again$="n"
�12
�
":
,� �play(pl%)
6rx%=�ord(x%)
@ry%=�ord(y%)
J	� 3,3
Tȓ Ȑ rx%,ry%,96,96
^� BY -60,-32
h
� pl%=1 �
r� 67
|key%=�computer
��
�� 80
�key%=�player
��
�!�draw(�ord(x%),�ord(y%),key%)
�board%(x%,y%)=key%
��
�#pd%=entrance(board%(x%,y%),pd%)
�x%+=ix%(pd%)
�y%+=iy%(pd%)
�(off_board%=x%<1 � y%<1 � x%>8 � y%>8
�'home%=(x%=8 � y%=9) � (x%=9 � y%=8)
�"� board%(x%,y%)=0 � off_board%

� home% �
winner%=pl%
�
& � off_board% � winner%=3-pl%
0�
:�
D:
N� �setup
X� 1
b
�reset
l� 0,0,100,100
v� 1,200,200,200
�� 2,0,0,100
�� 3,200,0,0
�-� board%(9,9),ix%(4),iy%(4),entrance(3,4)
�%� name$(2),keys%(2,4,3),score%(2)
�� dir=1 � 4
�� ix%(dir), iy%(dir)
�	� dir
�� piece=1 � 3
�� entrance=1 � 4
�� entrance(piece,entrance)
�� entrance
�� piece
�name$(1)="Computer"
name$(2)="Player"
� m%=1 � 2
� j%=1 � 4
 � k%=1 � 3
*� keys%(m%,j%,k%)
4� k%
>� j%
H� m%
Rȓ 96,96,804,804
\	� 0,2
fȓ 92,92,812,812
p� piece=1 � 3
zpx%=�ord(.5+piece*2)
�py%=-12
��draw(px%,py%,piece)
�� piece
��5
�� n%=1 � 2
�� n%=1 �
�px%=0: py%=736
��
�px%=976: py%=676
��
�str$=name$(n%)+" score"
�� p%=1 � �(str$)
�	� 0,1
� px%,(py%-32*p%)
asc%=�(�str$,p%,1))

� asc%
$	� 0,3
.� BY -36,4
8
� asc%
B� p%
L� n%
V�
`:
j� �reset
t� 26
~ȑ 124,100
��
�:
�� �ord(a)=(a*100) � � 3
�:
�� �draw(rx,ry,piece)
�� 24,rx;ry;rx+96;ry+96;
�	� 0,1
�ȓ Ȑ rx,ry,96,96
�	� 0,2
�ȓ rx,ry,96,96
�	� 0,3
�� ix=0 � 4 � 4
� iy=0 � 4 � 4

Ȏ piece �
� 1:
ȏ rx+ix,ry+iy,50
(ȏ rx+ix+96,ry+iy+96,50
2� 2:
<'� rx+ix,ry+iy+50,rx+ix+100,ry+iy+50
F'� rx+ix+50,ry+iy,rx+ix+50,ry+iy+100
P� 3:
Zȏ rx+ix+96,ry+iy,50
dȏ rx+ix,ry+iy+96,51
n�
x� iy
�� ix
�
�reset
��
�:
�� 0,-1,-1,0,0,1,1,0
�
� 4,3,2,1
�
� 1,2,3,4
�
� 2,1,4,3
�� 1,2,3
�� 1,2,3
�� 3,2,1
�� 3,2,1
�� 3,2,1
� 3,2,1
� 1,2,3
� 1,2,3
":
,� �initialize
6board%()=0
@ board%(1,1)=2: board%(8,8)=2
J
� x=1 � 8
T
� y=1 � 8
^&�draw(�ord(x),�ord(y),board%(x,y))
h� y
r� x
|
winner%=0
�x%=2: y%=1: pd%=4
��
�:
�� �prompt(s$)
�� 4
�� 1
�tab%=20-(�(s$) � 2)
�� �tab%,30) s$
�� 5
��
�:
�� �key_numbers
�� piece=1 � 3
px%=�ord(.5+piece*2)
py%=-12
	� 0,3
&� px%+42,py%-32
0�5,48+piece
:	� 0,1
D� BY -36,4
N�5,48+piece
X� piece
b�
l:
v� �safe(a%,b%,p%,k%)
�board%(a%,b%)=k%
��
�!p%=entrance(board%(a%,b%),p%)
�a%+=ix%(p%)
�b%+=iy%(p%)
�)on_board%=(a%>0 � a%<9 � b%>0 � b%<9)
�'home%=(a%=8 � b%=9) � (a%=9 � b%=8)
�#� board%(a%,b%)=0 � � on_board%
�=on_board% � home%
�:
�� �get(a$,b$)
��
�g$=�(� � 32)
� g$=a$ � g$=b$
=g$
:
 
� �player
*�
4k%=�-48
>� k%>=1 � k%<=3
H=k%
R:
\� �computer
f
�pause
p � �(2)=1 � =�comp1 � =�comp2
z:
�� �pause
�time%=�+50
�� � �=time%
��
�:
�� �comp1
�k%=�(3)
�
try%=0
��
�	k%+=1
�� k%=4 � k%=1
�try%+=1
�"� �safe(x%,y%,pd%,k%) � try%=3
	=k%
	:
	� �comp2
	$
try%=0
	.!odd_moves%=(16-x%-y%) � 2 = 1
	8� odd_moves% � m%=1 � m%=2
	B�
	Ltry%+=1
	Vk%=keys%(m%,pd%,try%)
	`"� �safe(x%,y%,pd%,k%) � try%=3
	j=k%
�
00000000  0d 00 0a 1d f4 20 20 20  20 20 3e 53 71 75 69 67  |.....     >Squig|
00000010  67 6c 65 31 20 28 49 6e  66 6f 31 32 29 0d 00 14  |gle1 (Info12)...|
00000020  16 f4 20 42 79 20 20 41  6c 61 6e 20 42 65 61 73  |.. By  Alan Beas|
00000030  6c 65 79 0d 00 1e 2d f4  20 20 20 20 20 46 72 6f  |ley...-.     Fro|
00000040  6d 20 6f 72 69 67 69 6e  61 6c 20 67 61 6d 65 20  |m original game |
00000050  62 79 20 42 61 72 72 79  20 57 69 63 6b 65 74 74  |by Barry Wickett|
00000060  0d 00 28 19 f4 20 46 6f  72 20 33 32 2d 62 69 74  |..(.. For 32-bit|
00000070  20 6d 61 63 68 69 6e 65  73 0d 00 32 16 f4 20 28  | machines..2.. (|
00000080  63 29 20 42 41 55 20 4d  61 79 20 31 39 39 33 0d  |c) BAU May 1993.|
00000090  00 3c 05 3a 0d 00 46 0a  f2 73 65 74 75 70 0d 00  |.<.:..F..setup..|
000000a0  50 05 f5 0d 00 5a 0f f2  69 6e 69 74 69 61 6c 69  |P....Z..initiali|
000000b0  7a 65 0d 00 64 35 f2 70  72 6f 6d 70 74 28 22 50  |ze..d5.prompt("P|
000000c0  6c 61 79 65 72 2f 43 6f  6d 70 75 74 65 72 20 74  |layer/Computer t|
000000d0  6f 20 73 74 61 72 74 3f  20 50 72 65 73 73 20 50  |o start? Press P|
000000e0  20 6f 72 20 43 22 29 0d  00 6e 17 63 68 61 72 24  | or C")..n.char$|
000000f0  3d a4 67 65 74 28 22 70  22 2c 22 63 22 29 0d 00  |=.get("p","c")..|
00000100  78 27 e7 20 63 68 61 72  24 3d 22 70 22 20 8c 20  |x'. char$="p" . |
00000110  70 6c 61 79 65 72 25 3d  31 20 8b 20 70 6c 61 79  |player%=1 . play|
00000120  65 72 25 3d 32 0d 00 82  15 f2 70 72 6f 6d 70 74  |er%=2.....prompt|
00000130  28 c4 34 30 2c 22 20 22  29 29 0d 00 8c 10 f2 6b  |(.40," ")).....k|
00000140  65 79 5f 6e 75 6d 62 65  72 73 0d 00 96 05 f5 0d  |ey_numbers......|
00000150  00 a0 15 70 6c 61 79 65  72 25 3d 33 2d 70 6c 61  |...player%=3-pla|
00000160  79 65 72 25 0d 00 aa 12  f2 70 6c 61 79 28 70 6c  |yer%.....play(pl|
00000170  61 79 65 72 25 29 0d 00  b4 0f fd 20 77 69 6e 6e  |ayer%)..... winn|
00000180  65 72 25 3e 30 0d 00 be  16 73 63 6f 72 65 25 28  |er%>0....score%(|
00000190  77 69 6e 6e 65 72 25 29  2b 3d 31 0d 00 c8 07 ef  |winner%)+=1.....|
000001a0  20 34 0d 00 d2 07 fb 20  31 0d 00 dc 17 f1 20 8a  | 4..... 1..... .|
000001b0  33 2c 32 32 29 3b 20 73  63 6f 72 65 25 28 31 29  |3,22); score%(1)|
000001c0  0d 00 e6 18 f1 20 8a 33  34 2c 32 32 29 3b 20 73  |..... .34,22); s|
000001d0  63 6f 72 65 25 28 32 29  0d 00 f0 39 f2 70 72 6f  |core%(2)...9.pro|
000001e0  6d 70 74 28 6e 61 6d 65  24 28 77 69 6e 6e 65 72  |mpt(name$(winner|
000001f0  25 29 2b 22 20 77 69 6e  73 21 20 20 41 6e 6f 74  |%)+" wins!  Anot|
00000200  68 65 72 20 67 61 6d 65  3f 20 28 59 2f 4e 29 22  |her game? (Y/N)"|
00000210  29 0d 00 fa 18 61 67 61  69 6e 24 3d a4 67 65 74  |)....again$=.get|
00000220  28 22 79 22 2c 22 6e 22  29 0d 01 04 10 fd 20 61  |("y","n")..... a|
00000230  67 61 69 6e 24 3d 22 6e  22 0d 01 0e 07 eb 31 32  |gain$="n".....12|
00000240  0d 01 18 05 e0 0d 01 22  05 3a 0d 01 2c 10 dd 20  |.......".:..,.. |
00000250  f2 70 6c 61 79 28 70 6c  25 29 0d 01 36 10 72 78  |.play(pl%)..6.rx|
00000260  25 3d a4 6f 72 64 28 78  25 29 0d 01 40 10 72 79  |%=.ord(x%)..@.ry|
00000270  25 3d a4 6f 72 64 28 79  25 29 0d 01 4a 09 e6 20  |%=.ord(y%)..J.. |
00000280  33 2c 33 0d 01 54 17 c8  93 20 c8 90 20 72 78 25  |3,3..T... .. rx%|
00000290  2c 72 79 25 2c 39 36 2c  39 36 0d 01 5e 10 ec 20  |,ry%,96,96..^.. |
000002a0  42 59 20 2d 36 30 2c 2d  33 32 0d 01 68 0d e7 20  |BY -60,-32..h.. |
000002b0  70 6c 25 3d 31 20 8c 0d  01 72 08 ef 20 36 37 0d  |pl%=1 ...r.. 67.|
000002c0  01 7c 12 6b 65 79 25 3d  a4 63 6f 6d 70 75 74 65  |.|.key%=.compute|
000002d0  72 0d 01 86 05 cc 0d 01  90 08 ef 20 38 30 0d 01  |r.......... 80..|
000002e0  9a 10 6b 65 79 25 3d a4  70 6c 61 79 65 72 0d 01  |..key%=.player..|
000002f0  a4 05 cd 0d 01 ae 21 f2  64 72 61 77 28 a4 6f 72  |......!.draw(.or|
00000300  64 28 78 25 29 2c a4 6f  72 64 28 79 25 29 2c 6b  |d(x%),.ord(y%),k|
00000310  65 79 25 29 0d 01 b8 16  62 6f 61 72 64 25 28 78  |ey%)....board%(x|
00000320  25 2c 79 25 29 3d 6b 65  79 25 0d 01 c2 05 f5 0d  |%,y%)=key%......|
00000330  01 cc 23 70 64 25 3d 65  6e 74 72 61 6e 63 65 28  |..#pd%=entrance(|
00000340  62 6f 61 72 64 25 28 78  25 2c 79 25 29 2c 70 64  |board%(x%,y%),pd|
00000350  25 29 0d 01 d6 10 78 25  2b 3d 69 78 25 28 70 64  |%)....x%+=ix%(pd|
00000360  25 29 0d 01 e0 10 79 25  2b 3d 69 79 25 28 70 64  |%)....y%+=iy%(pd|
00000370  25 29 0d 01 ea 28 6f 66  66 5f 62 6f 61 72 64 25  |%)...(off_board%|
00000380  3d 78 25 3c 31 20 84 20  79 25 3c 31 20 84 20 78  |=x%<1 . y%<1 . x|
00000390  25 3e 38 20 84 20 79 25  3e 38 0d 01 f4 27 68 6f  |%>8 . y%>8...'ho|
000003a0  6d 65 25 3d 28 78 25 3d  38 20 80 20 79 25 3d 39  |me%=(x%=8 . y%=9|
000003b0  29 20 84 20 28 78 25 3d  39 20 80 20 79 25 3d 38  |) . (x%=9 . y%=8|
000003c0  29 0d 01 fe 22 fd 20 62  6f 61 72 64 25 28 78 25  |)...". board%(x%|
000003d0  2c 79 25 29 3d 30 20 84  20 6f 66 66 5f 62 6f 61  |,y%)=0 . off_boa|
000003e0  72 64 25 0d 02 08 0d e7  20 68 6f 6d 65 25 20 8c  |rd%..... home% .|
000003f0  0d 02 12 0f 77 69 6e 6e  65 72 25 3d 70 6c 25 0d  |....winner%=pl%.|
00000400  02 1c 05 cc 0d 02 26 20  e7 20 6f 66 66 5f 62 6f  |......& . off_bo|
00000410  61 72 64 25 20 8c 20 77  69 6e 6e 65 72 25 3d 33  |ard% . winner%=3|
00000420  2d 70 6c 25 0d 02 30 05  cd 0d 02 3a 05 e1 0d 02  |-pl%..0....:....|
00000430  44 05 3a 0d 02 4e 0c dd  20 f2 73 65 74 75 70 0d  |D.:..N.. .setup.|
00000440  02 58 07 eb 20 31 0d 02  62 0a f2 72 65 73 65 74  |.X.. 1..b..reset|
00000450  0d 02 6c 11 fb 20 30 2c  30 2c 31 30 30 2c 31 30  |..l.. 0,0,100,10|
00000460  30 0d 02 76 13 fb 20 31  2c 32 30 30 2c 32 30 30  |0..v.. 1,200,200|
00000470  2c 32 30 30 0d 02 80 0f  fb 20 32 2c 30 2c 30 2c  |,200..... 2,0,0,|
00000480  31 30 30 0d 02 8a 0f fb  20 33 2c 32 30 30 2c 30  |100..... 3,200,0|
00000490  2c 30 0d 02 94 2d de 20  62 6f 61 72 64 25 28 39  |,0...-. board%(9|
000004a0  2c 39 29 2c 69 78 25 28  34 29 2c 69 79 25 28 34  |,9),ix%(4),iy%(4|
000004b0  29 2c 65 6e 74 72 61 6e  63 65 28 33 2c 34 29 0d  |),entrance(3,4).|
000004c0  02 9e 25 de 20 6e 61 6d  65 24 28 32 29 2c 6b 65  |..%. name$(2),ke|
000004d0  79 73 25 28 32 2c 34 2c  33 29 2c 73 63 6f 72 65  |ys%(2,4,3),score|
000004e0  25 28 32 29 0d 02 a8 0f  e3 20 64 69 72 3d 31 20  |%(2)..... dir=1 |
000004f0  b8 20 34 0d 02 b2 18 f3  20 69 78 25 28 64 69 72  |. 4..... ix%(dir|
00000500  29 2c 20 69 79 25 28 64  69 72 29 0d 02 bc 09 ed  |), iy%(dir).....|
00000510  20 64 69 72 0d 02 c6 11  e3 20 70 69 65 63 65 3d  | dir..... piece=|
00000520  31 20 b8 20 33 0d 02 d0  14 e3 20 65 6e 74 72 61  |1 . 3..... entra|
00000530  6e 63 65 3d 31 20 b8 20  34 0d 02 da 1e f3 20 65  |nce=1 . 4..... e|
00000540  6e 74 72 61 6e 63 65 28  70 69 65 63 65 2c 65 6e  |ntrance(piece,en|
00000550  74 72 61 6e 63 65 29 0d  02 e4 0e ed 20 65 6e 74  |trance)..... ent|
00000560  72 61 6e 63 65 0d 02 ee  0b ed 20 70 69 65 63 65  |rance..... piece|
00000570  0d 02 f8 17 6e 61 6d 65  24 28 31 29 3d 22 43 6f  |....name$(1)="Co|
00000580  6d 70 75 74 65 72 22 0d  03 02 15 6e 61 6d 65 24  |mputer"....name$|
00000590  28 32 29 3d 22 50 6c 61  79 65 72 22 0d 03 0c 0e  |(2)="Player"....|
000005a0  e3 20 6d 25 3d 31 20 b8  20 32 0d 03 16 0e e3 20  |. m%=1 . 2..... |
000005b0  6a 25 3d 31 20 b8 20 34  0d 03 20 0e e3 20 6b 25  |j%=1 . 4.. .. k%|
000005c0  3d 31 20 b8 20 33 0d 03  2a 15 f3 20 6b 65 79 73  |=1 . 3..*.. keys|
000005d0  25 28 6d 25 2c 6a 25 2c  6b 25 29 0d 03 34 08 ed  |%(m%,j%,k%)..4..|
000005e0  20 6b 25 0d 03 3e 08 ed  20 6a 25 0d 03 48 08 ed  | k%..>.. j%..H..|
000005f0  20 6d 25 0d 03 52 14 c8  93 20 39 36 2c 39 36 2c  | m%..R... 96,96,|
00000600  38 30 34 2c 38 30 34 0d  03 5c 09 e6 20 30 2c 32  |804,804..\.. 0,2|
00000610  0d 03 66 14 c8 93 20 39  32 2c 39 32 2c 38 31 32  |..f... 92,92,812|
00000620  2c 38 31 32 0d 03 70 11  e3 20 70 69 65 63 65 3d  |,812..p.. piece=|
00000630  31 20 b8 20 33 0d 03 7a  18 70 78 25 3d a4 6f 72  |1 . 3..z.px%=.or|
00000640  64 28 2e 35 2b 70 69 65  63 65 2a 32 29 0d 03 84  |d(.5+piece*2)...|
00000650  0b 70 79 25 3d 2d 31 32  0d 03 8e 18 f2 64 72 61  |.py%=-12.....dra|
00000660  77 28 70 78 25 2c 70 79  25 2c 70 69 65 63 65 29  |w(px%,py%,piece)|
00000670  0d 03 98 0b ed 20 70 69  65 63 65 0d 03 a2 06 ef  |..... piece.....|
00000680  35 0d 03 ac 0e e3 20 6e  25 3d 31 20 b8 20 32 0d  |5..... n%=1 . 2.|
00000690  03 b6 0c e7 20 6e 25 3d  31 20 8c 0d 03 c0 12 70  |.... n%=1 .....p|
000006a0  78 25 3d 30 3a 20 70 79  25 3d 37 33 36 0d 03 ca  |x%=0: py%=736...|
000006b0  05 cc 0d 03 d4 14 70 78  25 3d 39 37 36 3a 20 70  |......px%=976: p|
000006c0  79 25 3d 36 37 36 0d 03  de 05 cd 0d 03 e8 1b 73  |y%=676.........s|
000006d0  74 72 24 3d 6e 61 6d 65  24 28 6e 25 29 2b 22 20  |tr$=name$(n%)+" |
000006e0  73 63 6f 72 65 22 0d 03  f2 14 e3 20 70 25 3d 31  |score"..... p%=1|
000006f0  20 b8 20 a9 28 73 74 72  24 29 0d 03 fc 09 e6 20  | . .(str$)..... |
00000700  30 2c 31 0d 04 06 15 ec  20 70 78 25 2c 28 70 79  |0,1..... px%,(py|
00000710  25 2d 33 32 2a 70 25 29  0d 04 10 17 61 73 63 25  |%-32*p%)....asc%|
00000720  3d 97 28 c1 73 74 72 24  2c 70 25 2c 31 29 29 0d  |=.(.str$,p%,1)).|
00000730  04 1a 0a ef 20 61 73 63  25 0d 04 24 09 e6 20 30  |.... asc%..$.. 0|
00000740  2c 33 0d 04 2e 0e ec 20  42 59 20 2d 33 36 2c 34  |,3..... BY -36,4|
00000750  0d 04 38 0a ef 20 61 73  63 25 0d 04 42 08 ed 20  |..8.. asc%..B.. |
00000760  70 25 0d 04 4c 08 ed 20  6e 25 0d 04 56 05 e1 0d  |p%..L.. n%..V...|
00000770  04 60 05 3a 0d 04 6a 0c  dd 20 f2 72 65 73 65 74  |.`.:..j.. .reset|
00000780  0d 04 74 08 ef 20 32 36  0d 04 7e 0e c8 91 20 31  |..t.. 26..~... 1|
00000790  32 34 2c 31 30 30 0d 04  88 05 e1 0d 04 92 05 3a  |24,100.........:|
000007a0  0d 04 9c 1b dd 20 a4 6f  72 64 28 61 29 3d 28 61  |..... .ord(a)=(a|
000007b0  2a 31 30 30 29 20 80 20  ac 20 33 0d 04 a6 05 3a  |*100) . . 3....:|
000007c0  0d 04 b0 18 dd 20 f2 64  72 61 77 28 72 78 2c 72  |..... .draw(rx,r|
000007d0  79 2c 70 69 65 63 65 29  0d 04 ba 1b ef 20 32 34  |y,piece)..... 24|
000007e0  2c 72 78 3b 72 79 3b 72  78 2b 39 36 3b 72 79 2b  |,rx;ry;rx+96;ry+|
000007f0  39 36 3b 0d 04 c4 09 e6  20 30 2c 31 0d 04 ce 15  |96;..... 0,1....|
00000800  c8 93 20 c8 90 20 72 78  2c 72 79 2c 39 36 2c 39  |.. .. rx,ry,96,9|
00000810  36 0d 04 d8 09 e6 20 30  2c 32 0d 04 e2 12 c8 93  |6..... 0,2......|
00000820  20 72 78 2c 72 79 2c 39  36 2c 39 36 0d 04 ec 09  | rx,ry,96,96....|
00000830  e6 20 30 2c 33 0d 04 f6  12 e3 20 69 78 3d 30 20  |. 0,3..... ix=0 |
00000840  b8 20 34 20 88 20 34 0d  05 00 12 e3 20 69 79 3d  |. 4 . 4..... iy=|
00000850  30 20 b8 20 34 20 88 20  34 0d 05 0a 0e c8 8e 20  |0 . 4 . 4...... |
00000860  70 69 65 63 65 20 ca 0d  05 14 08 c9 20 31 3a 0d  |piece ...... 1:.|
00000870  05 1e 15 c8 8f 20 72 78  2b 69 78 2c 72 79 2b 69  |..... rx+ix,ry+i|
00000880  79 2c 35 30 0d 05 28 1b  c8 8f 20 72 78 2b 69 78  |y,50..(... rx+ix|
00000890  2b 39 36 2c 72 79 2b 69  79 2b 39 36 2c 35 30 0d  |+96,ry+iy+96,50.|
000008a0  05 32 08 c9 20 32 3a 0d  05 3c 27 86 20 72 78 2b  |.2.. 2:..<'. rx+|
000008b0  69 78 2c 72 79 2b 69 79  2b 35 30 2c 72 78 2b 69  |ix,ry+iy+50,rx+i|
000008c0  78 2b 31 30 30 2c 72 79  2b 69 79 2b 35 30 0d 05  |x+100,ry+iy+50..|
000008d0  46 27 86 20 72 78 2b 69  78 2b 35 30 2c 72 79 2b  |F'. rx+ix+50,ry+|
000008e0  69 79 2c 72 78 2b 69 78  2b 35 30 2c 72 79 2b 69  |iy,rx+ix+50,ry+i|
000008f0  79 2b 31 30 30 0d 05 50  08 c9 20 33 3a 0d 05 5a  |y+100..P.. 3:..Z|
00000900  18 c8 8f 20 72 78 2b 69  78 2b 39 36 2c 72 79 2b  |... rx+ix+96,ry+|
00000910  69 79 2c 35 30 0d 05 64  18 c8 8f 20 72 78 2b 69  |iy,50..d... rx+i|
00000920  78 2c 72 79 2b 69 79 2b  39 36 2c 35 31 0d 05 6e  |x,ry+iy+96,51..n|
00000930  05 cb 0d 05 78 08 ed 20  69 79 0d 05 82 08 ed 20  |....x.. iy..... |
00000940  69 78 0d 05 8c 0a f2 72  65 73 65 74 0d 05 96 05  |ix.....reset....|
00000950  e1 0d 05 a0 05 3a 0d 05  aa 17 dc 20 30 2c 2d 31  |.....:..... 0,-1|
00000960  2c 2d 31 2c 30 2c 30 2c  31 2c 31 2c 30 0d 05 b4  |,-1,0,0,1,1,0...|
00000970  0d dc 20 34 2c 33 2c 32  2c 31 0d 05 be 0d dc 20  |.. 4,3,2,1..... |
00000980  31 2c 32 2c 33 2c 34 0d  05 c8 0d dc 20 32 2c 31  |1,2,3,4..... 2,1|
00000990  2c 34 2c 33 0d 05 d2 0b  dc 20 31 2c 32 2c 33 0d  |,4,3..... 1,2,3.|
000009a0  05 dc 0b dc 20 31 2c 32  2c 33 0d 05 e6 0b dc 20  |.... 1,2,3..... |
000009b0  33 2c 32 2c 31 0d 05 f0  0b dc 20 33 2c 32 2c 31  |3,2,1..... 3,2,1|
000009c0  0d 05 fa 0b dc 20 33 2c  32 2c 31 0d 06 04 0b dc  |..... 3,2,1.....|
000009d0  20 33 2c 32 2c 31 0d 06  0e 0b dc 20 31 2c 32 2c  | 3,2,1..... 1,2,|
000009e0  33 0d 06 18 0b dc 20 31  2c 32 2c 33 0d 06 22 05  |3..... 1,2,3..".|
000009f0  3a 0d 06 2c 11 dd 20 f2  69 6e 69 74 69 61 6c 69  |:..,.. .initiali|
00000a00  7a 65 0d 06 36 0e 62 6f  61 72 64 25 28 29 3d 30  |ze..6.board%()=0|
00000a10  0d 06 40 20 62 6f 61 72  64 25 28 31 2c 31 29 3d  |..@ board%(1,1)=|
00000a20  32 3a 20 62 6f 61 72 64  25 28 38 2c 38 29 3d 32  |2: board%(8,8)=2|
00000a30  0d 06 4a 0d e3 20 78 3d  31 20 b8 20 38 0d 06 54  |..J.. x=1 . 8..T|
00000a40  0d e3 20 79 3d 31 20 b8  20 38 0d 06 5e 26 f2 64  |.. y=1 . 8..^&.d|
00000a50  72 61 77 28 a4 6f 72 64  28 78 29 2c a4 6f 72 64  |raw(.ord(x),.ord|
00000a60  28 79 29 2c 62 6f 61 72  64 25 28 78 2c 79 29 29  |(y),board%(x,y))|
00000a70  0d 06 68 07 ed 20 79 0d  06 72 07 ed 20 78 0d 06  |..h.. y..r.. x..|
00000a80  7c 0d 77 69 6e 6e 65 72  25 3d 30 0d 06 86 15 78  ||.winner%=0....x|
00000a90  25 3d 32 3a 20 79 25 3d  31 3a 20 70 64 25 3d 34  |%=2: y%=1: pd%=4|
00000aa0  0d 06 90 05 e1 0d 06 9a  05 3a 0d 06 a4 11 dd 20  |.........:..... |
00000ab0  f2 70 72 6f 6d 70 74 28  73 24 29 0d 06 ae 07 ef  |.prompt(s$).....|
00000ac0  20 34 0d 06 b8 07 fb 20  31 0d 06 c2 17 74 61 62  | 4..... 1....tab|
00000ad0  25 3d 32 30 2d 28 a9 28  73 24 29 20 81 20 32 29  |%=20-(.(s$) . 2)|
00000ae0  0d 06 cc 12 f1 20 8a 74  61 62 25 2c 33 30 29 20  |..... .tab%,30) |
00000af0  73 24 0d 06 d6 07 ef 20  35 0d 06 e0 05 e1 0d 06  |s$..... 5.......|
00000b00  ea 05 3a 0d 06 f4 12 dd  20 f2 6b 65 79 5f 6e 75  |..:..... .key_nu|
00000b10  6d 62 65 72 73 0d 06 fe  11 e3 20 70 69 65 63 65  |mbers..... piece|
00000b20  3d 31 20 b8 20 33 0d 07  08 18 70 78 25 3d a4 6f  |=1 . 3....px%=.o|
00000b30  72 64 28 2e 35 2b 70 69  65 63 65 2a 32 29 0d 07  |rd(.5+piece*2)..|
00000b40  12 0b 70 79 25 3d 2d 31  32 0d 07 1c 09 e6 20 30  |..py%=-12..... 0|
00000b50  2c 33 0d 07 26 13 ec 20  70 78 25 2b 34 32 2c 70  |,3..&.. px%+42,p|
00000b60  79 25 2d 33 32 0d 07 30  0f ef 35 2c 34 38 2b 70  |y%-32..0..5,48+p|
00000b70  69 65 63 65 0d 07 3a 09  e6 20 30 2c 31 0d 07 44  |iece..:.. 0,1..D|
00000b80  0e ec 20 42 59 20 2d 33  36 2c 34 0d 07 4e 0f ef  |.. BY -36,4..N..|
00000b90  35 2c 34 38 2b 70 69 65  63 65 0d 07 58 0b ed 20  |5,48+piece..X.. |
00000ba0  70 69 65 63 65 0d 07 62  05 e1 0d 07 6c 05 3a 0d  |piece..b....l.:.|
00000bb0  07 76 18 dd 20 a4 73 61  66 65 28 61 25 2c 62 25  |.v.. .safe(a%,b%|
00000bc0  2c 70 25 2c 6b 25 29 0d  07 80 14 62 6f 61 72 64  |,p%,k%)....board|
00000bd0  25 28 61 25 2c 62 25 29  3d 6b 25 0d 07 8a 05 f5  |%(a%,b%)=k%.....|
00000be0  0d 07 94 21 70 25 3d 65  6e 74 72 61 6e 63 65 28  |...!p%=entrance(|
00000bf0  62 6f 61 72 64 25 28 61  25 2c 62 25 29 2c 70 25  |board%(a%,b%),p%|
00000c00  29 0d 07 9e 0f 61 25 2b  3d 69 78 25 28 70 25 29  |)....a%+=ix%(p%)|
00000c10  0d 07 a8 0f 62 25 2b 3d  69 79 25 28 70 25 29 0d  |....b%+=iy%(p%).|
00000c20  07 b2 29 6f 6e 5f 62 6f  61 72 64 25 3d 28 61 25  |..)on_board%=(a%|
00000c30  3e 30 20 80 20 61 25 3c  39 20 80 20 62 25 3e 30  |>0 . a%<9 . b%>0|
00000c40  20 80 20 62 25 3c 39 29  0d 07 bc 27 68 6f 6d 65  | . b%<9)...'home|
00000c50  25 3d 28 61 25 3d 38 20  80 20 62 25 3d 39 29 20  |%=(a%=8 . b%=9) |
00000c60  84 20 28 61 25 3d 39 20  80 20 62 25 3d 38 29 0d  |. (a%=9 . b%=8).|
00000c70  07 c6 23 fd 20 62 6f 61  72 64 25 28 61 25 2c 62  |..#. board%(a%,b|
00000c80  25 29 3d 30 20 84 20 ac  20 6f 6e 5f 62 6f 61 72  |%)=0 . . on_boar|
00000c90  64 25 0d 07 d0 16 3d 6f  6e 5f 62 6f 61 72 64 25  |d%....=on_board%|
00000ca0  20 84 20 68 6f 6d 65 25  0d 07 da 05 3a 0d 07 e4  | . home%....:...|
00000cb0  11 dd 20 a4 67 65 74 28  61 24 2c 62 24 29 0d 07  |.. .get(a$,b$)..|
00000cc0  ee 05 f5 0d 07 f8 10 67  24 3d bd 28 a5 20 84 20  |.......g$=.(. . |
00000cd0  33 32 29 0d 08 02 13 fd  20 67 24 3d 61 24 20 84  |32)..... g$=a$ .|
00000ce0  20 67 24 3d 62 24 0d 08  0c 07 3d 67 24 0d 08 16  | g$=b$....=g$...|
00000cf0  05 3a 0d 08 20 0d dd 20  a4 70 6c 61 79 65 72 0d  |.:.. .. .player.|
00000d00  08 2a 05 f5 0d 08 34 0b  6b 25 3d a5 2d 34 38 0d  |.*....4.k%=.-48.|
00000d10  08 3e 13 fd 20 6b 25 3e  3d 31 20 80 20 6b 25 3c  |.>.. k%>=1 . k%<|
00000d20  3d 33 0d 08 48 07 3d 6b  25 0d 08 52 05 3a 0d 08  |=3..H.=k%..R.:..|
00000d30  5c 0f dd 20 a4 63 6f 6d  70 75 74 65 72 0d 08 66  |\.. .computer..f|
00000d40  0a f2 70 61 75 73 65 0d  08 70 20 e7 20 b3 28 32  |..pause..p . .(2|
00000d50  29 3d 31 20 8c 20 3d a4  63 6f 6d 70 31 20 8b 20  |)=1 . =.comp1 . |
00000d60  3d a4 63 6f 6d 70 32 0d  08 7a 05 3a 0d 08 84 0c  |=.comp2..z.:....|
00000d70  dd 20 f2 70 61 75 73 65  0d 08 8e 0e 74 69 6d 65  |. .pause....time|
00000d80  25 3d 91 2b 35 30 0d 08  98 0f f5 20 fd 20 91 3d  |%=.+50..... . .=|
00000d90  74 69 6d 65 25 0d 08 a2  05 e1 0d 08 ac 05 3a 0d  |time%.........:.|
00000da0  08 b6 0c dd 20 a4 63 6f  6d 70 31 0d 08 c0 0b 6b  |.... .comp1....k|
00000db0  25 3d b3 28 33 29 0d 08  ca 0a 74 72 79 25 3d 30  |%=.(3)....try%=0|
00000dc0  0d 08 d4 05 f5 0d 08 de  09 6b 25 2b 3d 31 0d 08  |.........k%+=1..|
00000dd0  e8 11 e7 20 6b 25 3d 34  20 8c 20 6b 25 3d 31 0d  |... k%=4 . k%=1.|
00000de0  08 f2 0b 74 72 79 25 2b  3d 31 0d 08 fc 22 fd 20  |...try%+=1...". |
00000df0  a4 73 61 66 65 28 78 25  2c 79 25 2c 70 64 25 2c  |.safe(x%,y%,pd%,|
00000e00  6b 25 29 20 84 20 74 72  79 25 3d 33 0d 09 06 07  |k%) . try%=3....|
00000e10  3d 6b 25 0d 09 10 05 3a  0d 09 1a 0c dd 20 a4 63  |=k%....:..... .c|
00000e20  6f 6d 70 32 0d 09 24 0a  74 72 79 25 3d 30 0d 09  |omp2..$.try%=0..|
00000e30  2e 21 6f 64 64 5f 6d 6f  76 65 73 25 3d 28 31 36  |.!odd_moves%=(16|
00000e40  2d 78 25 2d 79 25 29 20  83 20 32 20 3d 20 31 0d  |-x%-y%) . 2 = 1.|
00000e50  09 38 1e e7 20 6f 64 64  5f 6d 6f 76 65 73 25 20  |.8.. odd_moves% |
00000e60  8c 20 6d 25 3d 31 20 8b  20 6d 25 3d 32 0d 09 42  |. m%=1 . m%=2..B|
00000e70  05 f5 0d 09 4c 0b 74 72  79 25 2b 3d 31 0d 09 56  |....L.try%+=1..V|
00000e80  19 6b 25 3d 6b 65 79 73  25 28 6d 25 2c 70 64 25  |.k%=keys%(m%,pd%|
00000e90  2c 74 72 79 25 29 0d 09  60 22 fd 20 a4 73 61 66  |,try%)..`". .saf|
00000ea0  65 28 78 25 2c 79 25 2c  70 64 25 2c 6b 25 29 20  |e(x%,y%,pd%,k%) |
00000eb0  84 20 74 72 79 25 3d 33  0d 09 6a 07 3d 6b 25 0d  |. try%=3..j.=k%.|
00000ec0  ff                                                |.|
00000ec1