游戏汉诺塔源代码
这个游戏是用Focal写成,大家见识一下这种化石编程语言,至于Basic和Fortran至今都在,就不举例子了。
01.01CHANOIBYDEC
01.02CFROM‘PROGRAMMINGLANGUAGES‘
01.03CLASTCHANGE:8/7/71
01.04
01.05CTHISPROGRAMWORKSWITHTHETOWERSOFHANOIPROBLEM.
01.06CYOUAREGIVENTHREETOWERSWITHVARIOUSSIZEDDISCSON
01.07CONEOFTHEM.THEOBJECTISTOPLACEALLTHEDISCSON
01.08CANOTHERTOWERONATATIME,WITHTHESTIPULATIONTHATA
01.09CLARGERDISCMAYNEVERBEONTOPOFASMALLERONE.THIS
01.10CPROGRAMISGOODFORANYNUMBEROFDISCSANDCANBERUN
01.11CEITHERINMANUAL(YOUTELLITWHERETOMOVE)ORAUTOMATIC
01.12CMODE.ITWILLALSOEXPLAINITSMOVESORDRAWTHEFORYOU,
01.13CDEPENDINGONHOWYOUANSWERTHE‘MOVESORPLOTS‘QUESTION.
01.14C**OUTDISCISTHEDISC(1ONTOP)THATYOUWANTTOMOVE
01.15C**INDISCISTHEPOSITION(1ONTOP)WHEREYOUMOVETO
01.16C**OUTTOWERISTHETOWER(1ONLEFT)FROMWHICHYOUMOVE
01.17C**INTOWERISTHETOWER(3ONRIGHT)YOUMOVETO
01.18CTHISPROGRAMASSUMESNOCHEATING,ANDDOESNOTCHECKFORIT.
01.19
01.29E
01.30A"NO.OFDISKS"N,!
01.40FI=1,N;SSS(I)=I
01.50SSO=1;SSI=3
01.60SNO=N;SNI=N;SI=0
01.70A"MOVESORPLOTS",MOVE,!
01.80I(FABS(MO-0MOVES)),1.85;D23
01.85A"AUTOORMANUAL",A,!
01.90I(FABS(A-0MANUAL)),5.1;D2;T!!"DONE!",!!;Q
02.20I[SS<(SO-1)*N+NO-1>]ER,2.95
02.30SI=I+1;SNO(I)=NO;SSO(I)=SO;SSI(I)=SI
02.50SSI=6-SO-SI;SNO=NO-1;D3;STE(I)=NI;D2
02.60SSI=SI(I);SNO=NO+1;D3;D6
02.70SSO=6-SO-SI;SNO=TE(I);D3;D2
02.80SSI=SI(I);SSO=SO(I);SNO=NO(I);SI=I-1
02.90R
02.95D3;D6;R
03.10SNI=N
03.20I[SS((SI-1)*N+NI)]ER,3.3;SNI=NI-1;G3.2
03.30R
05.10A"OUT-DISC:",NO,"TOWER:",SO
05.20A!"IN-DISC:",NI,"TOWER:",SI,!;D6
05.30SA=0
05.40FI=1,N*2;SA=A+SS(I)
05.50I(-A)5.1;T!"WELLDONE!"!;Q
06.10SDO=(SO-1)*N+NO
06.20SDI=(SI-1)*N+NI
06.30SSS(DI)=SS(DO)
06.40SSS(DO)=0
06.50I(MOVE)ER,6.7;D23;R
06.70T!%2,SO,NO,!SI,NI,!
23.10FJ=1,N;T!;FK=0,70;D23.3
23.20T!!!!;R
23.30I[K-15+SS(J)*2]23.6;I(-K+15+SS(J)*2)23.6;T"#
23.60I(K-35+SS(J+N)*2)23.7;I(-K+35+SS(J+N)*2)23.7;T"#
23.70I(K-55+SS(J+N+N)*2)23.8;I(-K+55+SS(J+N+N)*2)23.77;T"#
23.77SK=100;R
23.80T""