C++井字棋游戏,DOS界面版

2014-11-24 13:25:58 · 作者: · 浏览: 41

据说有一个能保证不败的算法,明天看看先再写个PVC版的。

正题,今天无聊写了个井字棋游戏,顺便逐渐让自己习惯良好的代码风格,放上来给新手学习学习。

jzq2.cpp

/*
	N字棋游戏PVP版,DOS版
	本棋盘可扩充,只需调整检测条件即可,其他接口不需改变。
	非人机对战型,PVP类型;
	@author:天下无双
	@date:2014-5-25
	@version:1.0
*/
#include 
  
   
#include 
   
     #define INVALIDINDEX -1 #define FULL -2 #define OK 0 #define WIN 1 #define ISIN -3 using namespace std; struct box{ //用box代表棋盘上每一个格子 int chess;//用一种颜色代表棋子,black和white int status;//0代表该格子没有棋子,1代表已经有了棋子 }; enum COLOR{black,white}; class chessBoard { private: static const int MAXROW=10; static const int MAXCOLUMN=10; int row; int column; int blackBox;//剩余棋盘格子数,即可落棋点 box arr[MAXROW][MAXCOLUMN]; void setRow(int r){row=r;}; void setCol(int c){column=c;}; int GetRow()const{return row;}; int GetCol()const{return column;}; public: chessBoard(int r,int col){ if(r>MAXROW||col>MAXCOLUMN){ cerr<<"棋盘大小超出范围"<
    
     =r||j>=col) return INVALIDINDEX; //if(c!=black&&c!=white) //return INVALIDINDEX; if(arr[i][j].status==0){//将棋子落入棋盘 arr[i][j].chess=c; arr[i][j].status=1;//标识此格 flush();//刷新 blackBox--; if(isGameOver()) return WIN; if(isFull()) return FULL; return OK; } return ISIN; } protected: void creat(){//初始化棋盘 int r=chessBoard::GetRow(); int col=chessBoard::GetCol(); for(int i=0;i
     
      =0&&j
      
       main.cpp
       

#include 
        
         
#include "jzq2.cpp"
using namespace std;
int main()
{	
	//3,3代表棋盘为3*3,并且是指三个一排即为胜利
	//同样的,5,5代表5字棋,但是棋盘大小也是5*5
	//扩展棋盘将在下一版本推出
	chessBoard cb(3,3);
	int status;
	COLOR c=black;//记录下一步轮到谁走
	int x,y;
	bool falg=false;//用于记录是否成功落棋
	bool isExit=false;//用于记录游戏是否结束
	while(!isExit)
	{
		cout<<"\n\"0\"代表white,\"*\"代表black"<
         
          >x>>y; /* if(falg) c=c==black white:black;//换人走 */ status=cb.insertChess(x,y,c); switch(status){ //超出范围,返回 INVALIDINDEX -1 //已经赢了,返回 WIN 1 //棋盘满了,返回 FULL -2 //正常落棋 返回 OK 0 case 0:falg=true; c=c==black white:black;//如果成功落棋,换人走下一步棋 break; case -1:cout<<"\n\n输入坐标不对,超出范围"<
          
           
已经测试过了3*3的无BUG,当然前提是你输入的是数字。你要是输入字母的话,果断崩!

先放到PVP的来玩玩,哈哈哈。

今天跑去多益网络机试,回来的途中居然想起来最后一道题少写了一个判断,郁闷。

还有一道回来的途中才大概想了出来。

郁闷ing......

好了,睡了,各位晚安。