您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > C++Builder开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

用C++Builder5.0设计九宫排字游戏
2001-12-22· ·木合塔尔··  

1 2 3 4 5  下一页


  九宫排字问题(又称八数码问题)是人工智能当中有名的难题之一。问题是在3×3方格盘上,放有八个数码,剩下第九个为空,每一空格其上下左右的数码可移至空格。问题给定初始位置和目标位置,要求通过一系列的数码移动,将初始位置转化为目标位置,下图(图一)为问题的一个状态:

图一、九宫排字问题的一个状态

九宫排字问题不是任何情况下都是有解的,我们可以把一个状态,自左至右,自上而下地用一维数组表示成(a1,a2,a3,a4,a5,a6,a7,a8)(空格跳过),而相应的位置也按同样的顺序排列,那么,如果在位置iaj,则说存在一个逆序,若逆序总数为偶数,则称相应的状态为偶状态,逆序总数为奇数,则称相应的状态为奇状态。

很明显,空格横向移动时,逆序总数无变化,而空格纵向移动时,逆序总数改变-2、0或2,因此,在任何情况下,奇状态和偶状态不可能相互转换。

九宫排字问题的求解方法,就是从初始状态出发,不断地空格上下左右的数码移至空格,将一个状态转化成其它状态,直到产生目标状态。如图二。

本文用C++Builder5.0编写九宫排字问题游戏。游戏规则是,动态产生初始状态,由初始状态出发,不断地空格上下左右的数码移至空格,若能排出目标状态,则成功。


图二、九宫排字问题的状态图


编程实现:

【第一步】选用C++Builder的菜单项“File|New Application”,创建一个工程。

【第二步】给项目加入九个Panel控件,一个MainMenu控件,两个Label控件,并各控件的安排如图三所示。


图三、各控件的安排

1 2 3 4 5  下一页

【责任编辑:  】
【发表评论】【关闭窗口】
■ 相关内容
 用C++ Builder 制作屏幕保护程序
 用C++ Builder3 制作记事本
 C++Building制作闹钟
 利用C++ Builder 5.0创建用户自己的网上聊天程序
 用C++ Builder在桌面上画图
 在C++ Builder中使用ActiveX控件显示Flash动画
 C++BUILDER中一些实现界面效果的技巧
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!