#include <iostream>
#include <vector>
#include <time.h>
#include <stdlib.h>
using namespace std;
/*
三子棋小遊戲簡介:
1. Menu() 菜單欄
2. ChessboardPrint() 打印棋盤
3. UsersChess() 用戶下棋
4. ComputerChess() 計算機下棋
5. Judge() 判定結果
*/
class Chess {
public:
Chess()
: _Chessboard(vector<vector<char>>(3, vector<char>(3, ' ')))
, _Map(vector<vector<bool>>(3, vector<bool>(3, false)))
{}
~Chess(){}
//返回 false 代表結束遊戲,返回 true 代表 開始新遊戲
bool Menu() {
cout << "------------------------------" << endl;
cout << "-- 1:開始一盤新的遊戲 --" << endl;
cout << "-- 2:結束遊戲 --" << endl;
cout << "------------------------------" << endl;
int btn = 0;
while (1) {
cin >> btn;
if (btn == 1)
return true;
else if (btn == 2)
return false;
else
cout << "重新輸入:";
}
}
void ChessboardPrint() {
for (int i = 0; i < 3; ++i) {
cout << " " << _Chessboard[i][0] << " | " << _Chessboard[i][1] << " | " << _Chessboard[i][2] << endl;
if (i != 2)
cout << " -----------" << endl;
}
}
void UsersChess() {
cout << "請以(x, y)的格式輸入下棋的位置:";
int x, y;
while (1) {
cin >> x >> y;
if (x < 0 || x > 2 || y < 0 || y > 2) {
cout << "請重新輸入:";
continue;
} else {
if (_Map[x][y] == true) {
cout << "請重新輸入:";
continue;
} else {
_Chessboard[x][y] = '*';
_Map[x][y] = true;
break;
}
}
}
}
void ComputerChess() {
srand((unsigned int)time(0));
while (1) {
int x = rand() % 3;
int y = rand() % 3;
if (_Map[x][y] == true) {
continue;
}
else {
_Chessboard[x][y] = '+';
_Map[x][y] = true;
break;
}
}
}
bool Judge() {
char judge = ' ';
for (int i = 0; i < 3; ++i) {
if (_Chessboard[i][0] == _Chessboard[i][1] && _Chessboard[i][0] == _Chessboard[i][2]) {
judge = _Chessboard[i][0];
break;
}
else if (_Chessboard[0][i] == _Chessboard[1][i] && _Chessboard[0][i] == _Chessboard[2][i]) {
judge = _Chessboard[0][i];
break;
}
else if (_Chessboard[0][0] == _Chessboard[1][1] && _Chessboard[1][1] == _Chessboard[2][2]) {
judge = _Chessboard[1][1];
break;
}
else if (_Chessboard[0][2] == _Chessboard[1][1] && _Chessboard[1][1] == _Chessboard[2][0]) {
judge = _Chessboard[1][1];
break;
}
}
if (judge == ' ')
return false;
else if (judge == '*') {
system("cls");
ChessboardPrint();
cout << "玩家勝利~~" << endl;
return true;
}
else {
system("cls");
ChessboardPrint();
cout << "電腦勝利~~" << endl;
true;
}
//沒用,只是爲了消除警告
return false;
}
private:
vector<vector<char>> _Chessboard;
vector<vector<bool>> _Map;
};
int main() {
Chess chess;
chess.Menu();
chess.ChessboardPrint();
while (1) {
chess.UsersChess();
if (chess.Judge()) {
break;
}
chess.ComputerChess();
if (chess.Judge()) {
break;
}
system("cls");
chess.ChessboardPrint();
}
return 0;
}
實戰小項目_三子棋小遊戲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.