快要期末考试了,这几天因为疫情封在宿舍,闲来无聊,编一个三子棋玩一玩,全当复习考试了。
话不多说,上程序
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int i;
select:printf("---------请输入模式0: game or 1: quit---------\n----------");
scanf("%d",&i);
while(i!=0&&i!=1)
{
printf("出错了,请重新输入\n");
scanf("%d",&i);
}
while(i==0)
{ int f1,f2;
again:srand((unsigned)time(0));
f1=rand()%6+1;
for(int k=10;k<20;)
{
k++;
}
f2=rand()%6+1;
//printf("%d %d",f1,f2);
if(f1>f2){
printf("-----------------%d %d-----------------\n",f1,f2);
printf("---------------玩家1先手---------------\n");
}
else if(f1<f2)
{
printf("-----------------%d %d-----------------\n",f1,f2);
printf("---------------玩家2先手---------------\n");
}
else if(f1==f2)
{
goto again;
}
printf("--------------游戏 开始--------------\n");
char a='&';
char b='*';
char pl[6][12]={" | | ","---|---|---"," | | ","---|---|---"," | | "};
for(int i=0;i<6;i++)
puts(pl[i]);
//
int row,line,k=0;
int flag1=0,flag2=0,flag=0,left=9;
while(flag==0&&left>0)
{
back:printf("请输入 行 和 列 \n");
scanf("%d %d",&row,&line);
//k++;
if(row==1)
row=0;
else if(row==3)
row=4;
if(line==2)
line=5;
else if(line==3)
line=9;
if(pl[row][line]!=' ')
{
printf("出错了\n");
goto back;
}
k++;left--;
char mk;
if(k%2==1)
{
mk=a;
pl[row][line]=mk;
for(int q=0;q<5;q+=2)
{
if(pl[q][1]==mk&&pl[q][5]==mk&&pl[q][9]==mk)
flag1=1;
}
for(int p=1;p<10;p+=4)
{
if(pl[0][p]==mk&&pl[2][p]==mk&&pl[4][p]==mk)
flag1=1;
}
if(pl[0][1]==mk&&pl[2][5]==mk&&pl[4][9]==mk||pl[0][9]==mk&&pl[2][5]==mk&&pl[4][1]==mk)
flag1=1;
}
else if(k%2==0)
{
mk=b;
pl[row][line]=mk;
for(int q=0;q<5;q+=2)
{
if(pl[q][1]==mk&&pl[q][5]==mk&&pl[q][9]==mk)
flag2=1;
}
for(int p=1;p<10;p+=4)
{
if(pl[0][p]==mk&&pl[2][p]==mk&&pl[4][p]==mk)
flag2=1;
}
if(pl[0][1]==mk&&pl[2][5]==mk&&pl[4][9]==mk||pl[0][9]==mk&&pl[2][5]==mk&&pl[4][1]==mk)
flag2=1;
}
for(int i=0;i<6;i++)
puts(pl[i]);
if(flag1==1)
printf("玩家1获胜\n");
else if(flag2==1)
printf("玩家2获胜\n");
flag=flag1+flag2;
if(flag==0&&left==0)
printf("平局");
}
goto select;
}
return 0;
}
有兴趣的小伙伴可以动手试一试,很简单哦~~