• 大小: 864KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C/C++
  • 标签: 汉诺塔  

资源简介

本人用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

评论

共有 条评论