新人写的井字棋 (人人版 人机版)
#include<stdio.h>#include<windows.h>
int main()
{
int i,j,m,hang,lie,winner;
char qipan;
void printqipan(char a);
int caipan(char a);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
qipan='*';
printqipan(qipan); //棋谱初始绘制
for(m=0;m<9;m++)
{
if(m%2==0)
{
printf("请玩家1下棋\n输入要下的行和列\n");
scanf("%d%d",&hang,&lie);
hang--;
lie--;
if(qipan=='O'||qipan=='X')
{
printf("这里已经有子了,重下吧\n请输入你要下的行和列\n");
scanf("%d%d",&hang,&lie);
hang--;
lie--;
}
qipan='O';
system("cls");
printqipan(qipan);
winner=caipan(qipan);
}
else
{
printf("请玩家2下棋\n输入要下的行和列\n");
scanf("%d%d",&hang,&lie);
hang--;
lie--;
if(qipan=='O'||qipan=='X')
{
printf("这里已经有子了,重下吧\n请输入你要下的行和列\n");
scanf("%d%d",&hang,&lie);
hang--;
lie--;
}
qipan='X';
system("cls");
printqipan(qipan);
winner=caipan(qipan);
}
if(winner==1)
{printf("玩家1胜利!");break;}
if(winner==2)
{printf("玩家2胜利!");break;}
if(m==8)
printf("平局");
}
}
void printqipan(char a)
{
int i,j;
printf("这是一个无聊的井字棋游戏\n玩家1出O,玩家2出X\n废话不多说 决一死战吧\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%c",a);
printf("\n");
}
}
int caipan(char a)
{
int flag=0;
if((a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||//行
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||//列
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O'))//对角线
{flag=1;}
if((a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||//行
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||//列
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X'))//对角线
{flag=2;}
return(flag);
}
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int i,j,m,n,hang,lie,winner;
char qipan;
void printqipan(char a);
int caipan(char a);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
qipan='*';
printqipan(qipan); //棋谱初始绘制
for(m=0;m<9;m++)
{
srand(time(0));
if(m%2==0)
{
printf("请玩家下棋\n输入要下的行和列\n");
scanf("%d%d",&hang,&lie);
hang--;
lie--;
if(qipan=='O'||qipan=='X')
{
printf("这里已经有子了,重下吧\n请输入你要下的行和列\n");
scanf("%d%d",&hang,&lie);
hang--;
lie--;
}
qipan='O';
system("cls");
printqipan(qipan);
winner=caipan(qipan);
}
else
{
printf("电脑正在思考中.....");
Sleep(1500);
hang=rand()%3;
lie=rand()%3;
for(n=0;n<10;n++)//防止hang,lie重复
{
if((qipan=='O')||(qipan=='X'))
{
hang=rand()%3;
lie=rand()%3;
}
if(qipan=='*')
break;
}
qipan='X';
system("cls");
printqipan(qipan);
winner=caipan(qipan);
}
if(winner==1)
{printf("老哥,你赢了电脑,稳!要不要再来一局^_^");break;}
if(winner==2)
{printf("哈哈,我是井字棋中的AlphaGo");break;}
if(m==8)
printf("平局");
}
}
void printqipan(char a)
{
int i,j;
printf("这是一个无聊的井字棋游戏\n玩家出O,电脑出X\n废话不多说 决一死战吧\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%c",a);
printf("\n");
}
}
int caipan(char a)
{
int flag=0;
if((a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||//行
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O')||//列
(a==a&&a==a&&a=='O')||
(a==a&&a==a&&a=='O'))//对角线
{flag=1;}
if((a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||//行
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X')||//列
(a==a&&a==a&&a=='X')||
(a==a&&a==a&&a=='X'))//对角线
{flag=2;}
return(flag);
}
上面是人人,下面是人机 很粗糙 还存在很多问题 问题:1.若是玩家两次重复下在一个地方程序不能处理
2.棋子坐标乱输入的话下不了棋
3.电脑比较智障,因为是随机下的棋,很难赢玩家 大家发表发表意见 若是能修改修改就更好了{:10_250:}
页:
[1]