首页 > 其他分享 >汉诺塔游戏

汉诺塔游戏

时间:2023-12-27 16:34:30浏览次数:31  
标签:游戏 else rsize 汉诺塔 result ans print size

lt = list() #左边的空列表
rt = list() #右边的空列表
ct = list() #中间的空列表

#初始化函数
def init():
    size = int(input("请输入你要挑战的高度:"))
    # 建立左边的汉诺塔
    for i in range(1,size+1):
        lt.append(i*2-1);
        ct.append(-1)
        rt.append(-1)
        #这里我们是一个倒放,后续需要处理一下
    return size #最后我们将层数返回



def Rule():
    print("将最左边的塔完整的移动到右边就是胜利")
    print("操作方式为:")
    print("left-1,right-3,center-2,退出就输出quit")
    print("例子:如果想将左边最上面的元素移动到最右边就输入1-3")


#显示函数
def Show(size):
    print("-"*20)
    for i in range(size):
        Print(i,size,lt)
        Print(i,size,ct)
        Print(i,size,rt)
        print()
    print("-"*20)

# 打印函数
def Print(i,size,ta):
    if ta[i] != -1:
        # 打印前空格
        for kong in range(int(size - (ta[i] - 1) / 2)):
            print(" ", end="")
        # 打印塔元素
        for le in range(ta[i]):
            print("X", end="")
        # 打印后空格
        for kong in range(int(size - (ta[i] - 1) / 2)):
            print(" ", end="")
    # 左塔这一层为空格
    else:
        # 打印前面空格
        for kong in range(size):
            print(" ", end="")
        # 打印中间的棒棒
        print("|", end="")
        # 打印后面的空格
        for kong in range(size):
            print(" ", end="")

def Judge(tk,pt,size,tsize,psize,ans):
    if tsize == size:
        print("已经空了!!!")
        return 0
    if psize == size:
        x = tk[tsize]
        pt[psize-1] = x
        tk[tsize] = -1
        tsize += 1 #多了一个剩余空间
        psize -= 1 #少了一个空间
        ans += 1
        return tsize,psize,ans
    elif pt[psize] >tk[tsize]:
        x = tk[tsize]
        pt[psize - 1] = x
        tk[tsize] = -1
        tsize += 1  # 多了一个剩余空间
        psize -= 1  # 少了一个空间
        ans += 1
        return tsize,psize,ans
    else:
        print("不可执行的操作")
        return 0




# main函数(主函数)
def main():
    size = init()
    #存放剩余层数
    lsize = 0
    rsize = size
    csize = size
    #存放操作步数
    ans = 0
    #游戏规则
    Rule()
    print(lsize,rsize,csize)

    #输入最佳游戏步数
    print(f"{size}层的最佳步数是{pow(2,size)-1}")
    print("挑战开始")

    while True:
        print(f"当前移动了{ans}步")
        Show(size)
        if rsize == 0:
            if ans ==pow(2,size)-1:
                print("恭喜你挑战成功")
            else:
                print(f"虽然不是最优方案,但是您仍然用了{ans}步来完成")
            break

        operater = input("请输入你的操作:")
        if operater =='1-2':
            result = Judge(lt,ct,size,lsize,csize,ans)
            if result == 0:
                continue
            else:
                lsize,csize,ans = result
        elif operater =='1-3':
            result = Judge(lt,rt,size,lsize,rsize,ans)
            if result == 0:
                continue
            else:
                lsize,rsize,ans = result
        elif operater =='2-1':
            result = Judge(ct,lt,size,csize,lsize,ans)
            if result == 0:
                continue
            else:
                csize,lsize,ans = result
        elif operater =='2-3':
            result = Judge(ct,rt,size,csize,rsize,ans)
            if result == 0:
                continue
            else:
                csize,rsize,ans = result
        elif operater =='3-1':
            result = Judge(rt,lt,size,rsize,lsize,ans)
            if result == 0:
                continue
            else:
                rsize,lsize,ans = result
        elif operater =='3-2':
            result = Judge(rt,ct,size,rsize,csize,ans)
            if result == 0:
                continue
            else:
                rsize,csize,ans = result
        elif operater =='quit':
            x=input("你确定要退出吗(Y/N)")
            break
            if x=='Y':
                print("已经成功退出")
            else:
                continue

        else:
            print("无效指令,请重试")
            continue


