资源简介
本人的程序设计通识课期末大作业源代码和说明文档,欢迎大家参考,共同学习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试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论