home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 21 / 64er_Magazin_Sonderheft_21_19xx_Markt__Technik_de_Side_B.d64 / hanoi (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  106 lines

  1. 0 rem     >>> tuerme von hanoi <<<
  2. 1 rem
  3. 2 rem    demo zum rekursiv-basic von:
  4. 3 rem
  5. 4 rem     ***** thomas kolbe *****
  6. 5 rem
  7. 6 rem         demo programm von:
  8. 7 rem
  9. 8 rem       *** zuheir urwani ***
  10. 9 rem
  11. 10 :
  12. 20 !clrscr:!color 0
  13. 30 !cursor 12,1:print"tuerme von hanoi"
  14. 40 !cursor 12,2:print"----------------"
  15. 50 !eingabe:for i=0 to 2
  16. 60 !cursor i*13,22:print "[196][196][196][196][196][196][196][196][196][196][196][196]"
  17. 70 !cursor i*13+3,23:print "turm ";i+1;
  18. 80 next i:print "[159]";
  19. 100 tu (1,0)=an
  20. 110 tu (2,0)=0
  21. 120 tu (3,0)=0
  22. 125 for i=1 to an
  23. 130 tu (1,i)=(an+1-i)*2
  24. 140 !scheibe 0,22-i,(an+1-i)*2:next i
  25. 145 zug=0:!cursor 0,4:print "zug:"zug
  26. 147 rek=1:!cursor 20,4
  27. 149 print "rekursionstiefe:"rek
  28. 150 !hanoi an,1,2,3,rek
  29. 160 !cursor 16,6:print "fertig !"
  30. 170 !waitkey:goto 20
  31. 180 :
  32. 190 :
  33. 10000 rem    prozeduren zum programm
  34. 10010 :
  35. 10020 \proc clrscr
  36. 10030 print "[147][154]"
  37. 10040 \end
  38. 10050 :
  39. 10060 :
  40. 10070 \proc color farbe
  41. 10080 poke 53280,farbe:poke 53281,farbe
  42. 10090 \end
  43. 10100 :
  44. 10110 :
  45. 10120 \proc scheibe x,y,n
  46. 10130 \var j
  47. 10140 !cursor x,y
  48. 10145 if n=12 then 10160
  49. 10150 for j=1 to 6-n/2:print " ";:next
  50. 10160 for j=1 to n:print "[163][146]";:next
  51. 10170 \end
  52. 10180 :
  53. 10190 :
  54. 10200 \proc hanoi n,a,b,c,r
  55. 10205 \var d,e,f
  56. 10207 !cursor 36,4:print r
  57. 10210 if n<1 then:\end
  58. 10215 d=a:e=b:f=c
  59. 10220 !hanoi n-1,d,f,e,r+1
  60. 10240 !versetze a,b
  61. 10250 !hanoi n-1,f,e,d,r+1
  62. 10255 !cursor 36,4:print r
  63. 10260 \end
  64. 10270 :
  65. 10320 :
  66. 10330 \proc waitkey:\var a$
  67. 10340 get a$:if a$="" then 10340
  68. 10350 \end
  69. 10360 :
  70. 10370 :
  71. 10380 \proc versetze vo,na
  72. 10390 \var v,n,b
  73. 10395 zug=zug+1:!cursor 4,4:print zug
  74. 10400 v=tu (vo,0)
  75. 10410 n=tu (na,0)+1
  76. 10420 b=tu (vo,v)
  77. 10430 tu (na,n)=b
  78. 10440 !loesche (vo-1)*13,22-v
  79. 10450 !scheibe (na-1)*13,22-n,b
  80. 10460 tu (vo,0)=tu (vo,0)-1
  81. 10470 tu (na,0)=tu (na,0)+1
  82. 10480 \end
  83. 10490 :
  84. 10500 :
  85. 10510 \proc loesche x,y
  86. 10520 !cursor x,y:print "            "
  87. 10530 \end
  88. 10540 :
  89. 10550 :
  90. 10560 \proc cursor x,y
  91. 10570 poke 781,y:poke 782,x
  92. 10580 poke 783,peek(783)and 254
  93. 10590 sys 65520
  94. 10600 \end
  95. 10610 :
  96. 10620 :
  97. 10630 \proc eingabe:\var a$
  98. 10635 a$="                            "
  99. 10700 !cursor 0,4
  100. 10710 print"anzahl der scheiben (1-6)?"
  101. 10720 !cursor 9,6:input an
  102. 10730 if an>0 and an<7 then 10750
  103. 10740 !cursor 9,6:print a$:goto 10720
  104. 10750 !cursor 0,4:print a$;a$;a$;a$
  105. 10760 \end
  106.