- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汉诺塔实现步骤
汉诺塔实现步骤
一、创建工作空间和应用(略)
二、创建结构体对象(str_disk)
其中str_表示structure, disk就是圆盘.
三、创建用户对象(u_tower)
其中u_表示UserObject,选PB Object中的custom visual.
(1)操作界面
(2)设计控件
(3)控件名称
(4)部分控件不可见
(5)声明实例变量
其中 roundrectangle irr_disk[14]定义栈空间(空栈)
int ii_count栈顶指针(栈内盘子数)
(6)编写 constructor事件代码
作用:在空栈中放置栈元素(盘子)
//将14个圆角矩形控件对象加到数组中
//即初始化栈
//其结果数组元素irr_disk[1]-- irr_disk[14] 分别对应存放的是对象rr_1--rr_14。
int li_index
int li_array_limit
int li_control_index
int li_control_limit
string rr_name
drawobject ldo_temp
li_array_limit = upperbound (irr_disk[])//返回数组维界
li_control_limit = upperbound (control[])//返回控件数组维界
//将控件数组里的隐藏矩形,放置在定义的实例对象数组中。
For li_control_index = 1 to li_control_limit //对控件数组的每个元素
ldo_temp = control[li_control_index]
rr_name= ldo_temp.classname()
li_index=dec(right(rr_name,len(rr_name)-3))
If li_index=1 and li_index= li_array_limit Then
irr_disk[li_index] = ldo_temp
End If
Next
思考:要将irr_disk[1]中放置rr_1对象,能不能这样处理
irr_disk[1]=rr_1?为什么?
(7)编写函数的操作方法
(8)编写adddisk函数(压栈)
//注意形式参数的引用方式
public subroutine adddisk (str_disk astr_disk);
//局部变量
int li_x//盘子的x坐标
int li_y//盘子的y坐标
//针上盘子数加1(栈顶指针加1)
ii_count++//u_tower成员
//only 14 rectangles were predefined.
If ii_count 14 Then
Messagebox(Peg Error,Error only 14 disk are allowed)
ii_count --
Return
End If
//(图)计算盘子位置
//(式)计算盘子位置
li_y = r_base.y - ((irr_disk[ii_count].height+ 5)*ii_count)
li_x = rr_pole.x + (rr_pole.width / 2) - (astr_disk.size / 2)
//盘子宽度和颜色由实参提供
irr_disk[ii_count].width = astr_disk.size
irr_disk[ii_count].fillcolor = astr_disk.color
irr_disk[ii_count].visible = true
irr_disk[ii_count].x = li_x
//(图)产生向下的效果
//(代码)产生向下的效果
irr_disk[ii_count].y = rr_pole.y + irr_disk[ii_count].height
do while irr_disk[ii_count].y li_y
If irr_disk[ii_count].y + irr_disk[ii_count].height li_y Then
irr_disk[ii_count].y = li_y
Else
irr_disk[ii_count].y = irr_disk[ii_count].y
+ irr_disk[ii_count].height
irr_disk[ii_count].visible = true
irr_disk[ii_count].show()
yield()
End If
您可能关注的文档
最近下载
- 如何将自己的手机号设置成空号.docx VIP
- 云南省交通规划设计研究院有限公司招聘笔试题库2025.pdf
- 《电气工程基础》(熊信银_张步涵_华中科技大学)习题答案全解 (2).doc VIP
- 急性冠状动脉综合征患者规范化诊疗中国专家共识(冠心病).pptx
- 北师大级硕士研究生“自然辩证法概论”复习题(带答案) .pdf VIP
- 企业劳动用工法律风险调查表.pdf VIP
- 《电气工程基础》(熊信银张步涵华中科技大学)习题答案全解.docx VIP
- 阳痿护理查房课件.pptx VIP
- 护士科室火灾应急预案演练脚本精选(两篇).docx
- 2025年及未来5年中国智慧机场行业市场评估分析及发展前景调研战略研究报告.docx
原创力文档


文档评论(0)