接触cocos2d-x还不久,之前跟着教学视频做了贪吃蛇和微信飞机大战,学到了一些基础的东西.
后来得到任务要做一个黑白棋.这个算是完全自己动手,没有参考网上的内容(所以导致我的棋盘是10*10的,好像应该是8*8的).....
文章是项目基本完成后才写的,目的是复习一下学习的内容,
一:界面设计
从图片可以看出游戏有4个区域:
区域1,棋盘区域
棋盘为10*10的,根据玩家在屏幕上点击的位置来下子
区域2:显示区域
显示黑色与白色棋子数,还有显示现在是哪方的回合
区域3:计时区域
区域里有一个闹钟,计时十秒,十秒之内没有下子就跳过回合
区域4:控制区域
略
二:代码设计
1.class Chess : public Sprite
2.class Game:public Layer
我一共设计了两个类,第一个类为chess,继承于精灵类,用于 *** 作单个棋子,第二个类是Game类,继承于Layer,用于控制整个游戏的逻辑与绘图(这是一个很大的失误,绘图应该和逻辑分开,包括后来的AI都应该各自封装一个类)
以下设计只是思路,真实代码的函数可能多很多
chess的设计:
type;//棋子类型,1为黑 -1为白 0为空
voID location(int col,int row);//根据棋盘数组坐标将棋子定位到屏幕上
voID set(int type);//根据type绘棋子
game的设计:
Chess* chess[ROW_NUM][Col_NUM];//创建一个指针数组,分别指向棋盘上100个棋子
int dir;//我设计的搜索算法的核心,目的是为了减少代码量,但并不是什么高级的算法
//控制模块
voID set_init();//初始化棋盘
voID set_again();//重新开始
voID give_up();//认输
voID control_huiqi();//悔棋
//逻辑模块
Point locationcon(int col,int row);//根据点击的坐标转换为棋盘的坐标
bool set_Could(int turn,int dian_col,int dian_row);//向四周搜索是否可下//判断是否可下用
bool set_serch(int turn,int dir,int col,int row); //单向搜索是否可下
voID judge_num();//数黑白棋子数
bool judge_win();//判断输赢
bool judge_skip(int turn);//判断是否跳过
voID Ontimer(float t);//计时
voID Tip();//提示
//绘图模块
略
//AI模块
略
下篇文章将会详细介绍如何单向搜索
总结以上是内存溢出为你收集整理的cocos2d-x 3.3 之黑白棋设计 NO.1 初步设计全部内容,希望文章能够帮你解决cocos2d-x 3.3 之黑白棋设计 NO.1 初步设计所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)