资源简介
本人的程序设计通识课期末大作业源代码和说明文档,欢迎大家参考,共同学习python
代码片段和文件信息
#本程序是一个汉诺塔递归演示动画
#用户可以通过按钮选择观看3至6个盘子的汉诺塔演示
#作者:周易 5090379144
#2011年6月13日
from visual import *
from visual.controls import *
scene=display(title=‘Hannoi‘width=1200 height=700)
scene.autoscale=0
R=0.5 #圆盘的单位半径大小
height = 0.6 #圆盘单位垂直间隔
distance = 7.8 #三个塔座之间的间隔距离
#画三个塔座
post1 = cylinder(pos=(-7.8-20)axis = (050) radius = 0.25color = (0.350.91))
base1 = cylinder(pos=(-7.8-20)axis = (00.30) radius = 3.3color = (0.50.80.9))
post2 = cylinder(pos=(0-20)axis = (050) radius = 0.25color = (0.40.91))
base2 = cylinder(pos=(0-20)axis = (00.30) radius = 3.3color = (0.50.80.9))
postV = cylinder(pos=(7.8-20)axis = (050) radius = 0.25color = (0.40.91))
base3 = cylinder(pos=(7.8-20)axis = (00.30) radius = 3.3color = (0.50.80.9))
#圆盘类
class Plate:
#初始化圆盘,在第一个塔座上放number个圆盘
def __init__(selfnumber):
self.number = number
self.plates = []
self.P1 = number
self.P2 = 0
self.P3 = 0
for i in range(1number+1):
rod = cylinder(pos=(-7.8-2+(number-i+1)*0.60) axis=(00.40)
radius=i*Rcolor = (10.91))
self.plates.append(rod)
#将第n块圆盘从第fromX个塔移到第toY个塔
def move(selfnfromXtoY):
rate(50000)
if toY == 1:
self.P1=self.P1+1
x = -distance
y = -2 + (self.P1)*height
elif toY == 2:
self.P2=self.P2+1
x = 0
y = -2 + (self.P2)*height
else:
self.P3=self.P3+1
x = distance
y = -2 + self.P3*height
if fromX == 1:
self.P1 = self.P1-1
elif fromX == 2:
self.P2 = self.P2-1
else:
self.P3 = self.P3-1
self.plates[n-1].velocity=vector(xy0)-self.plates[n-1].pos
for j in range(120000):
self.plates[n-1].pos = self.plates[n-1].pos + self.plates[n-1].velocity*0.00005
self.plates[n-1].pos = (xy0)
# 将所有的plates飞出窗口并删除所有的plates
def delete(self):
rate(20000)
for i in range(0self.number):
for j in range(142000):
self.plates[i].pos = self.plates[i].pos + vector(020)*0.0001*(i+1) # 让飞离速度变快
print i
for i in range(self.number-10):
del self.plates[i]
del self.plates
#汉诺塔递归算法实现
def Move(nxyplate):
print “将第 “+str(n)+“ 个盘从 “+str(x)+“ 柱移至 “+str(y)+“ 柱“;
plate.move(nxy)
return plate
def Hannoi(n a b c plate):
if n==1:
plate = Move(1acplate);
else:
Hannoi(n-1acbplate);
plate = Move(nacplate);
Hannoi(n-1bacplate);
#n = input(“Please enter the number of the plates. “)
#scene.stereo = ‘redcyan‘
#放3个盘子
def change1(): # Called by controls when button1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4824 2011-06-13 13:04 大作业\hannoi4.py
文件 311808 2011-06-13 13:01 大作业\汉诺塔动画演示文档.doc
目录 0 2011-06-13 13:01 大作业
----------- --------- ---------- ----- ----
316632 3
相关资源
- 图像相似度计算python
- 基于selenium模拟天眼查登录并爬取企业
- python小游戏完美解决大作业.zip
- Python编程 第四版 真正的完整版
- python开发用到的工具书籍一套全
- Python包:baidumapAPI
- python实现图书借阅系统
- python爬虫样例
- 特征空间可视化.py
- 希尔密码.py Python 矩阵实现希尔密码
- python 获取文件夹下文件名称并写入到
- python面向对象课件
- Python快速编程入门的课后习题答案(
- Python爬虫代码
- 搜集和整理的100道Python考试题.docx
- 手写体数字识别原始数据和贝叶斯代
- Python环境下利用matplotlib绘制发动机万
- 基于Python+Theano实现的Lenet5源代码(附
- Python 中文手册.chm
- python实现类似QQ群聊
- 淘宝秒杀python脚本
-
python 从xm
l文件中提取有用信息转 - REAPER的脚本程序汇总
- ABAQUS 二次开发Python教程
- python学习之路 精
- DBN Python预测交通流
- 43个Python代码打包
- 用A*算法解决TSP问题
- 大作业2 –路由协议Python
- 《Python3网络爬虫开发实战》中文PDF
评论
共有 条评论