0 REM >>> TUERME VON HANOI <<< 1 REM 2 REM DEMO ZUM REKURSIV-BASIC VON: 3 REM 4 REM ***** THOMAS KOLBE ***** 5 REM 6 REM DEMO PROGRAMM VON: 7 REM 8 REM *** ZUHEIR URWANI *** 9 REM 10 : 20 !CLRSCR:!COLOR 0 30 !CURSOR 12,1:PRINT"TUERME VON HANOI" 40 !CURSOR 12,2:PRINT"----------------" 50 !EINGABE:FOR I=0 TO 2 60 !CURSOR I*13,22:PRINT "[196][196][196][196][196][196][196][196][196][196][196][196]" 70 !CURSOR I*13+3,23:PRINT "TURM ";I+1; 80 NEXT I:PRINT "[159]"; 100 TU (1,0)=AN 110 TU (2,0)=0 120 TU (3,0)=0 125 FOR I=1 TO AN 130 TU (1,I)=(AN+1-I)*2 140 !SCHEIBE 0,22-I,(AN+1-I)*2:NEXT I 145 ZUG=0:!CURSOR 0,4:PRINT "ZUG:"ZUG 147 REK=1:!CURSOR 20,4 149 PRINT "REKURSIONSTIEFE:"REK 150 !HANOI AN,1,2,3,REK 160 !CURSOR 16,6:PRINT "FERTIG !" 170 !WAITKEY:GOTO 20 180 : 190 : 10000 REM PROZEDUREN ZUM PROGRAMM 10010 : 10020 \PROC CLRSCR 10030 PRINT "[147][154]" 10040 \END 10050 : 10060 : 10070 \PROC COLOR FARBE 10080 POKE 53280,FARBE:POKE 53281,FARBE 10090 \END 10100 : 10110 : 10120 \PROC SCHEIBE X,Y,N 10130 \VAR J 10140 !CURSOR X,Y 10145 IF N=12 THEN 10160 10150 FOR J=1 TO 6-N/2:PRINT " ";:NEXT 10160 FOR J=1 TO N:PRINT "[163][146]";:NEXT 10170 \END 10180 : 10190 : 10200 \PROC HANOI N,A,B,C,R 10205 \VAR D,E,F 10207 !CURSOR 36,4:PRINT R 10210 IF N<1 THEN:\END 10215 D=A:E=B:F=C 10220 !HANOI N-1,D,F,E,R+1 10240 !VERSETZE A,B 10250 !HANOI N-1,F,E,D,R+1 10255 !CURSOR 36,4:PRINT R 10260 \END 10270 : 10320 : 10330 \PROC WAITKEY:\VAR A$ 10340 GET A$:IF A$="" THEN 10340 10350 \END 10360 : 10370 : 10380 \PROC VERSETZE VO,NA 10390 \VAR V,N,B 10395 ZUG=ZUG+1:!CURSOR 4,4:PRINT ZUG 10400 V=TU (VO,0) 10410 N=TU (NA,0)+1 10420 B=TU (VO,V) 10430 TU (NA,N)=B 10440 !LOESCHE (VO-1)*13,22-V 10450 !SCHEIBE (NA-1)*13,22-N,B 10460 TU (VO,0)=TU (VO,0)-1 10470 TU (NA,0)=TU (NA,0)+1 10480 \END 10490 : 10500 : 10510 \PROC LOESCHE X,Y 10520 !CURSOR X,Y:PRINT " " 10530 \END 10540 : 10550 : 10560 \PROC CURSOR X,Y 10570 POKE 781,Y:POKE 782,X 10580 POKE 783,PEEK(783)AND 254 10590 SYS 65520 10600 \END 10610 : 10620 : 10630 \PROC EINGABE:\VAR A$ 10635 A$=" " 10700 !CURSOR 0,4 10710 PRINT"ANZAHL DER SCHEIBEN (1-6)?" 10720 !CURSOR 9,6:INPUT AN 10730 IF AN>0 AND AN<7 THEN 10750 10740 !CURSOR 9,6:PRINT A$:GOTO 10720 10750 !CURSOR 0,4:PRINT A$;A$;A$;A$ 10760 \END