QT實現五子棋小遊戲

2021-09-25 03:44:50 字數 1989 閱讀 7304

學習qt的過程中,為了加深自己的一些基礎操作,也為了想裝x,就自己寫了乙個五子棋小遊戲,目前介面沒寫完整,遊戲主題部分可以玩。

五子棋遊戲主要的操作有三個。

第一:

void mainwindow::paintevent(qpaintevent *)  //使用繪圖事件時需要新增時間函式在**件下面

for(int i=0;i<=13;i++) //橫線

brush.setstyle(qt::solidpattern);

if(chess_x>=0&&click_x<24&&chess_y>=0&&chess_y<14) //繪製下子標記點

/*繪製棋子 */

for(int i=0;i<=23;i++)

for(int j=0;j<=13;j++)

if((game->gamemapvec[i][j]==-1)) //繪製棋子}}

上述函式實現的功能就是繪製棋盤,棋子,和下棋標記。

當滑鼠移動時,座標會跟著移動,判斷滑鼠當前座標,動態繪製除下棋標記,當滑鼠出發按壓事件後,在此處繪製乙個棋子。

第二:

void mainwindow::mousemoveevent(qmouseevent *event)    //滑鼠按壓事件

else

}

上述**實現了如下功能:

1,捕獲滑鼠移動時的座標,並判斷是否在棋盤內。

2,若果在棋盤內,就同過處理,讓滑鼠在某乙個棋盤十字附近的時候,讓座標直接等於棋盤的格仔相應的座標。比如左上角第乙個就是(0,0),這樣,棋盤在我們眼裡相當於乙個二維陣列。具體處理過程,程式裡面有注釋。

第三:

int gamemode::jude_win()

, ,,

,};int situ_2[5][5]= ,,,

,};int situ_3[5][5]= ,,,

,};int situ_4[5][5]= ,,,

,};int situ_5[5][5]= ,,,

,};int situ_6[5][5]= ,,,

,};for(int i=0;i<=19;i++)

for(int j=0;j<=9;j++)

if(cnt==-5)

}cnt=0;

for(int x=0;x<=4;x++)

for(int y=0;y<=4;y++)

if(cnt==-5)

}cnt=0;

for(int x=0;x<=4;x++)

for(int y=0;y<=4;y++)

if(cnt==-5)

}cnt=0;

for(int x=0;x<=4;x++)

for(int y=0;y<=4;y++)

if(cnt==-5)

}cnt=0;

for(int x=0;x<=4;x++)

for(int y=0;y<=4;y++)

if(cnt==-5)

}cnt=0;

for(int x=0;x<=4;x++)

for(int y=0;y<=4;y++)

if(cnt==-5)

}cnt=0;

}return 0;

}

上述**是用來判斷輸贏的。學過影象處理的都知道卷積操作。五子連珠就是相當於用乙個5x5的模板去掃瞄整個棋盤。

在這之前,我用和乙個二維陣列儲存下棋的情況。初始化陣列為0.(沒有棋子),當觸發滑鼠按壓事件的的時候,如果黑色,標記為1,白色為-1.那麼用上述六中情況可以包括所有五子連一起的情況。

ps:剛開始用了四中情況。公尺子一樣的四個模板。但是這樣,邊界就掃瞄不到。

五子棋的小遊戲

感想 終於寫出人生中第乙個小遊戲來了 include include include include using namespace std const int x 21 棋盤行數 const int y 21 棋盤列數 char p x y 定義棋盤 int m 0 定義臨時點,儲存輸入座標 in...

python五子棋小遊戲

話不多說,直接上 全部工程檔案,在github 五子棋 效果預覽 判斷上下左右左上右上左下右下8個方向 i x 1 while i 0 if darray i y 1 num1 1 i 1 else break i x 1 while i 19 if darray i y 1 num1 1 i 1 ...

c 小遊戲 五子棋

include include includeusing namespace std const int x 21 棋盤行數 const int y 21 棋盤列數 char p x y 定義棋盤 int m 0 定義臨時點,儲存輸入座標 int n 0 void display 輸出棋盤 else...