1 CLS:DIMA$(16),X,Y,PX,PY,XV,YV,YY,MV,BC,MC,TB,TT,ML,TW,SK,WN,P,C,Z,I,S,R,N,F 5 DIMB$,I$,SP$,PR$,NM$,PL$,BX$,BF$ 10 GOSUB900 20 GOSUB800:LV=LV+1:IFLV>TWTHEN400 90 GOSUB1000:GOSUB1100 100 FORMV=1TO64000:PRINT@((PY-I)*TT)+(PX-I),PL$; 110 I$=INKEY$:IFI$=""THEN110 120 IFI$="W"THENIFMID$(A$(PY-I),PX,I)<>NM$THENYV=-1:GOTO160 130 IFI$="Z"THENIFMID$(A$(PY+I),PX,I)<>NM$THENYV=1:GOTO160 140 IFI$="A"THENIFMID$(A$(PY),PX-I,I)<>NM$THENXV=-1:GOTO160 145 IFI$="S"THENIFMID$(A$(PY),PX+I,I)<>NM$THENXV=1:GOTO160 150 IFI$="R"THENGOSUB800:GOSUB1100 151 IFI$="C"THENMV=64000:SK=1:GOTO190 155 GOTO110 160 P=PEEK(MC+((PY-I+YV)*TT)+(PX-I+XV)):IFP=NORP=FTHENGOSUB200 170 IFMID$(A$(PY),PX,I)=PR$THENPRINT@((PY-I)*TT)+(PX-I),PR$;:GOTO180 175 PRINT@((PY-I)*TT)+(PX-I),SP$; 180 PY=PY+YV:PX=PX+XV:YV=Z:XV=Z:TM=TM+I:PRINT@ML,TM; 190 NEXT:GOTO20 200 P=PEEK(MC+((PY-I+YV+YV)*TT)+(PX-I+XV+XV)) 210 IFP=STHENGOSUB350:GOTO290 220 IFP=RTHENGOSUB300:GOTO290 230 YV=Z:XV=Z 290 RETURN 299 REM BOX IS ON A PAD 300 PRINT@((PY-I+YV+YV)*TT)+(PX-I+XV+XV),BF$; 310 IFMID$(A$(PY+YV),PX+XV,I)<>PR$THEN BC=BC+I:IFBC=TBTHENMV=64000:WN=1 320 RETURN 350 PRINT@((PY-I+YV+YV)*TT)+(PX-I+XV+XV),BX$; 360 IFMID$(A$(PY+YV),PX+XV,I)=PR$ANDMID$(A$(PY+YV+YV),PX+XV+XV,I)=SP$THEN BC=BC-I 370 RETURN 400 PRINT@((PY-1)*TT)+(PX-1),PL$; 410 IFSK=1THEN425 415 PRINT@150,"YOU";:PRINT@182,"COMPLETED";:SOUND 200,2 420 PRINT@214,"ALL THE";:PRINT@246,"LEVELS!";:SOUND 225,2 425 PRINT@278,"TRY AGAIN?"; 430 I$=INKEY$:IFI$=""THEN430 435 IFI$="Y"THENRUN 440 IFI$="N"THENEND 450 GOTO430 799 REM NEW LEVEL VARIABLES 800 BC=0:MV=0 810 IFWN=0THEN890 820 PRINT@150,"LEVEL";:PRINT@182,"COMPLETED"; 830 SOUND170,9:SOUND159,3:SOUND10,3:SOUND159,9:SOUND147,13 840 WN=0 890 RETURN 899 REM START VARIABLES 900 MC=16384:LV=0:MV=0:TM=0:TT=32:Z=0:I=1:ML=118:S=96:R=110:N=79:F=15:SK=0:WN=0 910 TW=16:REM ** THIS IS THE # OF LEVELS ** 920 SP$=" ":PR$=".":NM$="#":PL$="^":BX$="O":BF$="o" 990 RETURN 1000 YY=0 1010 YY=YY+1:READ A$(YY):IFRIGHT$(A$(YY),1)<>"*"THEN1010 1020 C=RND(7)-1:RETURN 1100 CLS:TB=0:FORY=1TOYY 1105 FORX=1TOLEN(A$(Y)):B$=MID$(A$(Y),X,I) 1110 IFB$="#"THENPRINTCHR$(159+(16*C));:GOTO1150 1120 IFB$="$"THENPRINTBX$;:GOTO1150 1130 IFB$="."THENPRINTPR$;:TB=TB+I:GOTO1150 1135 IFB$="@"THENPRINTPL$;:PX=X:PY=Y:GOTO1150 1140 PRINTSP$; 1150 NEXT:IFY<16THENPRINT 1155 NEXT 1160 PRINT@22,"LEVEL";LV; 1170 PRINT@54,"BOXES";TB; 1180 PRINT@86,"MOVES";:PRINT@ML,TM; 1185 PRINT@342,"sokoban"; 1186 PRINT@342+32,"VER 1.1"; 1187 PRINT@342+64," JIM G."; 1190 RETURN 2000 DATA" #####" 2020 DATA" # #" 2030 DATA" #$ #" 2040 DATA" ### $##" 2050 DATA" # $ $ #" 2060 DATA"### # ## # ######" 2070 DATA"# # ## ##### ..#" 2080 DATA"# $ $ ..#" 2085 DATA"##### ### #@## ..#" 2087 DATA" # #########" 2090 DATA" #######*" 2100 DATA"############" 2110 DATA"#.. # ###" 2120 DATA"#.. # $ $ #" 2130 DATA"#.. #$#### #" 2140 DATA"#.. @ ## #" 2150 DATA"#.. # # $ ##" 2160 DATA"###### ##$ $ #" 2170 DATA" # $ $ $ $ #" 2180 DATA" # # #" 2185 DATA" ############*" 2200 DATA" ########" 2205 DATA" # @#" 2210 DATA" # $#$ ##" 2220 DATA" # $ $#" 2230 DATA" ##$ $ #" 2235 DATA"######### $ # ###" 2240 DATA"#.... ## $ $ #" 2245 DATA"##... $ $ #" 2250 DATA"#.... ##########" 2255 DATA"########*" 2310 DATA" ########" 2315 DATA" # ....#" 2320 DATA"############ ....#" 2325 DATA"# # $ $ ....#" 2330 DATA"# $$$#$ $ # ....#" 2335 DATA"# $ $ # ....#" 2340 DATA"# $$ #$ $ $########" 2345 DATA"# $ # #" 2350 DATA"## #########" 2355 DATA"# # ##" 2360 DATA"# $ ##" 2365 DATA"# $$#$$ @#" 2370 DATA"# # ##" 2375 DATA"###########*" 2410 DATA" #####" 2415 DATA" # #####" 2420 DATA" # #$## #" 2425 DATA" # $ #" 2430 DATA"######### ### #" 2435 DATA"#.... ## $ $###" 2440 DATA"#.... $ $$ ##" 2445 DATA"#.... ##$ $ @#" 2450 DATA"######### $ ##" 2455 DATA" # $ $ #" 2460 DATA" ### ## #" 2465 DATA" # #" 2470 DATA" ######*" 2500 DATA"###### ###" 2510 DATA"#.. # ##@##" 2515 DATA"#.. ### #" 2520 DATA"#.. $$ #" 2525 DATA"#.. # # $ #" 2530 DATA"#..### # $ #" 2535 DATA"#### $ #$ #" 2540 DATA" # $# $ #" 2545 DATA" # $ $ #" 2550 DATA" # ## #" 2555 DATA" #########*" 2600 DATA" #####" 2610 DATA" ####### ##" 2615 DATA"## # @## $$ #" 2620 DATA"# $ #" 2625 DATA"# $ ### #" 2630 DATA"### #####$###" 2635 DATA"# $ ### ..#" 2640 DATA"# $ $ $ ...#" 2645 DATA"# ###...#" 2650 DATA"# $$ # #...#" 2655 DATA"# ### #####" 2660 DATA"####*" 2700 DATA" ####" 2710 DATA" # ###########" 2715 DATA" # $ $ $ #" 2720 DATA" # $# $ # $ #" 2725 DATA" # $ $ # #" 2730 DATA"### $# # #### #" 2735 DATA"#@#$ $ $ ## #" 2740 DATA"# $ #$# # #" 2745 DATA"# $ $ $ $ #" 2750 DATA"##### #########" 2755 DATA" # #" 2760 DATA" # #" 2765 DATA" #......#" 2770 DATA" #......#" 2775 DATA" #......#" 2780 DATA" ########*" 2800 DATA" #######" 2810 DATA" # ...#" 2815 DATA" ##### ...#" 2820 DATA" # . .#" 2825 DATA" # ## ...#" 2830 DATA" ## ## ...#" 2835 DATA" ### ########" 2840 DATA" # $$$ ##" 2845 DATA" ##### $ $ #####" 2850 DATA"## #$ $ # #" 2855 DATA"#@ $ $ $ $ #" 2860 DATA"###### $$ $ #####" 2865 DATA" # #" 2870 DATA" ########*" 2910 DATA" ### #############" 2915 DATA"##@#### # #" 2920 DATA"# $$ $$ $ $ ...#" 2925 DATA"# $$$# $ #...#" 2930 DATA"# $ # $$ $$ #...#" 2935 DATA"### # $ #...#" 2940 DATA"# # $ $ $ #...#" 2945 DATA"# ###### ###...#" 2950 DATA"## # # $ $ #...#" 2955 DATA"# ## # $$ $ $##..#" 2960 DATA"# ..# # $ #.#" 2965 DATA"# ..# # $$$ $$$ #.#" 2970 DATA"##### # # #.#" 2975 DATA" # ######### #.#" 2980 DATA" # #.#" 2985 DATA" ###############*" 3000 DATA" ####" 3010 DATA" #### # #" 3015 DATA" ### @###$ #" 3020 DATA" ## $ #" 3025 DATA" ## $ $$## ##" 3030 DATA" # #$## #" 3035 DATA" # # $ $$ # ###" 3040 DATA" # $ # # $ #####" 3045 DATA"#### # $$ # #" 3050 DATA"#### ## $ #" 3055 DATA"#. ### ########" 3060 DATA"#.. ..# ####" 3065 DATA"#...#.#" 3070 DATA"#.....#" 3075 DATA"#######*" 3100 DATA"################" 3110 DATA"# #" 3115 DATA"# # ###### #" 3120 DATA"# # $ $ $ $# #" 3125 DATA"# # $@$ ## ##" 3130 DATA"# # $ $ $###...#" 3135 DATA"# # $ $ ##...#" 3140 DATA"# ###$$$ $ ##...#" 3145 DATA"# # ## ##...#" 3150 DATA"##### ## ##...#" 3155 DATA" ##### ###" 3160 DATA" # #" 3165 DATA" #######*" 3200 DATA" #########" 3210 DATA" ## ## #####" 3215 DATA"### # # ###" 3220 DATA"# $ #$ # # ... #" 3225 DATA"# # $#@$## # #.#. #" 3230 DATA"# # #$ # . . #" 3235 DATA"# $ $ # # #.#. #" 3240 DATA"# ## ##$ $ . . #" 3245 DATA"# $ # # #$#.#. #" 3250 DATA"## $ $ $ $... #" 3255 DATA" #$ ###### ## #" 3260 DATA" # # ##########" 3265 DATA" ####*" 3300 DATA" #######" 3310 DATA" ####### #" 3315 DATA" # # $@$ #" 3320 DATA" #$$ # #########" 3325 DATA" # ###......## #" 3330 DATA" # $......## # #" 3335 DATA" # ###...... #" 3340 DATA"## #### ### #$##" 3345 DATA"# #$ # $ # #" 3350 DATA"# $ $$$ # $## #" 3355 DATA"# $ $ ###$$ # #" 3360 DATA"##### $ # #" 3365 DATA" ### ### # #" 3370 DATA" # # #" 3375 DATA" ######## #" 3380 DATA" ####*" 3400 DATA" ########" 3410 DATA" # # #" 3415 DATA" # $ #" 3420 DATA" ### #$ ####" 3425 DATA" # $ ##$ #" 3430 DATA" # # @ $ # $#" 3435 DATA" # # $ ####" 3440 DATA" ## ####$## #" 3445 DATA" # $#.....# # #" 3450 DATA" # $..**. $# ###" 3455 DATA"## #.....# #" 3460 DATA"# ### #######" 3465 DATA"# $$ # #" 3470 DATA"# # #" 3475 DATA"###### #" 3480 DATA" #####*" 3500 DATA"#####" 3510 DATA"# ##" 3515 DATA"# # ####" 3520 DATA"# $ #### #" 3525 DATA"# $$ $ $#" 3530 DATA"###@ #$ ##" 3535 DATA" # ## $ $ ##" 3540 DATA" # $ ## ## .#" 3545 DATA" # #$##$ #.#" 3550 DATA" ### $..##.#" 3555 DATA" # #.*...#" 3560 DATA" # $$ #.....#" 3565 DATA" # #########" 3570 DATA" # #" 3575 DATA" ####*"