资源简介
本人用C语言写的汉诺塔,采用递归的方法,并使用EasyX图形库将过程表示出来,内含详细的注释,代码直观
压缩包里包含:
1.EasyX图形库安装包,一键安装,支持VC6和VS(VS2015也支持) ;
2.汉诺塔源代码和可执行文件 。
使用方法:
1.解压EasyX_20151015(beta),然后打开Setup.hta一键安装图形库到VC6或VS ;
2.在VC6或VS中新建一个控制台工程 ;
3.将源代码添加到工程中 ;
4.编译,运行
运行时,按任意键开始,按w键加速,按s键减速,按q键暂停
汉诺塔的盘子数可在程序中修改宏定义,初始化为20
代码片段和文件信息
/***************** (C) COPYRIGHT 2016 Panda_Xiao ************************
* File Name : main.cpp
* Author : Panda_Xiao
* Date First Issued : 2016/07/15
* Description : 开发环境 VC++6.0含EasyX图形库
* 汉诺塔
*
*
*************************************************************************
* History:
*
*
************************************************************************/
/* Includes -----------------------------------------------------------*/
#include
#include
#include
#include
#include
/* Macro ---------------------------------------------------------------*/
#define TRUE 1
#define FALSE 0
//针的标号
#define FIRST_NEEDLE 1 //第一根针
#define SECOND_NEEDLE 2 //第二根针
#define THIRD_NEEDLE 3 //第三根针
//盘子的信息
#define DISH_NUM 20 //盘子数量
#define DISH_HIGH 10 //单个盘子高度
#define NEEDLE_HIGH (DISH_HIGH*DISH_NUM*2) //针的高度
//窗口大小
#define X_GUI_PIX (20*DISH_NUM*3+200)
#define Y_GUI_PIX (NEEDLE_HIGH+100)
/* Typedef ------------------------------------------------------------*/
//盘子的位置信息
typedef struct DISH_LOCATION
{
int needle_num ;
int needle_location ;
} Dish_Location ;
//布尔值
typedef int BOOL ;
//盘子的信息
typedef struct DISH
{
int dish_rad ;
Dish_Location dish_location ;
} Dish;
/* Variables ----------------------------------------------------------*/
Dish dish[DISH_NUM] ;
int move_speed = 7000 ;
/* Function prototypes ------------------------------------------------*/
void InitHanoiTower(void) ;
void DrawGUI(void) ;
void DrawDish(Dish aBOOL disable) ;
void MoveHanoiTower(int move_num int start_needle int finish_needle) ;
void MovebaseDish(int move_num int start_needle int finish_needle);
/************************************************************************
* Function Name : main
* Create Date : 2016/07/15
* Author : Panda_Xiao
* Description : Main Program
* Param : None
* Return Code : None
* Global Variable : None
* File Static Variable : None
* Function Static Variable : None
************************************************************************/
int main(void)
{
initgraph(X_GUI_PIXY_GUI_PIX) ; //初始化窗口大小
cleardevice() ; //清屏
HWND hWnd = GetHWnd() ; //设置窗口标题
SetWindowText(hWnd“汉诺塔“) ;
InitHanoiTower() ; //初始化汉诺塔
DrawGUI() ; //画出界面
getch() ; //按任意键开始
MoveHanoiTower(DISH_NUMFIRST_NEEDLETHIRD_NEEDLE) ; //将盘子从第一根针搬到第三根针
getch(); //按任意键退出窗口
return 0 ;
}
/************************************************************************
* Function Name : InitHanoiTower
* Create Date : 2016/07/15
* Author : Panda_Xiao
* Description : 初始化汉诺塔
* Param : None
* Return Code : None
* Global Variable
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 814653 2017-01-08 12:46 EasyX_20151015(beta).zip
文件 8823 2017-08-24 09:17 main.cpp
文件 282678 2017-09-22 13:50 汉诺塔.exe
- 上一篇:c++计算器 类与对象的练习
- 下一篇:两只船的装载问题 回溯法
评论
共有 条评论