QT象棋练习(5)-走棋

棋盘,棋子画好了,现在应该开始走棋了,走棋,用鼠标点击一个棋子,再点击一个位置,就可以走了。

首先就是鼠标事件函数,这里有两个,一个是鼠标释放和鼠标点下去的函数,选择释放的函数。因为在下棋的时候,习惯点击后松开,在要走的位置点击。

//void mousePressEvent(QMouseEvent*);  //鼠标点下去的
void mouseReleaseEvent(QMouseEvent*);  //鼠标释放的

获取释放后的坐标值,这个坐标值时窗口左边,我们需要的是棋盘坐标,所以在这还要进行坐标转换,上次时窗口的坐标值转化为棋盘坐标值,这次是要把其棋盘的坐标值转化为窗口的坐标值。

bool getRowCol(QPoint pt,int &row,int &col);

枚举每个棋子,看他们距离点击的距离是否小于半径,是的话点击的位于其坐标下。这个是一个效率低下的方式,但是最好理解。

bool Board::getRowCol(QPoint pt, int &row, int &col)
{
    for(row=0; row<=9; row++)
    {
        for(col=0; col<=8; col++)
        {
            QPoint c = center(row, col);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值