鼠标点击棋子,棋子能够进行相应的操作。

mouseReleaseEvent(QMouseEvent *ev)

鼠标点击了以后,我们要知道鼠标点击的这个棋子的横纵坐标和这一点的棋子的id,这个时候需要调用mouseReleaseEvent(QMouseEvent *ev);函数,这里的ev存放的就是现在的点击的棋子的位置,接下来我们要做的就是获取鼠标点击位置的横纵坐标和id。

click(QPoint pt);

在这个函数里面首先设置变量row,col,分别代表的是鼠标点击位置的横纵坐标,这个时候用到了getClickRowCol(int pt,int row,int col);函数,通过遍历棋盘的方法找到棋子的位置

棋子是一个圆形的区域,那么我们点击棋子上面的任何位置应该都满足条件(点击棋子),我的计算方法是勾股定理,如果说鼠标点击位置与中心点位置的横纵坐标的平方和小于半径的平方的话,就代表当前鼠标的点击位置是在我们选择的这个位置,如果遍历一边都没有的话,就当做是在棋盘的外面。

 bool Board::getClickRowCol(QPoint pt, int &row, int &col){for(row=0; row<=9; ++row){for(col=0; col<=8; ++col){QPoint distance = center(row, col) - pt;if(distance.x() * distance.x() + distance.y() * distance.y() < _r* _r)return true;}}return false;}

为了避免因为找不到棋子而带来的麻烦,我们把这个函数设置为bool类型,再便利一遍退出的时候判断一下鼠标点击的位置是不是在棋盘上,如果没在棋盘上就返回false。

找到了鼠标点击位置的横纵坐标,接下来是判断当前位置上是否有棋子,如果说有棋子的话就获取这个棋子的id

C++ QT开发人机象棋(鼠标点击)相关推荐

  1. C++与Qt开发人机象棋(第二部分)

    C++与Qt开发人机象棋(第二部分) 项目目录 文件名->(包含)类名1->(包含)类名2 ChessBy ChessBy.pro Headers Board.h – – – Source ...

  2. C++ QT开发人机象棋(大纲)

    目录 1 系统需求分析: 1.1游戏简介: 1.2机器下棋史: 1.3研究内容: 1.4编译环境:QT 2 总体设计 2.1系统功能分析: 1.界面表示 2.鼠标点击 3.棋子走法 4.评估函数 5. ...

  3. C++ 与Qt开发人机象棋(第一部分)

    MyWidget.h //Hearders #include <QWidget> #include "MyWidget.h" #include <QPushbut ...

  4. C++ QT开发人机象棋(搜索算法)

    使用极大极小值算法,在满足电脑下棋的时候自己的局势能够获得最大权值的情况下判断在当前局势下的玩家的最小的权值,这样能够保证算法最优. 先从一个故事说起,比如说现在有有一个小偷偷了一些物品,小明看到后跟 ...

  5. C++ QT开发人机象棋(界面表示)

    目录 1.1界面表示: 1.1.1棋盘表示: 1.1.2.棋子表示: 2.1界面表示: 2.1.1棋盘绘制 一:作用 二:执行时间 2.1.2棋子绘制 1.1界面表示: 1.1.1棋盘表示: 使用十条 ...

  6. C++ QT开发人机象棋(评估函数)

     每个棋子在当前点的所有可能走的情况用一个容器存储起来,根据搜索的层数输出相应的权值. 在搜索到最底层的时候进行权值的判断,判断的最终结果为棋盘上面的黑棋的棋子分减去棋盘上面的红棋的棋子分. long ...

  7. C++ QT开发人机象棋(剪枝算法)

    改变singleGame()里面的_level的值为5的话,程序就会崩溃,很显然由于最大值最小值算法遍历整个棋盘几层的话时间复杂度十分的高,为了优化程序我们就应该减少程序的运行量,那么也就有了剪枝算法 ...

  8. 【Qt一骚操作】Qt 开发中触发鼠标悬停事件

    Qt 开发中触发鼠标悬停事件 (1)setAttribute( Qt::WA_Hover,true) //在构造函数中 ui->btnGetRadarPara->setAttribute( ...

  9. QT之QLineEdit——实现鼠标点击事件

    QLineEdit添加鼠标点击事件主要分为三步: 重写lineEdit类(MyLineEdit) 添加相应的启动的信号和槽的事件 将使用时的QLineEdit提升为自己写的类 重写lineEdit类 ...

最新文章

  1. 2010年计算机专业怎么样,关于2010年计算机专业考研
  2. RHEL 5服务篇—部署DNS域名解析服务(一)BIND软件
  3. 洛谷 P2893 [USACO08FEB]修路Making the Grade 解题报告
  4. 需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP...
  5. python扫描局公网ip_公网IP检测(python)
  6. select2 属性标签整理
  7. [渝粤教育] 西南科技大学 线性代数 在线考试复习资料
  8. linux的strace命令(详解)
  9. 一个sql生成hive日期维度表
  10. 机器学习11-不平衡数据之采样
  11. 游戏策划入门教程(1)工具篇
  12. vb在服务器上新建文件夹,VB 创建文件夹
  13. mac pycharm如何打开setting
  14. 电影天堂二级页面抓取案例
  15. 数据资产运营 = 数据资产盘点 + 数据治理 + 数据价值实现
  16. abaqus .cae文件默认程序设置
  17. java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框
  18. python获取网页内容 不打开_网页抓取python不返回任何内容
  19. 棋牌游戏前后端技术介绍
  20. 李峋同款爱心代码 (超好看) | 电视剧《点燃我温暖你》

热门文章

  1. altium designer 18 调整PCB尺寸大小
  2. 基于stm32f103rct6(秉火mini板)的rc522RFID读卡例程
  3. 腾讯大王卡免流手机投屏电视看春晚
  4. 阿里云负载均衡【SLB】使用实践方案
  5. vscode 文件格式化
  6. 梦次元poi进不去了_free gv video GV
  7. cpu功能解析,cpu功能作用与其工作过程
  8. 前端JavaScript自学复盘梳理D2
  9. Spring定时任务实现方式
  10. uniapp,video视频播放不了,页面显示不完整