這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)利用Qt實(shí)現(xiàn)一個(gè)簡(jiǎn)單的五子棋小游戲,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
下圖為游戲主窗口頁(yè)面:
第一步:窗口繪圖的實(shí)現(xiàn)(QPaintEvent繪圖事件 和 QMouseEvent鼠標(biāo)事件)
①鼠標(biāo)事件(這里我的是mouseDoubleClickEvent()雙擊事件)
void GamePage::mouseDoubleClickEvent(QMouseEvent *event)//鼠標(biāo)雙擊事件 { m_dx = event->x(); m_dy = event->y(); //避免亂點(diǎn)時(shí)存入坐標(biāo) 需添加:標(biāo)志符--》game狀態(tài) 坐標(biāo)的界限(點(diǎn)) if(m_dx < POINT_X_MAX && m_dy < POINT_Y_MAX && m_bRunState == true) { //如果點(diǎn)在交叉點(diǎn)周圍則設(shè)置點(diǎn)在交叉點(diǎn)上(判斷點(diǎn)位置) QPointF newPoint(gainPointPosition(QPointF(m_dx,m_dy))); if(!m_VectorRedPoint.contains(newPoint) && !m_VectorBlackPoint.contains(newPoint))//判斷點(diǎn)是否已經(jīng)存在 { if(m_iFlagWho == 0)//紅棋 { m_VectorRedPoint.append(newPoint); m_iFlagWho = 1; } else//黑棋 { m_VectorBlackPoint.append(newPoint); m_iFlagWho = 0; } } } }