资源简介
编一棋盘游戏程序,可以选择人机对战和双人对战两种游戏模式,而人机模式下可以选择三种电脑等级,即简单的电脑、中等的电脑和令人发狂的电脑,电脑智能化程度随等级提高而提高。下棋双方分别以字符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 | “<
评论
共有 条评论