資源簡介
編一棋盤游戲程序,可以選擇人機對戰和雙人對戰兩種游戲模式,而人機模式下可以選擇三種電腦等級,即簡單的電腦、中等的電腦和令人發狂的電腦,電腦智能化程度隨等級提高而提高。下棋雙方分別以字符X和字符O為棋子。游戲界面顯示游戲規則,能動態顯示下棋過程,下棋結束退出游戲時顯示雙方輸贏情況。增添功能鍵,使之實現在任何時候退出程序和悔棋的功能。在輸入棋子坐標及選擇開關時要有較好的容錯性,出錯時能給用戶以友好提示。
代碼片段和文件信息
/*******************************************三子連珠***********************************/
#include
#include
#include
#include
#include
using?namespace?std;
char?k(‘a‘);????????????????????????//全局變量,選擇電腦等級
char?choice(‘1‘);???????????????????//全局變量,選擇下棋模式
class?CGobang???????????????????????//棋子類
{
private:
char?chSort;????????????????????//棋子的類別
int?nWin;???????????????????????//贏棋的次數
int?nLose;??????????????????????//輸棋的次數
static?int?nDraw;???????????????//平局的次數
static?char?achBoard[3][3];?????//棋盤
static?int?nSize;???????????????//棋盤的尺寸nSize*nsize
static?int?row[10];?????????????//記錄所下行順序
static?int?col[10];?????????????//記錄所下列順序
public:
static?int?nStep;???????????????//記錄下棋步數
static?int?nBack;???????????????//記錄悔棋步數
CGobang(char?chsort)????????????//構造函數,決定一方棋子的類別
{
chSort=chsort;
nWin=nLose=nDraw=0;
}
void?PlayTurn(void);????????????//走一步棋
int?AIplayTurn(void);???????????//智能化控制
int?JudgeRow(char);?????????????//判斷橫行是否已有二子
int?JudgeCol(char);?????????????//判斷縱行是否已有二子
int?JudgeDiag(char);????????????//判斷對角是否已有二子
int?Judge(void);????????????????????//判斷是否連成一線,是則返回1,否則返回0
void?Win(void);?????????????????//贏棋
void?Lose(void);????????????????????//輸棋
static?void?Draw(void);?????????//平局
void?PrintInfo(void);???????????//輸出總體情況
static?void?PrintBoard(void);???//輸出棋盤
static?int?GetFull(void);???????//判斷棋盤是否已布滿棋子
static?void?InitialBoard(void);?//初始化棋盤
int?getRandInt(intint);????????//獲取隨機數
};
char?CGobang::achBoard[3][3];
int?CGobang::nSize=3;
int?CGobang::nDraw=0;
int?CGobang::nStep=0;
int?CGobang::nBack=0;
int?CGobang::row[10];
int?CGobang::col[10];
void?PrintRule(void)???????????????//打印下棋規則
{
cout<<“\n\t\t^_^歡迎使用三子連珠游戲!“< cout<<“*-----------------------------------------------------------------*“< cout<<“\t游戲規則:“< cout<<“\t1.?每1步輸入要下棋子的格子的xy坐標,按Enter鍵\n“;
cout<<“\t2.?有1方首先3個棋子連成一線即判獲勝\n“;
cout<<“\t3.?當棋子布滿棋盤但仍無獲勝方即為平局\n“;
cout<<“\t4.?按0鍵可退出!!\n“;
cout<<“\t5.?按9鍵可悔一步棋!!\n“;
cout<<“\t6.?X方先行\n“;
cout<<“*-----------------------------------------------------------------*“< }
void?Clean(void)//清屏?
{
system(“cls“);
PrintRule();
}
void?PrintStage()//顯示電腦等級及雙人模式
{
switch(choice)
{
case?‘1‘:
switch(k)
{
????case?‘a‘:
??cout<<“\n\t\t?????簡單的電腦\n“;
??break;
????case?‘b‘:
??cout<<“\n\t\t?????中等的電腦\n“;
??break;
????case?‘c‘:
??cout<<“\n\t\t???令人發狂的電腦\n“;
??break;
}
break;
case?‘2‘:
cout<<“\n\t\t?????雙人對弈\n“;
break;
}
}
?? ??
void?CGobang::Draw()//平局
{
cout<<“\n\n\t\t平局!\n\n“;
nDraw++;
}
void?CGobang::InitialBoard()//初始化棋盤
{
for(int?i=0;i for(int?j=0;j achBoard[i][j]=‘?‘;
}
void?CGobang::PrintBoard()//輸出棋盤
{
cout< cout<<“\t\t?????1???2???3?“< ????cout<<“\t\t???|---|---|---|“< cout<<“\t\t?1?|?“<
評論
共有 條評論