当前位置:文档之家› 点格棋程序代码

点格棋程序代码

#ifndef DOTS_AND_BOXES_H_INCLUDED
#define DOTS_AND_BOXES_H_INCLUDED
#include
#include
#include
using namespace std;
class Dots
{
public:
Dots(){};
void init();//清空 完成
bool isFull();//判断满 完成
void isWin();//是否满 完成
void Hcapture();//横线占领
void Vcapture();//竖线占领
void think();//电脑思考步子
void play();//下棋 //wancheng
void display();//完成
void setSide();
int showposition();
~Dots(){};
private:
char board[11][11];
int position_i;
int position_j;
int side;
};


#endif // DOTS_AND_BOXES_H_INCLUDED


bool Dots::isFull()
{
int i;
int j;
for(i=1;i<=9;i+=2)
{
for(j=1;j<=9;j+=2)
{
if(board[i][j]==' ')
{
return false;
}
}
}
return true;
}

//初始化棋盘数组
void Dots::init()
{
int i,j;
for(i=0;i<11;i++)
{
for(j=0;j<11;j++)
{
board[i][j]=' ';
}
}
for(i=0;i<11;i+=2)
{
for(j=0;j<11;j+=2)
{
board[i][j]='*';
}
}
}

//判断获胜方(满时调用)
void Dots::isWin()
{
int i,j;
int red=0;
int blue=0;
for(i=1;i<9;i+=2)
{
for(j=1;j<9;j+=2)
{
if(board[i][j]=='R')
{
red++;
}
else//************************
{
blue++;
}
}
}
if(red>blue)
{
cout<<"RED胜利!"<}
else
{
cout<<"BLUE胜利!";
}
}

//落线儿
void Dots::play()
{
int m,n;
int p_i,p_j;
if(side==1)
{
cout<<"请红方输入要连线的位置(i,j):";
}
else
{
cout<<"请蓝方输入要连线的位置(i,j):";
}
cin>>p_i>>p_j;
position_i=p_j;
position_j=p_i;
m=(position_i%2);
n=(position_j%2);
system("cls");
cout<if(board[position_i][position_j]==' ')
{
if(m==0&&n!=0)
{
board[position_i][position_j]='-';
}//if
else if(m!=0&&n==0)
{
board[position_i][position_j]='|';
}
else
{
display();
cout<<"位置非法,请重新输入!"<play();
}
}//if
else
{
display();
cout<<"位置非法,请重新输入!"<play();
}
}

//“—”线占领
void Dots::Hcapture()
{
if(position_i==0)
{
if(board[position_i+1][position_j-1]!=' '&&board[position_i+2][position_j]!=' '&&board[position_i+1][position_j+1]!=' ')
{
if(side==1)
{
board[position_i+1][position_j]='R';
}
else
{
board[position_i+1][position_j]='B';
}
}
else
{
side*=-1;
}
}
else if(position_i==10)
{
if(board[position_i-1][position_j-1]!=' '&&board[position_i-2][position_j]!=' '&&board[position_i-1][position_j+1]!=' ')
{
if(side==1)
{
board[position_i-1][position_j]='R';
}
else
{
board[positio

n_i-1][position_j]='B';
}

}
else
{
side*=-1;
}
}
else
{
if(board[position_i+1][position_j-1]!=' '&&board[position_i+2][position_j]!=' '&&board[position_i+1][position_j+1]!=' '&&board[position_i-1][position_j-1]!=' '&&board[position_i-2][position_j]!=' '&&board[position_i-1][position_j+1]!=' ')
{
if(side==1)
{
board[position_i+1][position_j]='R';
board[position_i-1][position_j]='R';
}
else
{
board[position_i+1][position_j]='B';
board[position_i-1][position_j]='B';
}
}
else if(board[position_i+1][position_j-1]!=' '&&board[position_i+2][position_j]!=' '&&board[position_i+1][position_j+1]!=' ')
{
if(side==1)
{
board[position_i+1][position_j]='R';
}
else
{
board[position_i+1][position_j]='B';
}
}
else if(board[position_i-1][position_j-1]!=' '&&board[position_i-2][position_j]!=' '&&board[position_i-1][position_j+1]!=' ')
{
if(side==1)
{
board[position_i-1][position_j]='R';
}
else
{
board[position_i-1][position_j]='B';
}
}
else
{
side*=-1;
}
}
}

//“|”线占领
void Dots::Vcapture()
{
if(position_j==0)
{
if(board[position_i-1][position_j+1]!=' '&&board[position_i][position_j+2]!=' '&&board[position_i+1][position_j+1]!=' ')
{
if(side==1)
{
board[position_i][position_j+1]='R';
}
else
{
board[position_i][position_j+1]='B';
}
}
else
{
side*=-1;
}
}
else if(position_j==10)
{
if(board[position_i-1][position_j-1]!=' '&&board[position_i][position_j-2]!=' '&&board[position_i+1][position_j-1]!=' ')
{
if(side==1)
{
board[position_i][position_j-1]='R';
}
else
{
board[position_i][position_j-1]='B';
}
}
else
{
side*=-1;
}
}
else
{
if(board[position_i+1][position_j+1]!=' '&&board[position_i][position_j+2]!=' '&&board[position_i-1][position_j]!=' '&&board[position_i-1][position_j-1]!=' '&&board[position_i][position_j-2]!=' '&&board[position_i+1][position_j-1]!=' ')
{
if(side==1)
{
board[position_i][position_j+1]='R';
board[position_i][position_j-1]='R';
}
else
{
board[position_i][position_j+1]='B';
board[position_i][position_j-1]='B';
}
}
else if(board[position_i+1][position_j+1]!=' '&&board[position_i][position_j+2]!=' '&&board[position_i-1][position_j]!=' ')
{
if(side==1)
{
board[position_i][position_j+1]='R';
}
else
{
board[position_i][position_j+1]='B';
}
}
else if(board[position_i-1][position_j-1]!=' '&&board[position_i][position_j-2]!=' '&&board[position_i+1][position_j-1]!=' ')
{
if(side==1)
{
board[position_i][position_j-1]='R';
}
else
{
board[position_i][position_j-1]='B';
}
}
else
{
side*=-1;
}
}
}

//显示棋盘
void Dots::display()
{
int i,j;
for(i=0;i<11;i++)
{
cout

<for(j=0;j<11;j++)
{
cout<}
cout<<' '<cout<}
board[11][0]='0';
board[11][1]='1';
board[11][2]='2';
board[11][3]='3';
board[11][4]='4';
board[11][5]='5';
board[11][6]='6';
board[11][7]='7';
board[11][8]='8';
board[11][9]='9';
board[11][10]='1';
cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<<"0";
cout<}

//返回特定值以确定是哪种线
int Dots::showposition()
{
if(board[position_i][position_j]=='-')
{
return 1;
}
else if(board[position_i][position_j]=='|')
{
return 0;
}
else
{
return -1;
}
}

//初始化side
void Dots::setSide()
{
side=1;
}

int main()
{
int style;
Dots dots;
cout<dots.init();
dots.display();
dots.setSide();
do
{
dots.play();
if(dots.showposition()==1)
{
dots.Hcapture();
}
else if(dots.showposition()==0)
{
dots.Vcapture();
}
else
{
continue;
}
dots.display();
}
while(!dots.isFull());
dots.isWin();
return 0;
}

相关主题
文本预览
相关文档 最新文档