日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2023/12/14 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ QT开发人机象棋(界面表示) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.1界面表示:

1.1.1棋盤表示:

1.1.2.棋子表示:

2.1界面表示:

2.1.1棋盤繪制

一:作用

二:執行時間

2.1.2棋子繪制


?

1.1界面表示:

?

1.1.1棋盤表示:

?

使用十條橫線與九條豎線在QT軟件下繪制棋盤,在畫豎線的時候為了顯示出河界,對第2到第8列進行特判。

?

1.1.2.棋子表示:

?

每一個棋子都有一些信息,對于這些信息定義一個棋子類把他們存儲起來,在打印棋子的時候根據這些棋子把棋子打印出來。

?

2.1界面表示:

?

調用QPainter頭文件。人們在下象棋的時候首先做的事情就是擺放棋盤,棋盤擺放完成之后就是擺放棋子,在電腦上我們不能夠像現實中這樣拿出來一個現成的棋盤來讓我們使用,不過我們可以自己做一個棋盤來使用。我使用的是QPainter進行繪圖,QPainter只能在類對象的paintEvent()函數中繪制圖形,其中我用到了painter.drawLine(繪制直線)、painter.setBrush(填充顏色)、painter.setPen(寫字)、painter.drawEllipse(畫一個圓)、painter.setFont(設置字體大小)和painter.drawText。

?

2.1.1棋盤繪制

?

畫橫線:painter.drawLine(QPoint(d,i*d),QPoint(9*d,i*d));其中d代表的是每個方格的長度,對于QPoint括號內的參數,后面的代表行數,前面的代表列數。

畫豎線:painter.drawLine(QPoint(i*d,d),QPoint(i*d,10*d));相較于前面的畫橫線的代碼,這個是該表參數的順序。在畫豎線的時候為了顯示出河界,對第2到第8列進行特判。

畫九宮格:painter.drawLine(QPoint(4*d,1*d),QPoint(6*d,3*d));四個與與這個相類似的函數構成,坐標代表的是棋盤上九宮格的對頂角的坐標。

棋子表示:每一個棋子都有一些信息,對于這些信息定義一個棋子類把他們存儲起來,存儲這些棋子的是Stone類,所有的信息在定義的_s[]數組里面。Stone類中包含int _row;int _col;TYPE _type;int _id;bool _dead;bool _red;分別代表每一個棋子的橫縱坐標,棋子類型,棋子的序號,棋子是不是還在棋盤上以及棋子的顏色,對于這些棋子的初始化,我使用init(int id);rotate();兩個函數,前者的作用是把棋子的信息儲存在數組里面,后者的作用是根據棋子的英文名字給出其對應的中文名字,以方便打印棋子,在打印棋子的時候根據這些信息把棋子打印出來。

繪制棋盤使用的函數是paintEvent(QPaintEvent *),說到這個函數要提到的是這個函數的作用和這個函數的執行時間:

?

一:作用

?

排好棋盤,然后往棋盤上面放棋子

?

二:執行時間

?

在構建窗體的時候執行

在窗體update的時候執行

系統認為窗口需要重新繪制的時候執行

也就是說我們每一次在調用這個函數的時候都會重新繪制一個界面,那么我們在繪制界面的時候要考慮的問題就是怎么通過坐標的形式把相應的棋子放在正確的位置上面去。

解決這個問題的方法就是在board頭文件里面加一個_s[]數組,用這個數組來存儲每個棋子的位置,到了這一步我們已經知道棋盤怎么繪制了,而且也知道在棋盤上面的每個棋子的位置在哪里了,接下來要考慮的問題就是怎么給這些棋子、棋盤加上相應的圖形使之可視化增強,這個時候QT上面強大的庫函數就派上用場了。

?

2.1.2棋子繪制

?

繪制棋子的函數為:drawStone(QPainter& painter,int id);這一部分關鍵點就是通過id找到這個棋子在棋盤上相對應的位置(存在或者不存在),在這個位置的周圍畫一個圓,這個圓的半徑為方格的一半長,畫好圓后在圓上進行涂鴉(背景色),接下來就是在圓上面寫字了。

這里有一個需要注意的地方,我們鼠標再點擊一個棋子的時候,這個棋子的顏色應該是要發生改變的,這樣我們才能夠知道我們現在下的是哪一個棋子。

所以我們要設置一個全局變量_selectid用來記錄當前鼠標的點擊位置。

總結

以上是生活随笔為你收集整理的C++ QT开发人机象棋(界面表示)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本阿v视频 | 久久免费小视频 | 亚洲国产福利视频 | 国产视频三区 | 99热欧美 | 亚洲色图 一区二区 | 亚洲一区二区三区免费 | 91国内精品野花午夜精品 | 恶虐女帝安卓汉化版最新版本 | 久久久久久久久久久久国产 | 人人搞人人爱 | 99在线小视频 | 亚洲三级图片 | 91超薄丝袜肉丝一区二区 | 欧洲影院 | 欧美一道本 | 日韩乱码在线观看 | 国产视频h | 九九综合视频 | 亚洲好视频 | 91在线精品秘密一区二区 | 看黄色一级片 | a级在线看 | 天天干天天色 | 91精品国产综合久久久蜜臀图片 | 国产片高清在线观看 | 色视频在线观看免费 | 一本色道久久综合亚洲精品图片 | 久久久久成人片免费观看蜜芽 | 久久蜜臀精品av | 亚洲欧美另类国产 | 亚洲天堂中文字幕在线观看 | 亚洲日本天堂 | 啪啪国产精品 | 天堂资源中文在线 | 乱色精品无码一区二区国产盗 | 亚洲高清一区二区三区 | 黄色片91 | 亚洲精品电影在线 | 黄色av资源| mm131国产精品| 老司机深夜福利在线观看 | 黄色在线观看网站 | 福利视频91| 亚洲性欧美色 | 播放灌醉水嫩大学生国内精品 | 成人动漫在线免费观看 | 欧美色射 | 一边摸一边做爽的视频17国产 | 五月天狠狠干 | 日批免费观看 | 中文字幕av网址 | 国产一级片视频 | 亚洲 欧美 日韩在线 | 91久久人澡人人添人人爽欧美 | 成人在线观看www | 精品在线免费播放 | 精品成人在线视频 | 九一天堂 | 国产成人毛毛毛片 | 亚洲精品影片 | 91精品国产91| 欧美 日韩 国产 成人 在线观看 | 五月天福利视频 | 一本久| 欧美乱码视频 | 91欧美激情一区二区三区成人 | 性欧美精品 | 日本人の夫妇交换 | 精品国产九九 | 亚洲香蕉网站 | 超碰人人超碰 | 精品久久久无码中文字幕 | 久久97超碰 | 少妇精品无码一区二区免费视频 | 国产丰满农村老妇女乱 | 九色在线视频 | 丰满少妇高潮一区二区 | 四虎精品欧美一区二区免费 | 少妇高潮一区二区三区99欧美 | 天天弄天天干 | 天堂在线中文8 | 婷婷av一区二区三区 | 国产精品人人爽人人爽 | 高清一区二区三区四区五区 | k8经典成人理伦片 | 美女扒开大腿让男人桶 | 国产欧美在线观看 | 国产性生活一级片 | 亚洲制服无码 | 欧美视频一二三 | 日本精品在线观看视频 | www.猫咪av.com | 婷婷国产在线 | 99热99re6国产在线播放 | 亚洲一区二区观看播放 | 天天色影| 内射中出日韩无国产剧情 | 国产三级网站 |