這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)利用Qt實(shí)現(xiàn)一個(gè)簡(jiǎn)單的五子棋小游戲,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
10年積累的網(wǎng)站制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)制作后付款的網(wǎng)站建設(shè)流程,更有梁溪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。下圖為游戲主窗口頁(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; } } } }