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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++五子棋(六)——游戏结束

發布時間:2025/3/21 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++五子棋(六)——游戏结束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

規則原理

如圖

判斷游戲結束

  • chessData.h
//row,col 表示當前落子 bool checkWin(ChessData* game, int row, int col);
  • 橫、豎、斜(斜有兩種)共四種情況,每種情況根據當前落子往后遍歷5個子,有一種符合就勝利
  • chessData.cpp
bool checkWin(ChessData* game, int row, int col){//橫for(int i = 0; i < 5; i++){if(col - i >= 0 &&col - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row][col-i] == game->chessMap[row][col-i+1] &&game->chessMap[row][col-i] == game->chessMap[row][col-i+2] &&game->chessMap[row][col-i] == game->chessMap[row][col-i+3] &&game->chessMap[row][col-i] == game->chessMap[row][col-i+4]){return true;}}//豎for(int i = 0; i < 5; i++){if(row - i >= 0 &&row - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row-i][col] == game->chessMap[row-i+1][col] &&game->chessMap[row-i][col] == game->chessMap[row-i+2][col] &&game->chessMap[row-i][col] == game->chessMap[row-i+3][col] &&game->chessMap[row-i][col] == game->chessMap[row-i+4][col]){return true;}}// “/”方向for(int i = 0; i < 5; i++){if(row + i < BOARD_GRAD_SIZE &&row + i - 4 >= 0 &&col - i >= 0 &&col - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row+i][col-i] == game->chessMap[row+i-1][col-i+1] &&game->chessMap[row+i][col-i] == game->chessMap[row+i-2][col-i+2] &&game->chessMap[row+i][col-i] == game->chessMap[row+i-3][col-i+3] &&game->chessMap[row+i][col-i] == game->chessMap[row+i-4][col-i+4]){return true;}}// “\”方向for(int i = 0; i < 5; i++){if(row - i >= 0 &&row - i - 4 < BOARD_GRAD_SIZE &&col - i >= 0 &&col - i + 4 < BOARD_GRAD_SIZE &&game->chessMap[row-i][col-i] == game->chessMap[row-i+1][col-i+1] &&game->chessMap[row-i][col-i] == game->chessMap[row-i+2][col-i+2] &&game->chessMap[row-i][col-i] == game->chessMap[row-i+3][col-i+3] &&game->chessMap[row-i][col-i] == game->chessMap[row-i+4][col-i+4]){return true;}}return false;}

調用接口

  • main.cpp
#include <stdio.h> bool checkOver(){if(checkWin(&game, clickPosRow, clickPosCol)){Sleep(1500);if(game.playFlag = false){//黑棋勝利,此時標記已經轉為白棋落子mciSendString("play res/不錯.mp3", 0, 0, 0);loadimage(0, "res/勝利.jpg");score += 100; //更新分數}else{mciSendString("play res/失敗.mp3", 0, 0, 0);loadimage(0, "res/失敗.jpg");score -= 100; //同理}//用于顯示分數char scoreText[64];sprintf(scoreText, "當前分數:%d", score);outtextxy(310, 800, scoreText);//記錄分數FILE* fp = fopen("score.data", "wb");fwrite(&score, sizeof(score), 1, fp);fclose(fp);getch();return true;}return false;}

顯示分數

  • main.cpp
#define INIT_SCORE 1000 int score; //全局變量 void initScore(){//分數字體設置settextcolor(WHITE); //colorsettextstyle(50, 0, "微軟雅黑"); //styleFILE *fp = fopen("score.data", "rb");if(fp == NULL){score = INIT_SCORE;}else{fread(&score, sizeof(score), 1, fp);}if (fp)fclose(fp);}
  • 然后在main.cpp文件的 init() 函數定義中 繼續 添加代碼
initScore(); //這一行添加到init()函數定義中

結束

到這里五子棋的全部功能已經實現了,但是你會發現程序無法運行。這是理所當然的,因為我們的main函數還沒有寫,在下一篇文章(也就是本項目的最后一章)我們將完善main函數并做該項目的總結。

總結

以上是生活随笔為你收集整理的C++五子棋(六)——游戏结束的全部內容,希望文章能夠幫你解決所遇到的問題。

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