上一节,我们的棋盘棋子都非常漂亮地呈现在屏幕上了,但还不支持走棋动作。这一节,我们要记让棋子可以支持行棋动作,这将依赖于手势检测 Feature。

检测到用户点击后,我们将结合棋类游戏的棋子移动方案,处理移动棋子和吃子逻辑。

本节提要

  • 检测棋盘点击事件
  • 将点击坐标换算成棋盘上的棋子位置
  • 谁是棋盘点击事件的接管者
  • 处理行棋和吃子逻辑

检测棋盘点击

在 Flutter 中,要检测用户的点击、长按、拖拽等操作是很简单的事情,只需要用 GestureDetector 包裹你想要查检测手势的 Widget 即可。

我们修改一下 BoardWidget 的 build 方法,用 GestureDetector 包裹我们的棋盘,将它修改成下边这样:

 @overrideWidget build(BuildContext context) {//final boardContainer = Container(width: width,height: height,decoration: BoxDecoration(borderRadius: BorderRadius.circular(5),color: ColorConsts.BoardBackground,),child: CustomPaint(painter: BoardPainter(width: width),foregroundPainter: PiecesPainter(width: width, phase: Phase.defaultPhase()),child: Container(margin: EdgeInsets.symmetric(

支持行棋动作:处理移动棋子和吃子逻辑相关推荐

  1. Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局

    Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...

  2. Cocos2d-x制作跳棋第三步:棋子动作实现及AI算法思想

     上周跟大家分享了Cocos2d-x跳棋制作如何建立工程和界面编写,今天来      跟大家分享一下如何实现棋子相关动作及AI思想.             在跳棋中棋子有两种动作:移动.跳跃.   ...

  3. 【飞行棋】多人游戏-微信小程序开发流程详解

    可曾记得小时候玩过的飞行棋游戏,是90后的都有玩过吧,现在重温一下,这是一个可以二到四个人参与的游戏,通过投骰子走棋,一开始靠运气,后面还靠自己选择,谁抢占先机才能赢,还可以和小伙伴们一起玩,狭路相逢 ...

  4. CVPR 2020满分论文 | FineGym:面向细粒度动作分析的层级化高质量数据集

    机器之心发布 作者:邵典等 本文介绍了一个大规模.高质量.层级化标注的细粒度人体动作数据集「FineGym」,研究者来自香港中文大学,目前这项研究已被 CVPR 2020 接收为 oral 论文. 论 ...

  5. cocos2dx中关于Action动作的相关API的详细介绍

     //CCMoveBy  创建一个移动的动作 //参数1:移动到目标坐标所需的时间 //参数2:目标坐标 //支持reverse 可以获取其反向动作 //CCMoveTo  一样的 //CCAct ...

  6. 3A游戏的必备工艺! 天美是如何将动作捕捉运用到游戏中的?

    首发于"腾讯天美工作室群"知乎机构号 去年,<王者荣耀>推出上官婉儿-梁祝皮肤.在这款皮肤的制作过程中,我们对越剧名家茅威涛进行动作捕捉,让"徒弟" ...

  7. sql server 里面怎么支持数字使用双引号_国查:用中文编写SQL

    这两天被 文言(wenyan-lang)刷屏了,这个项目在于使用文言文进行编程,我打算蹭个热度,把年初的作品再捞一捞,即中文SQL. 1. 文言 Wenyan: 吾有一數.曰三.名之曰「甲」. 為是「 ...

  8. cocos2dx中关于Action动作的相关API的具体介绍

     //CCMoveBy  创建一个移动的动作 //參数1:移动到目标坐标所需的时间 //參数2:目标坐标 //支持reverse 能够获取其反向动作 //CCMoveTo  一样的 //CCAct ...

  9. cocos2dx Action动作解析(1)

    bool HelloWorld::init() {// // 1. super init firstif ( !CCLayer::init() ){return false;}CCSprite * s ...

最新文章

  1. 清华校友斩获ACM博士论文奖!相关研究为自动驾驶新算法奠定基础
  2. 昨天死线程的问题又找到了别的原因
  3. Chrome 技术篇-console控制台检测xpath、css唯一性
  4. Access和Access VBA学习总结
  5. Spring Cloud 服务安全连接
  6. 两台linux之间传递文件
  7. linux如何输出当前时间,如何在linux下输出当前时间
  8. Dubbo 3.0 前瞻系列 | 2020双11,Dubbo3.0 在考拉的超大规模实践
  9. Flutter监听网络变化
  10. 彭国伦Fortran95学习笔记(一)第一至七章
  11. SpringBoot+Vue实现前后端分离的旅游推荐网站
  12. 渗透之——触发Easy File Sharing Web Server 7.2 HEAD缓冲区溢出的Python脚本
  13. SAP注塑行业ERP系统软件的分析
  14. 闪电Android视频转换器,闪电Android视频转换器
  15. All matches were filtered out by modular filtering for argument: mysql-community-server
  16. lr_think_time()
  17. [个人开发者赚钱五]植入广告等获取收益
  18. 上行OFDMA接入机制(UL-OFDMA)
  19. XENOGEARS,延续万年的的永恒之爱(引)
  20. Shellmo:用于娱乐和教育的Aquatic 3D打印机器人

热门文章

  1. python实现概率论与数理统计_如何学概率论与数理统计?
  2. shell screen
  3. 高档自行车市场现状及未来发展趋势分析
  4. CentOS系统SSH无法连接
  5. 软件项目交接最怕什么
  6. 如何用 Python 编写网页病毒
  7. Linux驱动开发(硬件基础知识)——存储器
  8. 火狐浏览器xpath工具(Try Xpath)
  9. [深度学习学习笔记]注意力机制-Attentional mechanism
  10. Flutter中Padding、Row 、Column 、Expanded 组件详解