游戏汉诺塔源代码

这个游戏是用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""