汉诺塔c源程序实现及讲解.ppt

汉诺塔c源程序实现及讲解.ppt

ID:51657375

大小:262.50 KB

页数:21页

时间:2020-03-27

汉诺塔c源程序实现及讲解.ppt_第1页
汉诺塔c源程序实现及讲解.ppt_第2页
汉诺塔c源程序实现及讲解.ppt_第3页
汉诺塔c源程序实现及讲解.ppt_第4页
汉诺塔c源程序实现及讲解.ppt_第5页
资源描述:

《汉诺塔c源程序实现及讲解.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汉诺塔C源程序实现及讲解制作人:贾维华、刘璐汉诺塔一、汉诺塔游戏简介及其玩法二、设计思路及其程序设计流程三、源程序及其讲解四、游戏程序中应注意的问题一、汉诺塔游戏简介及其玩法1游戏方法:点击PLAY开始,会看到3个柱子和从大到小编着号码的盘子,而且盘子自上而下半径依次增大。成功把盘子顺序不变的堆到最右边的竹子旁为胜利。2游戏规则:一次只能移动一个木块,盘子可以累起来,但是必须把半径小的放在半径大的上面。3操作指南:在挂有圆盘的柱子上方点击向上按钮‘W’或者‘UPDOWN’按键选中圆盘,按左右移动键移动到相对应的柱子上方,按向下键放下圆

2、盘,至此完成一次圆盘移动。二、设计思路及程序设计流程1设计思路:本设计中将盘子的数目设定为3~9个。设三个柱子A、B、C移动的过程可分解为三个步骤:第一步把A上的n-1个圆盘移到B上;第二步把A上的一个圆盘移到C上;第三步把B上的n-1个圆盘移到C上;其中第一步和第三步是类同的。其实际思想是利用一个递归原理。例如最简单的三阶汉诺塔移动方法:A→C,A→B,C→B,A→C,B→A,B→C,A→C2程序设计流程图:三、源程序及其讲解1源程序:见wintc2主程序构架main(){INITIAL();/*界面初始化*/Start_Logo(

3、);/*游戏启动始界面*/getch();again:nStep=0;/*判断条件*/Logo();/*进入游戏*/gotoagain;}3.主要程序分析#include"stdio.h"#include"conio.h"#include"stdlib.h"#include"dos.h"#include"time.h"#include"graphics.h"#defineSsetcolor#defineFsetfillstyle#defineRrectangle#defineCcircle#defineBbar#defineB3Dba

4、r3d#defineLline#defineOouttextxy#defineX200#defineY20intnStep=0;intnRecord[7]={7,15,31,63,127,255,511},nRec;intnDisk,nDisknum;intnBaseNum;floatnDelay;charchMark[15];structrod{intnDisk[10][5];intnDiskName[10];}tree[3];/********************************************/ntoa(in

5、ts){intb[15];inti,j;for(i=0;i<15;i++)chMark[i]='';for(i=0;s>=10;i++){b[i]=s%10;s/=10;}b[i]=s;for(j=i;j>=0;j--)chMark[i-j]=b[j]+'0';}voidINITIAL()/**GAMEINITIAL**/{intgd=DETECT,gm=0;initgraph(&gd,&gm,"");setbkcolor(0);}voidStart_Logo()/*启动标志*/{F(3,8);B(200,150,439,259)

6、;S(7);R(201,151,442,262);S(WHITE);R(199,149,440,260);settextstyle(DEFAULT_FONT,HORIZ_DIR,2);O(233,180,"HANOITOWER");S(1);O(232,179,"HANOITOWER");S(WHITE);settextstyle(DEFAULT_FONT,HORIZ_DIR,2);O(284,204,"V2.0");S(1);O(283,203,"V2.0");settextstyle(DEFAULT_FONT,HORIZ_DIR,

7、1);S(WHITE);O(205,240,"WERTEBYLiuLuANDJiaWeiHua!");O(204,239,"WERTEBYLiuLuANDJiaWeiHua!");}voidFLASH_REC(){intNUM,x1=8,x2=10;randomize();for(NUM=0;NUM<33;NUM++){F(1,rand()%16);B(x1,412,x2,414);x1=x1+20;x2=x2+20;}}voidDrawRod(){F(1,3);B(120,152,124,402);/*ROD1*/B(320,152

8、,324,402);/*ROD2*/B(520,152,523,402);/*ROD3*/F(6,LIGHTBLUE);B(119,151,123,401);B(319,151,323,401);B(519,151,52

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。