五子棋程序.doc
#include<iostream> using namespace std; int Hsheng(char a15);/判断H子是否获胜的函数 int Bsheng(char a15);/判断B子是否获胜的函数 int he(char a15);/判断是否平局(也就是棋盘下满了)的函数 void qipan(char a1515)/执行输出棋盘命令 for(int i=0;i<15;i+) for(int j=0;j<15;j+) cout<<aij; cout<<endl; int main() char a1515; int x,y; for(int i=0;i<15;i+) for(int j=0;j<15;j+) aij='*' qipan(a); while(1)/用循环语句执行H,B交替下子,这些while语句经过break结束 int a1=1; while(1) for(;a1;) cout<<"请输入H子下的位置:" cin>>x>>y; if(axy='H'|axy='B')/判断是否已有子 cout<<"已有子请重下"<<","continue; else if(x>=15|y>=15)cout<<"输入错误请重输"<<","continue; else axy='H' a1=0; break; qipan(a);/下好H子后将棋盘显示 if(Hsheng(a)/判断H子是否已经获胜 cout<<"H子获胜"<<endl; break; while(1)/下B子 cout<<"请输入B子下的位置:" cin>>x>>y; if(axy='H'|axy='B'|x>=15|y>=15) for( ; axy='H'|axy='B' ) cout<<"已有子请重下" cout<<"请输入B子下的位置:" cin>>x>>y;continue; for ( ; x>=15|y>=15; ) cout<<"输入错误请重输"<<"," cout<<"请输入x子下的位置:" cin>>x>>y;continue ; axy='B'break; else axy='B' break; qipan(a);/再一次输出棋盘 if(Bsheng(a)/判断B子是否已经获胜 cout<<"B子获胜"<<endl; break; if(he(a)/判断是否平局 cout<<"平局"<<endl; break; return 0; int Hsheng(char a15) int i,j;/判断横着的5个是否都相等 for(i=0;i<15;i+) for(j=0;j<15;j+) if(aij='H'&&aij+1='H'&&aij+2='H'&&aij+3='H'&&aij+4='H') return 1; for(j=0;j<15;j+)/判断竖着的5个是否都相等 for(i=0;i<15;i+) if(aij='H'&&ai+1j='H'&&ai+2j='H'&&ai+3j='H'&&ai+4j='H') return 1; for(i=0;i<15;i+)/判断左斜5个 for(j=0;j<15;j+) if(aij='H'&&ai+1j+1='H'&&ai+2j+2='H'&&ai+3j+3='H'&&ai+4j+4='H') return 1; for(i=0;i<15;i+)/右斜5个 for(j=14;j>3;j-) if(aij='H'&&ai+1j-1='H'&&ai+2j-2='H'&&ai+3j-3='H'&&ai+4j-4='H') return 1; return 0; int Bsheng(char a15)/同H,只是改字符 int i,j; for(i=0;i<15;i+) for(j=0;j<15;j+) if(aij='B'&&aij+1='B'&&aij+2='B'&&aij+3='x'&&aij+4='B') return 1; for(j=0;j<15;j+) for(i=0;i<15;i+) if(aij='B'&&ai+1j='B'&&ai+2j='B'&&ai+3j='B'&&ai+4j='B') return 1; for(i=0;i<15;i+) for(j=0;j<15;j+) if(aij='B'&&ai+1j+1='B'&&ai+2j+2='B'&&ai+3j+3='B'&&ai+4j+4='B') return 1; for(i=0;i<15;i+) for(j=14;j>3;j-) if(aij='B'&&ai+1j-1='B'&&ai+2j-2='B'&&ai+3j-3='B'&&ai+4j-4='B') return 1; return 0; int he(char a15) for(int i=0;i<15;i+) for(int j=0;j<15;j+) if(aij='*')/当棋盘全部子都不是'*'时才能return 1,即棋盘已下满 return 0; return 1;