精华内容
下载资源
问答
  • 汉诺塔游戏

    2016-06-10 15:42:41
    汉诺塔游戏版,cmd窗口运行,色块等均为通过最简单的空格方式打印,色彩十分绚丽。基本的提示在运行后都会出现,祝玩得愉快o(* ̄▽ ̄*)ブ(vs编译通过)
  • 今天,我完成了汉诺塔游戏终极版。使用一个脚本来输出汉诺塔自动运行的步骤,再通过管道提供给汉诺塔游戏,实现了自动完成汉诺塔。在去年我用C语言写完汉诺塔游戏时,一直有个未完成的心愿。我希望能让汉诺塔自动...

    今天,我完成了汉诺塔游戏终极版。使用一个脚本来输出汉诺塔自动运行的步骤,再通过管道提供给汉诺塔游戏,实现了自动完成汉诺塔。

    在去年我用C语言写完汉诺塔游戏时,一直有个未完成的心愿。我希望能让汉诺塔自动运行,自己享受电脑程序来帮我玩汉诺塔的乐趣。当时因为编程能力有限,一直没有完成就搁浅了。现在,我利用lisp语言写了个小脚本来自动输出移塔步骤。

    我再次凭着初学者大无畏的精神,任是把lisp代码写成了像大过程式,十分之拙劣,但是也确实好用。

    项目地址如下:

    下载hanoi_auto.c:

    编译执行,首先接受汉诺塔游戏的层数,再接受移塔步骤,操作方法见hanoi_new说明。

    下载hanoi_alg.scm:

    使用scheme编写,主要是接受汉诺塔游戏的层数,输出移塔步骤,通过管道给hanoi_auto.exe。

    hanoi_auto与hanoi_alg配合使用,可自动完成汉诺塔游戏。

    操作步骤如下:

    ./hanoi_alg.scm | ./hanoi_auto.exe

    5                                   //输入要完成的hanoi层数

    4a008e1e670562dd0994180d7514b4a8.png

    快试一下吧!

    展开全文
  • 本文实例为大家分享了python实现汉诺塔游戏的具体代码,供大家参考,具体内容如下一.汉诺塔汉诺塔问题是一个经典的递归问题,对于这个问题,我们可以把它简单的去看成是如何用n-1去表示n。在A,B,C三个柱子上,我们先...

    本文实例为大家分享了python实现汉诺塔游戏的具体代码,供大家参考,具体内容如下

    一.汉诺塔

    汉诺塔问题是一个经典的递归问题,对于这个问题,我们可以把它简单的去看成是如何用n-1去表示n。

    在A,B,C三个柱子上,我们先假设A柱上只有两个盘子,那么很简单,只需要把最上面的那个盘子移到B柱上,再把A柱上最下面的盘子移到C柱上,最后把B柱的盘子移到C柱就可以了。

    假设我们有n个盘子,那么可以把最下面的盘子看成是第n个盘子,而我们要做的是把上面n-1个盘子移到B柱上,再把第n个盘子移到C柱。我们可以把B柱视为主中转站。

    在将n-1个盘子移到B柱的过程中,我们需要借助C柱作为分中转站,当完成n-1个盘子的移动时,此时B柱上存在n-1个盘子,而我们接下来要做的,和之前类似,就是借助把n-2个盘子移动到A柱,把第n-1个盘子移动到C柱。在移动n-2个盘子到A柱时,我们同样要借助C作为分中转站。

    二.实例代码

    import turtle

    class Stack:

    def __init__(self):

    self.items = []

    def isEmpty(self):

    return len(self.items) == 0

    def push(self, item):

    self.items.append(item)

    def pop(self):

    return self.items.pop()

    def peek(self):

    if not self.isEmpty():

    return self.items[len(self.items) - 1]

    def size(self):

    return len(self.items)

    def drawpole_3():#画出汉诺塔的poles

    t = turtle.Turtle()

    t.hideturtle()

    def drawpole_1(k):

    t.up()

    t.pensize(10)

    t.speed(100)

    t.goto(400*(k-1), 100)

    t.down()

    t.goto(400*(k-1), -100)

    t.goto(400*(k-1)-20, -100)

    t.goto(400*(k-1)+20, -100)

    drawpole_1(0)#画出汉诺塔的poles[0]

    drawpole_1(1)#画出汉诺塔的poles[1]

    drawpole_1(2)#画出汉诺塔的poles[2]

    def creat_plates(n):#制造n个盘子

    plates=[turtle.Turtle() for i in range(n)]

    for i in range(n):

    plates[i].up()

    plates[i].hideturtle()

    plates[i].shape("square")

    plates[i].shapesize(1,8-i)

    plates[i].goto(-400,-90+20*i)

    plates[i].showturtle()

    return plates

    def pole_stack():#制造poles的栈

    poles=[Stack() for i in range(3)]

    return poles

    def moveDisk(plates,poles,fp,tp):#把poles[fp]顶端的盘子plates[mov]从poles[fp]移到poles[tp]

    mov=poles[fp].peek()

    plates[mov].goto((fp-1)*400,150)

    plates[mov].goto((tp-1)*400,150)

    l=poles[tp].size()#确定移动到底部的高度(恰好放在原来最上面的盘子上面)

    plates[mov].goto((tp-1)*400,-90+20*l)

    def moveTower(plates,poles,height,fromPole, toPole, withPole):#递归放盘子

    if height >= 1:

    moveTower(plates,poles,height-1,fromPole,withPole,toPole)

    moveDisk(plates,poles,fromPole,toPole)

    poles[toPole].push(poles[fromPole].pop())

    moveTower(plates,poles,height-1,withPole,toPole,fromPole)

    myscreen=turtle.Screen()

    drawpole_3()

    n=int(input("请输入汉诺塔的层数并回车:\n"))

    plates=creat_plates(n)

    poles=pole_stack()

    for i in range(n):

    poles[0].push(i)

    moveTower(plates,poles,n,0,2,1)

    myscreen.exitonclick()

    三.结果显示

    1.首先,会显示出如下页面:

    a613bf98d288e2b976beb70a766a4f07.png

    因此,我们输入汉诺塔层数。

    3d10593a6b9908d3bfbb497539d769fc.png

    2.turtle库演示结果

    a1e5251275594eba04b1ed11b854b6e0.png

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • C# 汉诺塔游戏

    2021-03-17 15:54:30
    摘要:C#源码,游戏开发,汉诺塔 C#汉诺塔游戏源码,汉诺塔递归游戏的C#源程序,本程序中自带汉诺塔演示功能,你可以改变盘子数量后开始游戏,为确保编译顺利,请使用VS2008及以上版本编译源代码。
  • C# 汉诺塔游戏源码

    2021-03-16 01:47:07
    摘要:C#源码,游戏开发,汉诺塔 C# 汉诺塔源码下载,之前发过VC++版和JAVA以及VB版的汉诺塔游戏源码,今天给大家带来一款C#源码版的,希望大家有需要。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,941
精华内容 1,976
关键字:

汉诺塔游戏