- 注册时间
- 2004-12-21
- 最后登录
- 1970-1-1
|
记得当年刚买文曲星时还是老爸给买的
那时还没有编程功能,有的只是几款蹩
脚的游戏,我最爱玩的就是拼图,可文
曲星的那个拼图十个也没有半个能拼成
直到今日也没有得到改进。自从买了文
曲星TC1000可是却没有了拼图,
于是就有编个玩玩的想法。
其实算法很简单:就是用了反向推倒法
把完成图反向推倒到乱序,为止。
1.新改进了代码并优化资源占用
2.精简代码,并简化界面
3.完完全全适用于任何机型
源代码:
0 REM [逍遥阵地]为你制作*逍遥客*
1 REM 1.新改进了代码并优化资源占用
2 REM 2.精简代码,并简化界面
3 REM 3.完完全全适用于任何机型
10 CLS:CLEAR:GRAPH
20 PRINT "===== 字母游戏 =====",TAB (7);"1. (3*3)",TAB (7);"2. (4*4)",TAB (7);"3. (5*5)",
30 GOSUB 50:Z=K+2
40 PRINT "难度:1.易 2.中 3.难";:GOSUB 50:V=1/K:GOTO 70
50 K=ASC(INKEY$)
55 IF K=98 THEN K=1:65 ELSE IF K=110 THEN K=2:65 ELSE IF K=109 THEN K=3:65
60 IF K=27 GOTO 310 ELSE 50
65 RETURN
70 DIM A(Z,Z)
80 CLS OCATE 2,1 RINT "==== 关卡运算中 ====",TAB (8);"Wait...";
90 BOX 81-16*Z,50,79+16*Z,60
100 FOR Y=1 TO Z:FOR X=1 TO Z:A(Y,X)=64+((Y-1)*Z+X):NEXT X,Y
110 M=1:X=Z:Y=Z:FOR K=1 TO 16*Z STEP V
120 N=INT(RND(1)*4)+1:IF N=M+2 OR N=M-2 GOTO 120
130 ON N GOTO 140,180,160,200
140 IF Y=Z GOTO 120
150 SWAP A(Y,X),A(Y+1,X):Y=Y+1:GOTO 220
160 IF Y=1 GOTO 120
170 SWAP A(Y,X),A(Y-1,X):Y=Y-1:GOTO 220
180 IF X=Z GOTO 120
190 SWAP A(Y,X),A(Y,X+1):X=X+1:GOTO 220
200 IF X=1 GOTO 120
210 SWAP A(Y,X),A(Y,X-1):X=X-1:GOTO 220
220 M=N:V=(80-16*Z)+(K*2):BOX V,50,V+1,60,1:NEXT K:CLS:M=Y:N=X
230 FOR Y=1 TO Z:FOR X=1 TO Z:IF Y=M AND X=N GOTO 250
240 LOCATE Y,X*2 RINT CHR$(A(Y,X));
250 NEXT X,Y:BOX 95,0,159,16 OCATE 1,13 RINT "字母游戏"; OCATE 3,15:PRINT "0000";
260 LOCATE 5,13:PRINT "加油啊!";:S1=PEEK(1016)*3600+PEEK(1017)*60+PEEK(1018)/2:V=0
270 K=ASC(INKEY$)
280 IF K=20 AND M<>Z GOTO 320 ELSE IF K=21 AND M<>1 GOTO 340
290 IF K=23 AND N<>Z GOTO 360 ELSE IF K=22 AND N<>1 GOTO 380
300 IF K=13 GOTO 10 ELSE IF K=27 GOTO 310 ELSE 270
310 CLS:CLEAR:LOCATE 3,6:PRINT "GAME OVER";:BOX 1,0,159,79,1,2:BOX 2,1,158,78,0,2:END
320 LOCATE M+1,N*2:PRINT " ";:LOCATE M,N*2:PRINT CHR$(A(M+1,N));:SWAP A(M,N),A(M+1,N)
330 M=M+1:GOTO 400
340 LOCATE M-1,N*2:PRINT " ";:LOCATE M,N*2:PRINT CHR$(A(M-1,N));:SWAP A(M,N),A(M-1,N)
350 M=M-1:GOTO 400
360 LOCATE M,(N+1)*2:PRINT " ";:LOCATE M,N*2:PRINT CHR$(A(M,N+1));:SWAP A(M,N),A(M,N+1)
370 N=N+1:GOTO 400
380 LOCATE M,(N-1)*2:PRINT " ";:LOCATE M,N*2:PRINT CHR$(A(M,N-1));:SWAP A(M,N),A(M,N-1)
390 N=N-1:GOTO 400
400 V=V+1:LOCATE 3,19-LEN(STR$(V)):PRINT V;:IF V=50*(Z-2)GOTO 410 ELSE 420
410 LOCATE 5,13:PRINT "顶住啊!";
415 FOR Y=0 TO 4:BOX 95,63,159,79,1,2:FOR X=0 TO 1000:NEXT X,Y
420 FOR Y=1 TO Z:FOR X=1 TO Z:IF A(Y,X)=64+((Y-1)*Z+X) GOTO 430 ELSE 270
430 NEXT X,Y:S2=PEEK(1016)*3600+PEEK(1017)*60+PEEK(1018)/2
440 S=S2-S1:H1=INT(S/60):H2=S-H1*60:S=INT((S/V)*100)
450 CLS:PRINT " ==== 恭喜恭喜 ====",
460 PRINT " |
|