井字游戏(C 版)终级版

2008-02-23 05:35:32来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?boardid=55&id=113488

前两个版本都多多少少有些缺陷,经过本人仔细研究,终于克服重重困难,编写出了井字游戏终结版,经过大量实验,应该没什么问题了,大家试试吧!!!!!不知道这个游戏能不能评为精品呀???同时还推出了C语言版
#include <iostream>
#include <string>
using namespace std;
typedef char chess[10]; //字符数组
typedef int temparr[10]; //整型数组
chess arr; //定义字符数组变量
temparr brr; //定义整型数组变量
int number,suc,n3,c3,n2,c2,n1,c1;
void inarrdata(chess a) //初始化棋盘编号
{
a[1]='1';a[2]='2';a[3]='3';
a[4]='4';a[5]='5';a[6]='6';
a[7]='7';a[8]='8';a[9]='9';
}
void display(chess a) //输出棋盘状态
{
cout<<endl;cout<<endl;
cout<<" "<<a[1]<<" "<<'|'<<" "<<a[2]<<" "<<'|'<<" "<<a[3]<<endl;
cout<<" -----------"<<endl;
cout<<" "<<a[4]<<" "<<'|'<<" "<<a[5]<<" "<<'|'<<" "<<a[6]<<endl;
cout<<" -----------"<<endl;
cout<<" "<<a[7]<<" "<<'|'<<" "<<a[8]<<" "<<'|'<<" "<<a[9]<<endl;
cout<<endl;cout<<endl;
}
int arrfull() //判断更有没有下棋的位置
{
int i;
int arrf=0;
for(i=1;i<=9;i )
if(i==arr[i]-48) //假如字符arr[i]-48等于i
arrf=1; //那么arrf=1,也就是能够走棋
return arrf;
}
void cn(int line) //判断状态
{
switch(line)
{
case 0:c3=c3 1;break;
case 1:n2=n2 1;break;
case 2:c2=c2 1;break;
case 3:n1=n1 1;break;
case 4:c1=c1 1;break;
case 5:n3=n3 1;break;
}
}
int linenum(char a,char b,char c) //判断状态
{
int ln=6;
if((a=='X')&&(b=='X')&&(c=='X'))
ln=0;
if(((a=='O')&&(b=='O')&&(c!='O'))||((a=='O')&&(b!='O')&&(c=='O'))||((a!='O')&&(b=='O')&&(c=='O')))
ln=1;
if(((a=='X')&&(b=='X')&&(c!='X'))||((a=='X')&&(b!='X')&&(c=='X'))||((a!='X')&&(b=='X')&&(c=='X')))
ln=2;
if(((a=='O')&&(b!='O')&&(c!='O'))||((a!='O')&&(b=='O')&&(c!='O'))||((a!='O')&&(b!='O')&&(c=='O')))
ln=3;
if(((a=='X')&&(b!='X')&&(c!='x'))||((a!='X')&&(b=='X')&&(c!='X'))||((a!='X')&&(b!='X')&&(c=='X')))
ln=4;
if((a=='O')&&(b=='O')&&(c=='O'))
ln=5;
return ln;
}
int maxbrr(int *br) //判断最大权值
{
int temp,i,mb;
temp=-888;
for(i=1;i<=9;i )
{
if(temp<=br[i])
{
temp=br[i];
mb=i;
}
}
return mb;
}
void manstep() //人走棋处理模块
{
int j;
display(arr);
if(arrfull()) //假如棋盘上更有下棋的位置,人走一步棋
{
cout<<"您要走哪一步?请输入数字(1--9):";
cin>>j;
while((j<1)||(j>9)||(j!=arr[j]-48))
{
cout<<"对不起,您输入的数字不对,请重新输入(1--9):";
cin>>j;
}
arr[j]='O';
n3=0;c3=0;n2=0;c2=0;n1=0;c1=0;
number=linenum(arr[1],arr[2],arr[3]);cn(number);
number=linenum(arr[4],arr[5],arr[6]);cn(number);
number=linenum(arr[7],arr[8],arr[9]);cn(number);
number=linenum(arr[1],arr[4],arr[7]);cn(number);
number=linenum(arr[2],arr[5],arr[8]);cn(number);
number=linenum(arr[3],arr[6],arr[9]);cn(number);
number=linenum(arr[1],arr[5],arr[9]);cn(number);
number=linenum(arr[3],arr[5],arr[7]);cn(number);
if(n3!=0) //您赢了
{
display(arr);
cout<<endl;
cout<<"恭喜您赢了!!!"<<endl;
suc=0;
}
}
}
void computerstep() //电脑走棋处理模块
{
int i;
if(arrfull()) //假如棋盘上更有可下棋的位置,则电脑走棋
{
for(i=1;i<=9;i ) //对每一步可走的棋进行计算
{
if(i==arr[i]-48)
{
c3=0;n2=0;c2=0;n1=0;c1=0;
arr[i]='X';
number=linenum(arr[1],arr[2],arr[3]);cn(number);
number=linenum(arr[4],arr[5],arr[6]);cn(number);

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 井字游戏(C 版)

下一篇: 使用CreateProcess()函数