#主函数运行
if __name__ == '__main__':
    main()

标签:游戏,else,rsize,汉诺塔,result,ans,print,size
From: https://www.cnblogs.com/du463/p/17930820.html

相关文章

  • Unity引擎2D游戏开发,有限状态机&抽象类多态
    状态机与抽象类观察如下代码:publicclassAttackFinish:StateMachineBehaviour{//OnStateEnteriscalledwhenatransitionstartsandthestatemachinestartstoevaluatethisstateoverridepublicvoidOnStateEnter(Animatoranimator,AnimatorStateIn......
  • 知识图谱与自然语言处理:如何改变游戏规则
    1.背景介绍知识图谱(KnowledgeGraph)是一种结构化的数据库,用于存储实体(如人、组织、地点等)及其关系的信息。自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学的一个分支,研究如何让计算机理解、生成和处理人类语言。这两个领域在近年来得到了广泛的研究和应用,尤其是在知识图......
  • 深度学习原理与实战:深度学习在游戏AI中的应用
    1.背景介绍深度学习是一种人工智能技术,它通过模拟人类大脑中的神经网络结构和学习过程,来实现对数据的自动学习和分析。随着计算能力的提高和大量的数据的积累,深度学习技术在各个领域得到了广泛的应用,包括图像识别、自然语言处理、语音识别、游戏AI等。在游戏领域,AI技术的应用可以让......
  • Unity3D 如何提升游戏运行效率详解
    Unity3D是一款非常强大的游戏引擎,但是在处理复杂场景和大量资源时,游戏运行效率可能会遇到一些问题。本文将详细介绍如何提升Unity3D游戏的运行效率,包括技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术......
  • Unity引擎2D游戏开发,受伤及死亡的逻辑和动画
    裁切素材制作受伤动画略制作死亡动画由于没有死亡动画素材,所以直接调整Alpha通道数值,使其逐渐消失在Animations中复制野猪受伤动画,命名为boarDeadAnimator中拖入boarDead动画点击AddProperty,选择Color将最后一帧的Alpha值改为0Animator连接动画逻辑从AnyState连接......
  • 面对游戏新政,个人开发者如何突围
      最近国家发布了针对游戏行业的限制意见稿,具体内容,相信大家都已经了解了,不同的人,坐在不同的位置,有不同的解读,游戏厂商与相关行业股票下跌,微信抖音小游戏没有版号但靠广告收益的小游戏开发公司也非常焦虑,想利用自己的编程技术,通过游戏创业或增加收入的个人开发者更是感觉......
  • 弹球小游戏
    importsysimportpygamepygame.init()#初始化pygamesize=width,height=640,800screen=pygame.display.set_mode(size)#显示窗口color=(0,0,0)#设置颜色ball=pygame.image.load('E:\\截屏\\bre2.jpg')#加载小球图片,但不现实ballrect=ball.get_rect()......
  • 武汉灰京文化:游戏产业面临的品质与创新之路
    在游戏产业呈现出蓬勃发展态势的同时,激烈的市场竞争和多样化的用户需求也成为行业内的新常态。随着玩家对游戏品质和创新的要求不断攀升,游戏公司正面临着提供更具深度和创意的游戏内容的巨大挑战,这不仅是留住用户的关键,也是在全球范围内脱颖而出的必经之路。游戏产业正处于一个高度......
  • Unity引擎2D游戏开发,撞墙判定和等候计时
    撞墙判定将野猪绑定PhysicsCheck脚本,并将GroundLayer选中Ground,调整ButtonOffset到脚边,CheckRadius为0.1,即可判定悬崖physicsCheck脚本中添加一些变量,用于墙壁判定逻辑publicbooltouchLeftWall;publicbooltouchRightWall;publicVector2leftOffset;publicVecto......
  • 如何使用libgdx做游戏01---libgdx的安装
    一般来说使用这个工具做游戏的都是java开发者,这种技术在国外勉强算是必学的,而在国内却很少有这方面的知识。接下来,我将讲解如何安装libgdx,也算是简单的libgdx入门工具:idea、jdk17、gradle7.5.1及其以上第一步,下载gdx-setup.jar包下载地址:https://libgdx-nightlies.s3.amazonaw......