
SERVICE PHONE
363050.com发布时间:2025-07-22 07:11:50 点击量:
开元棋牌,开元棋牌官网,开元棋牌下载,开元娱乐,棋牌游戏平台,棋牌真钱游戏,注册送彩金棋牌,棋牌游戏,棋牌平台
先前在论坛中看了一位朋友让大家给他查看一下他写的推箱子游戏为什
么出错,我第一想法就是这很难做到,别人写的程序,特别是实现流程和逻辑
只有作者本人比较清楚,外人是要花费一定时间才能把握程序的中主体设计
思想再进一步研究。我想除了学习或项目要求是很少人愿意花这样的精力去
读别人的代码的,而粗看他的代码,我觉得是他本人在程序设计的思想上出
了差错,而细想现在对引擎或硬件知识介绍的多却很少有讲解怎么实现对现
实的抽象,即怎么合理的去设计游戏,实用软件......所以想写这样一篇文章来和
“棋盘”游戏的种类丰富,俄罗斯方块,推箱子,象棋,五子棋......等等这些都可以
归类到“棋盘”游戏中来。面对这类游戏设计的时候,我本人的见解是首先对
“棋盘”做研究,实在不行再去研究“棋子”。换句话说,就是以游戏中的活动区
域为研究对象,像象棋就是他的棋盘,俄罗斯方块就是他整个的方块的活动区
“棋盘法”实现起来其实很简单,一般来说就是把棋盘看作一个网格,那么我
们就把他看作与之对应的二维数组。然后适当组织数据结构去抽象旗子,制定
任何一个算法或思想都是有优缺点的,而我们的“棋盘法”的最大优点就是可
以方便我们组织数据结构,简化了游戏规则的编写,使我们编程时思路比较清
晰直观,通常就是直接根据游戏实际规则编写就可以了,这个我们会以实例加
以说明。然而他最大的缺点就是可能耗费大量内存,试想,如果我们的棋盘规
格很大,那我们就得开辟一个比较大的二维数组,并且如果你要将代码移植
到单片机,ARM等硬件平台上。那你就不得不考虑自己的方法问题,在这些硬件
平台上内存资源是极其宝贵的。也许有朋友会说那在PC机上总可以的。的确
现在PC机资源丰富,功能强大,可有时候还是不能如你所愿。一个很经典的
例子就是五子棋的人工智能,为了让五子棋在人机对战中具备攻防兼备的智
能,我们只有开辟一个于棋盘规格相呼应的二维的树组来记录棋盘上各点的
胜算几率,(有兴趣的朋友可以到网上去找找资料)这样的话,在DOS下你就
只能开辟一个约10X10的棋盘,即使在WINDOS下也只能大约16X16的棋
盘。(当然,这里是说直接开辟数组,采用特别技术的不算)。所以说,这个“棋盘
根据上面的介绍,我们应该很容易总结出“棋盘法”的适用条件。即棋盘规格
适中,棋子会频繁的在棋盘中移动。游戏规则若复杂更应首先推选“棋盘
法”。很好的一个例子就是象棋。象棋的走法规则复杂,而采用棋盘法就可以很
直观的把规则做出来。当然其中要注意的是,程序员要考虑好使用内存的大
小,考虑好游戏编写方法和内存数据管理技巧的相匹配。比如,一个很经典的游
戏--贪食蛇。他就不适合用“棋盘法”或是说用这个方法不合算。贪食蛇的棋
盘很大,可蛇身并不会很大,若采用“棋盘法”那内存无疑是浪费,而且在规则实
现上也是直接以蛇身作为研究对象好解决问题。所以在编写这类游戏时得在
前面说过,可以用“棋盘法”编写的游戏很多,我们以前玩的小游戏我基本都写
过,基于方便说明问题和论坛朋友提出的帮忙看看他的推箱子游戏。那下面
在编写这个游戏之前,我们先个游戏找个主题,我的是“植树”。即“箱子其实
就是树,由一个小人搬运到树坑中。首先我们开辟一个12X12大小的二维数
组作为棋盘。然后我们思考一下推箱子的棋子有哪些?一个是小人,可移动的
数,还有树坑。我们的游戏过程也很简单,在棋盘上有一圈篱笆,这个是小人
的活动方法,其中有几个固定的树坑,还有分散在不同地方的树,小人要推动
这些树全部进入树坑就算游戏通关。有了以上思考,我们就着手来实现。
我们开辟一个12X12的二维数组表示棋盘,然后我们来定义个数值代表的含义
。数值为0表示此格子为背景,1表示为篱笆,2表示为树,3表示为树坑,4
我们以小人 的运动为基 础,很自然就可 以写出具体 的规则。首先我们要 明确
这么一 点,当按动方向 键后,要记录下小 人将要走到 的格子,然后进行规 则判
如果小人将 到达的格子 不为树(即小人只是 自己移动,不用搬动树 )
如果将被小 人搬动的树 允许被搬动 (即被搬动树 的前方无其 他树并且不 是
看,以上就是对 规则的一个 文字实现,我们只要按 照以上规则 写出代码就 实现
了游戏 规则的程序 化。我想到这也 充分体现了 “棋盘法”的最大优势 。利群棋牌
游戏规则被 简化,显的很直观 易懂,容易编程实 现。我我们来看 代码:们来看代
看以上代码 就是对前面 规则文字叙 述的实现。好了,其实介绍到 这里,我这个所
谓 的“棋盘法”也就完了。而对此种方 法,我个人总结 就是 —— 只要他能简 化
规则,让规则实现 起来方便,即使多耗费 点内存,美工多点工 序我都是愿 意采用
写这篇文章 纯粹就是发 表自己的一 点观点,希望给想接 触游戏编程 的朋友一点
启发,和游戏编程 高手讨论方 法。若是朋友你 有其他的想 法可以提出 我们一
2 表示未移植 树,3 表示树坑,4 表示人, 5 表示树种坑 中*/