从根本上说
BASIC编写的程序是不规范的
虽然精简的代码很有执行效率
但是可读性不强
容错率也差
其中GOTO语句是最大的祸首
到VB
虽然GOTO语句依然存在
但是很少有人用了
举个粟子
下面是BASIC画迷宫的程序:
100 SCREEN 1
110 CLS
120 KEY OFF
130 RANDOMIZE VAL(MID$(TIME$,4,2)+RIGHT$(TIME$,2))
140 RNDM=RND
150 RANDOMIZE 64000!*RND-32000
160 PRINT "Up->[I] Down->[K] Left->[J] Right->[L]":PRINT:PRINT
170 INPUT "Please input width(10-80):";WW
180 IF WW<10 OR WW>80 THEN 170
190 INPUT "Please input height(8-45):";HH
200 IF HH<8 OR HH>45 THEN 190
210 WO=320/(WW+1)
220 HO=200/(HH+1)
230 CLS
240 LINE(0,0)-(WW*WO,HH*HO),1,B
250 CC=WW*HH
260 FOR I=0 TO CC
270 PT=(PT+997)MOD CC
280 X=INT(PT/HH)
290 Y=PT-X*HH
300 X=X*WO
310 Y=Y*HO
320 IF POINT(X,Y) THEN 520
330 DD=INT(4*RND+1)
340 DD2=DD
350 DD=DD MOD 4+1
360 XN=((DD=1)-(DD=3))*WO+X
370 YN=((DD=2)-(DD=4))*HO+Y
380 IF POINT (XN,YN)=0 THEN 480
390 LINE(X,Y)-(XN,YN),1
400 DD=INT(4*RND+1)
410 FOR K=1 TO 4
420 DD=DD MOD 4+1
430 XN=((DD=1)-(DD=3))*WO+X
440 YN=((DD=2)-(DD=4))*HO+Y
450 IF POINT(XN,YN) THEN 510
460 LINE(X,Y)-(XN,YN),1
470 X=XN:Y=YN:GOTO 400
480 IF DD<>DD2 THEN 500
490 X=XN:Y=YN
500 GOTO 350
510 NEXT K
520 NEXT I
530 Y=(HH/2)*HO
540 LINE(0,Y)-(0,Y+HO),0
550 LINE(WW*WO,Y)-(WW*WO,Y+HO),0
560 COLR=2
570 X=0
580 W2=WO/2
590 H2=HO/2
600 Y=Y+H2
610 YT=Y
620 PSET(X,Y),COLR
630 T$=TIME$
640 WHILE X<WW*WO+1
650 LINE-(X,Y),COLR
660 GOSUB 780
670 IF AGAIN=1 THEN GOSUB 910:GOTO 620
680 WEND
690 T1=VAL(LEFT$(TIME$,2))-VAL(LEFT$(T$,2))
700 T2=VAL(MID$(TIME$,4,2))-VAL(MID$(T$,4,2))
710 T3=VAL(RIGHT$(TIME$,2))-VAL(RIGHT$(T$,2))
720 IF T3<0 THEN T2=T2-1:T3=T3+60
730 IF T2<0 THEN T1=T1-1:T2=T2+60+T1*60
735 SCREEN 0:WIDTH 80
740 LOCATE 25,5
750 PRINT "O.K.! Speed:";T2;" min ";T3;" sec "
760 LOCATE 1,20
770 END
780 K$=INKEY$
790 IF K$="" THEN 780
800 IF ASC(K$)=27 THEN AGAIN=1:RETURN
810 IF K$>CHR$(76) OR K$<CHR$(73) THEN 780
820 ON ASC(K$)-72 GOTO 840,850,830,860
830 POT=POINT(X,Y+H2):X1=X:Y1=Y:Y=Y+H2:GOTO 870
840 POT=POINT(X,Y-H2):X1=X:Y1=Y:Y=Y-H2:GOTO 870 'Up
850 POT=POINT(X-W2,Y):X1=X:Y1=Y:X=X-W2:GOTO 870 'Left
860 POT=POINT(X+W2,Y):X1=X:Y1=Y:X=X+W2 'Right
870 IF POT=1 THEN X=X1:Y=Y1:GOTO 780
880 IF POT=2 THEN COLR=0:RETURN
890 IF POT=0 THEN COLR=2:RETURN
900 X=X1:Y=Y1:GOTO 780
910 PSET(X,Y),0
920 LINE-(X,Y),0
930 IF X<=0 THEN AGAIN=0
940 RETURN
950 IF POINT(X,Y+1)<>0 AND POINT(X,Y+H2)<>0 THEN Y=Y+H2:GOTO 920
960 IF POINT(X,Y-1)<>0 AND POINT(X,Y-H2)<>0 THEN Y=Y-H2:GOTO 920
970 IF POINT(X+1,Y)<>0 AND POINT(X+W2,Y)<>0 THEN X=X+W2:GOTO 920
980 IF POINT(X-1,Y)<>0 AND POINT(X-W2,Y)<>0 THEN X=X-W2:GOTO 920
990 AGAIN=0
1000 RETURN
不晓得有好多人能读明白……
2016年10月13日 06点10分
7
没有注释读nm
2017年06月09日 06点06分
为什么你赋值不写LET
2017年07月21日 02点07分
另外如果用c来写我就更看不懂了!
2017年07月21日 02点07分
还有130行的代码是什么意思?
2017年07月21日 02点07分