cocos2d-x 3.3 之黑白棋设计 NO.1 初步设计

[以前的文章,重新发布]

接触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模块

 

下篇文章将会详细介绍如何单向搜索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值