1 / 21
文档名称:

汉诺塔c源程序实现及讲解-课件(PPT·精选).ppt

格式:ppt   页数:21页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汉诺塔c源程序实现及讲解-课件(PPT·精选).ppt

上传人:aidoc1 2015/10/30 文件大小:0 KB

下载得到文件列表

汉诺塔c源程序实现及讲解-课件(PPT·精选).ppt

文档介绍

文档介绍:汉诺塔C源程序实现及讲解
制作人:贾维华、刘璐
汉诺塔
一、汉诺塔游戏简介及其玩法
二、设计思路及其程序设计流程
三、源程序及其讲解
四、游戏程序中应注意的问题
一、汉诺塔游戏简介及其玩法
1 游戏方法:点击PLAY开始,会看到3个柱子和从大到小编着号码的盘子,而且盘子自上而下半径依次增大。成功把盘子顺序不变的堆到最右边的竹子旁为胜利。
2 游戏规则: 一次只能移动一个木块,盘子可以累起来,但是必须把半径小的放在半径大的上面。
3操作指南:在挂有圆盘的柱子上方点击向上按钮‘ W ’或者‘ UPDOWN’按键选中圆盘,按左右移动键移动到相对应的柱子上方,按向下键放下圆盘,至此完成一次圆盘移动。
二、设计思路及程序设计流程
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→C
2 程序设计流程图:
三、源程序及其讲解
1 源程序:见win tc
2 主程序构架
main()
{
INITIAL(); /*界面初始化*/
Start_Logo(); /*游戏启动始界面*/
getch();
again:
nStep=0;/*判断条件*/
Logo();/*进入游戏*/
goto again;
}
3. 主要程序分析
#include ""
#include ""
#include ""
#include ""
#include ""
#include ""
#define S setcolor
#define F setfillstyle
#define R rectangle
#define C circle
#define B bar
#define B3D bar3d
#define L line
#define O outtextxy
#define X 200
#define Y 20
int nStep=0;
int nRecord[7]={7,15,31,63,127,255,511},nRec;
int nDisk,nDisknum;
int nBaseNum;
float nDelay;
char chMark[15];
struct rod
{
int nDisk[10][5];
int nDiskName[10];
}tree[3];
/********************************************/
ntoa(int s)
{
int b[15];
int i,j;
for (i=0;i<15;i++)
chMark[i]='\0';
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';
}
void INITIAL() /**GAME INITIAL**/
{
int gd=DETECT,gm=0;
initgraph(&gd,&gm,"");
setbkcolor(0);
}
void Start_Logo()/*启动标志*/
{
F(3,8);
B(200,150,439,259);
S(7);
R(201,151,442,262);
S(WHITE);
R(199,149,440,260);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
O(233,180,"HANOI TOWER");
S(1);
O(232,179,"HANOI TOWER");

S(WHITE);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
O(284,204,"V ");
S(1);
O(283,203,"V ");
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
S(WHITE);
O(205,240,"WERTE BY LiuLu AND JiaWeiHua!");
O(204,239,"WERTE BY LiuLu AND JiaWeiHua!");
}