C++实现五子棋小游戏
生活随笔
收集整理的這篇文章主要介紹了
C++实现五子棋小游戏
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
代碼如下:
#include <iostream> using namespace std;class GoBangDesk { public:GoBangDesk() :state('@'), flagWin(false), flagOver(false), flagDraw(false){for (int i = 0; i < 20; i++)for (int j = 0; j < 20; j++)goBangDesk[i][j] = '#';}void printDesk(){cout << " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" << endl;for (int i = 1; i <= 15; i++){cout << " ---------------------------------------------" << endl;cout << i<<"\t";for (int j = 1; j <= 15; j++){cout << "|" << goBangDesk[i][j]<<"|";}cout << endl;}cout<< " ---------------------------------------------" << endl;}void clearDesk(){system("cls");}void gameProcess(){int tmpx;int tmpy;cout << "當前要落的子為:" << state << endl;cout << "請輸入坐標,進行落子操作:" << endl;cin >> tmpx >> tmpy;if (tmpx < 1 || tmpx > 15 || tmpy < 1 || tmpy >15){cout << "輸入有誤,請重新輸入" << endl;system("pause");return;}if (goBangDesk[tmpx][tmpy]!='@' && tmpx >= 1 && tmpx <= 15 && tmpy >= 1 && tmpy <=15){idx = tmpx;idy = tmpy;goBangDesk[idx][idy] = state;lastState = state;if (state == '@') state = 'O';else state = '@';checkWin();}else{cout << "輸入有誤,請重新輸入" << endl;system("pause");}}void gameStart(){while (true){printDesk();gameProcess();if (flagOver) break;if (flagDraw){cout << "平局" << endl;break;}clearDesk();}}void checkWin(){for (int i = 0; i < 8; i++){checkWinDfs(idx, idy, i, 1);if (flagWin){cout << lastState << "方贏得比賽" << endl;flagOver = true;break;}}}void checkDesk() {bool flag = false;for (int i = 1; i <= 15; i++){for (int j = 1; j <= 15; j++){if (goBangDesk[i][j] == '@'){flag = true;flagDraw = true;if (flag) break;}}if (flag) break;}}private:void checkWinDfs(int x, int y, int k, int step){if (step == 5){flagWin = true;}char tmpState = goBangDesk[x][y];int xx = x + dx[k];int yy = y + dy[k];if (goBangDesk[xx][yy] != tmpState && goBangDesk[xx][yy] != '@' || step > 5) return;checkWinDfs(xx, yy, k, step + 1);}private:static const int N = 20;char goBangDesk[N][N];int idx;int idy;char state;//當前是哪個子(狀態(tài))char lastState;//上一次是哪個子(狀態(tài))int dx[8] = { 0,0,1,-1,1,1,-1,-1 };int dy[8] = { 1,-1,0,0,1,-1,1,-1 };bool flagWin;//判斷勝利bool flagOver;//判斷結(jié)束bool flagDraw;//判斷棋盤滿了,平局 };int main() {GoBangDesk d;d.gameStart();return 0;} 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的C++实现五子棋小游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yy4480打不开怎么办
- 下一篇: C++函数模板和普通函数的调用规则