生活随笔
收集整理的這篇文章主要介紹了
C++与Qt开发人机象棋(第二部分)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
C++與Qt開發(fā)人機(jī)象棋(第二部分)
項目目錄
文件名->(包含)類名1->(包含)類名2
ChessByChessBy.pro
| Headers | Board.h | |
| – | – | – |
| Sources | Board.cpp | main.cpp |
上次我們講到 調(diào)用了 獲取鼠標(biāo)點擊的當(dāng)前區(qū)域
以及在屏幕上繪制線段,圓,文本,改變他們的顏色。
這次我們就用上次所用到的來創(chuàng)造棋盤。
現(xiàn)在大家來見識下↓面的棋盤
先來講一下原理 :
整個棋盤 都是由線段組成的,那么我們已經(jīng)學(xué)了如何繪制線段,該如何繪制呢?
當(dāng)然是painter.drawLine(QPiont(x,y),QPiont(x,y)); 它的庫是#include 《QPionter》
先來說一下 第一個 QPiont 它是線的點,我們畫一條線是由第一個點到二個點,所以第一個QPiont就是第一個點,那么里面的X,Y是什么呢? 看下面的圖
沒錯!! ??Bién Gracias!! 就是這樣!
方位圖正如你所想,那么 點是從你畫的距離開始算起來,到你畫到結(jié)束的點位置。
現(xiàn)在說一下如果 QPiont(4,4)只說這個起點 在哪里呢?
是的,就在打狗棒界限的上方!
既然大家都已經(jīng)明白的差不多了,那么我們就上代碼吧?
這句話要加到你的 ChessBy.pro里面哦
QT+=widgets gui
接著我們打開 Board.h
#ifndef BOARD_H
#define BOARD_H#include <QWidget>class Board : public QWidget
{Q_OBJECTpublic:Board(QWidget *parent = 0);virtual void paintEvent (QPaintEvent *); /新建一個 繪畫函數(shù)~Board();
};#endif // BOARD_H
接著找到 Board.cpp#include "Board.h"
#include <QPainter> //這個是畫家函數(shù)
#include <QWidget> //很熟悉的雞肋(基類)
Board::Board(QWidget *parent): QWidget(parent)
{
}Board::~Board()
{}
void Board::paintEvent(QPaintEvent *) //直接寫上我們的繪畫函數(shù)
{setWindowTitle("él bien gracia Te"); //設(shè)置一個標(biāo)題(name)QPainter painter(this);int d=40; //全局變量 d為方塊像素大小//畫10條橫線for(int i=1;i<=10;++i) //1.2.3.4.5.6.7.8.9.10{painter.drawLine(QPoint(d,i*d),QPoint(9*d,i*d));//第一個qpoint是起點,第二個是終點}//畫9條豎線for(int i=1;i<=9;++i){if(i==1 ||i==9)painter.drawLine(QPoint(i*d,d),QPoint(i*d,10*d)); //這里之前已經(jīng)講過啦else{painter.drawLine(QPoint(i*d,d),QPoint(i*d,5*d)); //這里是打狗棒界限那里,只畫第一條painter.drawLine(QPoint(i*d,6*d),QPoint(i*d,10*d)); //然后在畫出最后一條//繪制文本//先設(shè)置畫筆顏色painter.setPen(QColor(0,160,230));//繪制區(qū)域為當(dāng)前界面的整個區(qū)域painter.drawText(160,220,QStringLiteral("打狗棒界線"));painter.drawText(120,220,QStringLiteral("beta"));}}//九宮格painter.drawLine(QPoint(4*d,1*d),QPoint(6*d,3*d)); //斜著畫 米子圖painter.drawLine(QPoint(6*d,1*d),QPoint(4*d,3*d)); //斜著畫 米子圖painter.drawLine(QPoint(4*d,8*d),QPoint(6*d,10*d)); //斜著畫 米子圖painter.drawLine(QPoint(6*d,8*d),QPoint(4*d,10*d)); //斜著畫 米子圖
}
總結(jié)
以上是生活随笔為你收集整理的C++与Qt开发人机象棋(第二部分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。