|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<windows.h>
- int main()
- {
- int i,j,m,hang,lie,winner;
- char qipan[3][3];
- void printqipan(char a[3][3]);
- int caipan(char a[3][3]);
- for(i=0;i<3;i++)
- for(j=0;j<3;j++)
- qipan[i][j]='*';
- 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[hang][lie]=='O'||qipan[hang][lie]=='X')
- {
- printf("这里已经有子了,重下吧\n请输入你要下的行和列\n");
- scanf("%d%d",&hang,&lie);
- hang--;
- lie--;
- }
- qipan[hang][lie]='O';
- system("cls");
- printqipan(qipan);
- winner=caipan(qipan);
- }
- else
- {
- printf("请玩家2下棋\n输入要下的行和列\n");
- scanf("%d%d",&hang,&lie);
- hang--;
- lie--;
- if(qipan[hang][lie]=='O'||qipan[hang][lie]=='X')
- {
- printf("这里已经有子了,重下吧\n请输入你要下的行和列\n");
- scanf("%d%d",&hang,&lie);
- hang--;
- lie--;
- }
- qipan[hang][lie]='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[3][3])
- {
- 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[i][j]);
- printf("\n");
- }
- }
- int caipan(char a[3][3])
- {
- int flag=0;
- if((a[0][0]==a[0][1]&&a[0][1]==a[0][2]&&a[0][0]=='O')||
- (a[1][0]==a[1][1]&&a[1][1]==a[1][2]&&a[1][0]=='O')||
- (a[2][0]==a[2][1]&&a[2][1]==a[2][2]&&a[2][0]=='O')||//行
- (a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&a[0][0]=='O')||
- (a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&a[0][1]=='O')||
- (a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&a[0][2]=='O')||//列
- (a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='O')||
- (a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='O'))//对角线
- {flag=1;}
- if((a[0][0]==a[0][1]&&a[0][1]==a[0][2]&&a[0][0]=='X')||
- (a[1][0]==a[1][1]&&a[1][1]==a[1][2]&&a[1][0]=='X')||
- (a[2][0]==a[2][1]&&a[2][1]==a[2][2]&&a[2][0]=='X')||//行
- (a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&a[0][0]=='X')||
- (a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&a[0][1]=='X')||
- (a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&a[0][2]=='X')||//列
- (a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='X')||
- (a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='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[3][3];
- void printqipan(char a[3][3]);
- int caipan(char a[3][3]);
- for(i=0;i<3;i++)
- for(j=0;j<3;j++)
- qipan[i][j]='*';
- 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[hang][lie]=='O'||qipan[hang][lie]=='X')
- {
- printf("这里已经有子了,重下吧\n请输入你要下的行和列\n");
- scanf("%d%d",&hang,&lie);
- hang--;
- lie--;
- }
- qipan[hang][lie]='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[hang][lie]=='O')||(qipan[hang][lie]=='X'))
- {
- hang=rand()%3;
- lie=rand()%3;
- }
- if(qipan[hang][lie]=='*')
- break;
- }
- qipan[hang][lie]='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[3][3])
- {
- 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[i][j]);
- printf("\n");
- }
- }
- int caipan(char a[3][3])
- {
- int flag=0;
- if((a[0][0]==a[0][1]&&a[0][1]==a[0][2]&&a[0][0]=='O')||
- (a[1][0]==a[1][1]&&a[1][1]==a[1][2]&&a[1][0]=='O')||
- (a[2][0]==a[2][1]&&a[2][1]==a[2][2]&&a[2][0]=='O')||//行
- (a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&a[0][0]=='O')||
- (a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&a[0][1]=='O')||
- (a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&a[0][2]=='O')||//列
- (a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='O')||
- (a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='O'))//对角线
- {flag=1;}
- if((a[0][0]==a[0][1]&&a[0][1]==a[0][2]&&a[0][0]=='X')||
- (a[1][0]==a[1][1]&&a[1][1]==a[1][2]&&a[1][0]=='X')||
- (a[2][0]==a[2][1]&&a[2][1]==a[2][2]&&a[2][0]=='X')||//行
- (a[0][0]==a[1][0]&&a[1][0]==a[2][0]&&a[0][0]=='X')||
- (a[0][1]==a[1][1]&&a[1][1]==a[2][1]&&a[0][1]=='X')||
- (a[0][2]==a[1][2]&&a[1][2]==a[2][2]&&a[0][2]=='X')||//列
- (a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[0][0]=='X')||
- (a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[0][2]=='X'))//对角线
- {flag=2;}
- return(flag);
- }
复制代码
上面是人人,下面是人机 很粗糙 还存在很多问题 |
|