汉诺塔游戏的设计(图文)

时间:2007-10-06 23:45:16   来源:  作者:ChinaITzhe  编辑:海


  if(iNum==3)
  {
   Move(iA,iC);
   ::Sleep(500);

   Move(iA,iB);
   ::Sleep(500);

   Move(iC,iB);
   ::Sleep(500);

   Move(iA,iC);
   ::Sleep(500);

   Move(iB,iA);
   ::Sleep(500);

   Move(iB,iC);
   ::Sleep(500);

   Move(iA,iC);
   ::Sleep(500);
  }
  //个数大于3,递归实现移动。
  else
  {
   //递归自动移动。
   AutoMove(iA,iC,iB,iNum-1);
   Move(iA,iC);
   ::Sleep(500);
   AutoMove(iB,iA,iC,iNum-1);
  }
 }
};
程序实现的结果如下图:

由于堆栈内存的限制,选关不可能是无限个盘子,本程序设计的最大关数是8。自动移动是用递归实现的,自动移动的过程中,其他消息无法响应,可以改成多线程或由用户控制的形式。上述的程序附有Visual C++源代码,并在Windows XP和Visual C++6.0下调试成功。

关键字:VC,程序

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面