15 puzzle game: Difference between revisions
Content added Content deleted
(Applesoft BASIC) |
|||
Line 3,238: | Line 3,238: | ||
=={{header|BASIC}}== |
=={{header|BASIC}}== |
||
==={{header|Applesoft BASIC}}=== |
|||
<syntaxhighlight lang="basic"> 100 GOSUB 500INITIALIZE |
|||
110 FOR Q = 1 TO 1 |
|||
120 IF I <> X OR J <> Y THEN GOSUB 200MOVE |
|||
130 ON W GOSUB 330,450 |
|||
140 LET I = K(0, K) + X |
|||
150 LET J = K(1, K) + Y |
|||
160 LET Q = K(2, K) OR W = 3 |
|||
170 NEXT Q |
|||
180 VTAB T + 3 |
|||
190 END |
|||
REM MOVE |
|||
200 IF I < 0 THEN RETURN |
|||
210 IF I > 3 THEN RETURN |
|||
220 IF J < 0 THEN RETURN |
|||
230 IF J > 3 THEN RETURN |
|||
240 LET M = (I + J * 4) * 3 |
|||
250 LET N = (X + Y * 4) * 3 |
|||
260 IF N > M GOTO 290SWAP |
|||
270 LET N = M |
|||
280 LET M = (X + Y * 4) * 3 |
|||
REM SWAP |
|||
290 LET A$ = MID$(A$, 1, M) + MID$(A$, N + 1, 2) + MID$(A$,M + 3, N - M - 2) + MID$(A$, M + 1, 2) + MID$(A$, N + 3) |
|||
300 LET X = I |
|||
310 LET Y = J |
|||
320 ON W GOTO 440,400 |
|||
REM RANDOM MOVE |
|||
330 VTAB T + 3 |
|||
340 HTAB 2 |
|||
350 PRINT MID$(S$, S + 1, 10); |
|||
360 LET S = NOT S |
|||
370 LET K = INT(RND(1) * 4) + 1 |
|||
380 IF PEEK(49152) < 128 OR A$ = W$ THEN RETURN |
|||
390 LET K = PEEK(49168) * 0 |
|||
REM SHOW |
|||
400 VTAB T |
|||
410 HTAB 1 |
|||
420 PRINT A$; |
|||
430 LET W = (A$ = W$) + 2 |
|||
REM DON'T SHOW |
|||
440 RETURN |
|||
REM GET KEY |
|||
450 VTAB T + Y |
|||
460 HTAB X * 3 + 2 |
|||
470 GET K$ |
|||
480 LET K = ASC (K$) |
|||
490 RETURN |
|||
REM INITIALIZE |
|||
500 PRINT " 15-PUZZLE" |
|||
REM KEYBOARD |
|||
REM ARROW KEYS TWO HANDED CLASSIC T REVERSE T SEQUENCED |
|||
REM ^K A I G ^C |
|||
REM ^H ^J ^U , Z . J K L H T F ^B ^D ^A |
|||
REM RIGHT , J H ^A |
|||
510 DATA8,44,74,106,72,104,1 |
|||
REM LEFT . L F ^B |
|||
520 DATA21,46,76,108,70,102,2 |
|||
REM DOWN A I G ^C |
|||
530 DATA11,65,97,73,105,71,103,3 |
|||
REM UP Z K T ^D |
|||
540 DATA10,90,122,75,107,84,116,4 |
|||
REM QUIT ^Q ESC |
|||
550 DATA0,17,27,0 |
|||
560 DIM K(2,127) |
|||
570 FOR V = 0 TO 2 |
|||
580 FOR D = - 1 TO 1 STEP 2 |
|||
590 FOR R = 1 TO 1 |
|||
600 READ K |
|||
610 LET K(V,K) = D |
|||
620 LET R = K < 5 |
|||
630 NEXT R,D,V |
|||
640 LET A$ = " 1 2 3 4" |
|||
650 LET M$ = CHR$ (13) |
|||
660 LET L$ = " 5 6 7 8" |
|||
670 LET A$ = A$ + M$ + L$ |
|||
680 LET L$ = " 9 10 11 12" |
|||
690 LET A$ = A$ + M$ + L$ |
|||
700 LET L$ = "13 14 15 " |
|||
710 LET A$ = A$ + M$ + L$ |
|||
720 LET W$ = A$ |
|||
730 DATA3,3,3,3,1,0 |
|||
740 READ X,Y,I,J,W,k(2, 0) |
|||
750 PRINT "PRESS A KEY" |
|||
760 PRINT " TO STOP" |
|||
770 LET S$ = " SHUFFLING " |
|||
780 LET T = PEEK(37) - 2 |
|||
790 RETURN</syntaxhighlight> |
|||
==={{header|Commodore BASIC}}=== |
==={{header|Commodore BASIC}}=== |
||
<syntaxhighlight lang="basic">10 REM 15-PUZZLE GAME |
<syntaxhighlight lang="basic">10 REM 15-PUZZLE GAME |