【python】 turtle实现汉诺塔游戏动画过程
【python】 turtle实现汉诺塔游戏动画过程
import turtle
class Stack: #面向对象,定义一个类def __init__(self):self.items = []def isEmpty(self):return len(self.items) == 0def 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():t = turtle.Turtle()def drawpole_1(k):t.up()t.pensize(10)t.speed(100)t.goto(400*(k-1), 300)t.down()t.goto(400*(k-1), -100)drawpole_1(0)drawpole_1(1)drawpole_1(2)
def creat_plates(n): #按照输入的n来画出盘子个数plates=[turtle.Turtle() for i in range(n)]for i in range(n):plates[i].up()plates[i].shape("square")plates[i].shapesize(1,20-i)plates[i].goto(-400,-90+20*i)plates[i].showturtle()return plates
def pole_stack(): #这里运用栈来控制一次只能搬动一个盘子并且递归poles=[Stack() for i in range(3)]return poles
def moveDisk(plates,poles,fp,tp): #搬动盘子mov=poles[fp].peek()plates[mov].goto((fp-1)*400,300)plates[mov].goto((tp-1)*400,300)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)n=int(input("请输入汉诺塔的层数并回车:\n"))
myscreen=turtle.Screen()
myscreen.setup(1700,800)
drawpole_3()
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()
运行结果
【python】 turtle实现汉诺塔游戏动画过程相关推荐
- Python案例:汉诺塔游戏
Python案例:汉诺塔游戏 游戏规则: (1)一次只能移动一个环 (2)小环必须在大环之上
- 最简单的python语言实现汉诺塔游戏
最简单的python语言实现汉诺塔游戏 实现代码 def hanoi(n,ch1,ch2,ch3):if n==1:print(ch1, '->', ch3)else:hanoi(n - 1, ...
- 汉诺塔:动画过程绘制实现
人工智能实验要求:利用状态空间法,实现汉诺塔求解过程的动画(将n个盘子,从A柱移到C柱上). 这里是一个C语言实现控制台绘制的实例,笔者将程序的思想写了个详细的注释,方便大家学习. 同时利用这种方法, ...
- 数据结构课设——汉诺塔游戏演示
源代码下载地址:数据结构课设--汉诺塔游戏演示 一. 问题描述 汉诺塔游戏问题中的数据元素具有如下形式: lchild:左孩子结点 rchild:右孩子结点 num:该移动步骤需要移动的盘子的编号 s ...
- 【PE806】Nim on Towers of Hanoi(汉诺塔游戏,生成函数)
PE:Project Euler 题意: 汉诺塔游戏是如下的问题:有三根柱子,第一根柱子套有 n n n 个圆盘,圆盘从上往下半径递增.每次操作可以把套在某根柱子上的最上面的那个圆盘移到另一个柱子上. ...
- 汉诺塔游戏java下载,利用python实现汉诺塔游戏
本文实例为大家分享了python实现汉诺塔游戏的具体代码,供大家参考,具体内容如下 一.汉诺塔 汉诺塔问题是一个经典的递归问题,对于这个问题,我们可以把它简单的去看成是如何用n-1去表示n. 在A,B ...
- python汉诺塔问题输入层数输出整个移动流程_python 实现汉诺塔游戏
一.汉诺塔问题 1. 问题来源 问题源于印度的一个古老传说,大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆 ...
- python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧
汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个. 今天用python搭建汉诺塔小游戏(简约版) 代码亲测有效!源代码如下: #左中右塔用一个列表存储 left ...
- 汉诺塔游戏的python实现——递归函数
汉诺塔游戏python实现 def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c, b ...
最新文章
- ResultSet 的相关介绍
- 机器学习知识点(三)方差和标准差Java实现
- 使程序不显示在任务栏上
- 中国电信线CTF线下选拨writeup
- 增强学习--蒙特卡洛方法
- Spark基础学习笔记10:Scala集成开发环境
- Java实训项目10:GUI学生信息管理系统 - 实现步骤 - 创建数据访问接口实现类
- JavaScript学习笔记——事件
- C++中消息自动派发之一 About JSON
- 你有过什么令你难忘的约会经历?
- 长肥管道(LFT)中TCP的艰难处境与打法
- Anonymous Shared Memory android 匿名共享内存
- 爬虫练习五:多进程爬取股市通股票数据
- foxmail 批量导入收件人邮箱信息
- 2021-2004中国环境统计年鉴面板数据、环境面板数据
- Matlab 使用四阶龙格库塔求解二阶隐式微分方程_ode45
- discards qualifiers —— 丢弃类型
- Python学习,接上篇文章的50道基础入门练习题(附答案)
- c语言.jpg图片转成数组_怎么转换图片成PDF格式?
- Linux中GCC编译工具集中个软件的用途、gcc的简单编译以及ELF文件格式