用VC++设计一个井字游戏

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:08:40
请不要用很难的方法
尽量写得简单一点
我刚学

实验3 数组
设计一个井字游戏,两个玩家,一个打圈(O),一个打叉(X),轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。如果双方都下得正确无误,将得和局。
输入输出:
井字游戏开始
玩家1:2 2
棋盘:
? ? ?
? O ?
? ? ?
玩家2:1 2
棋盘:
? X ?
? O ?
? ? ?
玩家1:1 1
棋盘:
O X ?
? O ?
? ? ?
玩家2:3 3
棋盘:
O X ?
? O ?
? ? X
玩家1:3 1
棋盘:
O X ?
? O ?
O ? X
玩家2:2 1
棋盘:
O X ?
X O ?
O ? X
玩家1:1 3
棋盘:
O X O
X O ?
O ? X
玩家1胜利

/* 步伐 */
struct Step
{
CPoint _point; /* 位置 */
Play * _player; /* 玩家,说明是谁下的啦, 只用保存一个指针就行了,节省内存*/
};

/* 游戏 */
class Game
{
Border _b; /* 棋盘 */
Player _user; /* 用户 */
Player _computer; /* 电脑 */
int _step; /* 总共步数 */
list<Step> _stepList; /* 下过的步骤 */
public:
void Start( int level = 0 /* 等级 */ ); /* 开始 */
void Restart( ); /* 重新开始 */
bool isOver( ); /* 判断游戏是否结束 */
void Clear( ); /* 清理棋盘 */
void PrintWinner( ); /* 打印胜者 */
};

/* 玩家 */
class Play
{
string _name; /* 用户名 */
int _step; /* 步数 */
int _score; /* 分数 */
public:
Play( );
Play( string name );
int GetScore( ); /* 获取分数 */
int GetStep( ); /* 获取下的步数 */
string GetName( ); /* 获取名字 */
void SetName( ); /* 设置名字,以下如是 */
void SetScore( );
void SetStep( );
void Put( CPoint p ); /* 下一个子儿 */
};

/* 棋盘 */
class Board
{
enum