1 / 6
文档名称:

推箱子C语言课程设计.doc

格式:doc   大小:57KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

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

分享

预览

推箱子C语言课程设计.doc

上传人:changjinlai 2017/12/26 文件大小:57 KB

下载得到文件列表

推箱子C语言课程设计.doc

文档介绍

文档介绍:《C语言课程设计》报告
C Program Experiment Designing

C语言课程设计目的及要求
目的:
根据课堂讲授内容,学生做相应的自主练****消化课堂所讲解的内容;通过调试典型例题或****题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。
要求:
熟悉Turbo C 的编程环境、主要菜单功能。
通过上机验证运算符、表达式、运算规则、函数使用。
熟练使用C语言的典型语句编写简单程序。
调试典型例题或****题。
提高上机编程能力
实验类型
设计类型
实验学时
40学时
实验设备
微型计算机、WINDOWS98以上版本的操作系统、Turbo 软件一套
C语言课程参考教材:
1. C语言程序设计清华大学出版社马靖善主编
2 (第三版).北京:高等教育出版社,2002

题目:推箱子
:
本程序为游戏推箱子,该程序的基本功能有:
推箱子游戏的求解难度比其他游戏高很多。有一些游戏有固定的解法,比如魔方。Windows经典小游戏扫雷可以总结出通用推理规则(请参见作者的“自动扫雷”中的说明)。一些游戏的搜索空间很小,可以用电脑蛮力求解,比如华容道,每一步只有两三种可能性。有一些游戏虽然搜索空间比较大,但是可以给电脑制定启发式搜索规则,让电脑比较“智能”地进行搜索,比如空当接龙,作者的空当接龙工具就是让电脑向着理顺牌的次序的方向前进。
推箱子游戏的搜索空间极大,又没有合适的一般方法。人可以总结出一些模糊的规则,但是这些规则非常难以用程序语言描述。推箱子问题已经被证明是一种“NP-难的问题”,“NP-难的问题”是计算机领域中至今没有找到有效算法的一类著名难题。
目前,根本不存在对所有推箱子问题都能有效求解的方法。网上现有的程序一般只能有效地解决10×10大小之内的题目。我的程序也不例外。
软件的特色
我的工具的特色是先进的死锁检测算法。死锁就是一旦把箱子推动到某些位置,一些箱子就再也无法推动或者无法推到目的点,比如四个箱子成2×2摆放。推箱子高手对何种情况引起死锁非常敏感,这样他们预先就知道决不能让某些局面形成,这也是高手高于常人的原因之一。我的工具能够检测出绝大部分这样的死锁,并且,由于对死锁的特征进行了高度提炼,能够检测出很多人也无法很快看穿的死锁。这样,工具的效率得到很大的提高。对于10×10大小以内的题目,一般都能很快解出。
每一行代表仓库的一行,不能有空行。
空格或‘='表示地板。每行最后连续的地板可以省略。
‘#’表示墙。
‘’<mailto:‘@’>表示人。
‘$’表示箱子。
‘.’表示目的点。
‘*’表示在目的点上的箱子。
‘+’或‘%’表示在目的点上的人。
“编辑”菜单下的“目标人位置”是本工具的特色之一。在求解一些大型题目时,虽然不能直接使用本工具,但是可以把题目分解成若干个子目标,有些目标可以用工具求解。这时,仅仅把箱子推到位是不够的,往往要指定最终状态时人所在的位置。比如要让人通过一个充满箱子的通道,然后把箱子回复原状。这时这个命令就可以起作用,它指定最终状态时人必须在的位置。
工具界面使用不同颜色表示墙、箱子和人。在显示解答时