A班陈旻霄 • 7个月前
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
#define int long long
#define pause system("pause>nul")
#define cls system("cls");
int cz;
int vis[10010];
int bm(int a1,int a2,int a3,int a4)
{
return a1*1000+a2*100+a3*10+a4;
}
int add(int x,int y)
{
return (x+y)%10;
}
void game(int a1,int a2,int a3,int a4,int turn)
{
cls;
vis[bm(a1,a2,a3,a4)]=1;
if(vis[bm(a1,a2,a3,a4)]==3)
{
cout<<"三次重复,该局为和局\n\n";
cout<<"是否重新开始游戏?1是,0否\n";
cin>>cz;
while(cz!=1)
{
if(cz==0)
{
cls;
exit(0);
}
cin>>cz;
}
cls;
game(1,1,1,1,1);
}
if(a1+a2==0)
{
cout<<"P1 WINS!\n\n";
cout<<"是否重新开始游戏?1是,0否\n";
cin>>cz;
while(cz!=1)
{
if(cz==0)
{
cls;
exit(0);
}
cin>>cz;
}
cls;
game(1,1,1,1,1);
}
if(a3+a4==0)
{
cout<<"P2 WINS!\n\n";
cout<<"是否重新开始游戏?1是,0否\n";
cin>>cz;
while(cz!=1)
{
if(cz==0)
{
cls;
exit(0);
}
cin>>cz;
}
cls;
game(1,1,1,1,1);
}
bool s1,s2,s3,s4;
s1=s2=s3=s4=0;
if(turn==1)
{
printf("P1:%c\t%c\n",(a1==0?' ':char(a1+'0')),(a2==0?' ':char(a2+'0')));
printf("P2:%c\t%c\n",(a3==0?' ':char(a3+'0')),(a4==0?' ':char(a4+'0')));
cout<<endl;
cout<<"操作:"<<endl;
if(a1*a3)
{
printf("1:P1左%d+P2左%d\n",a1,a3);
s1=1;
}
if(a1*a4)
{
printf("2:P1左%d+P2右%d\n",a1,a4);
s2=1;
}
if(a2*a3)
{
printf("3:P1右%d+P2左%d\n",a2,a3);
s3=1;
}
if(a2*a4)
{
printf("4:P1右%d+P2右%d\n",a2,a4);
s4=1;
}
cout<<endl;
cout<<"P1请操作:";
while(1)
{
cin>>cz;
if(cz==1&&s1) game(add(a1,a3),a2,a3,a4,2);
if(cz==2&&s2) game(add(a1,a4),a2,a3,a4,2);
if(cz==3&&s3) game(a1,add(a2,a3),a3,a4,2);
if(cz==4&&s4) game(a1,add(a2,a4),a3,a4,2);
}
}
if(turn==2)
{
printf("P2:%c\t%c\n",(a3==0?' ':char(a3+'0')),(a4==0?' ':char(a4+'0')));
printf("P1:%c\t%c\n",(a1==0?' ':char(a1+'0')),(a2==0?' ':char(a2+'0')));
cout<<endl;
cout<<"操作:"<<endl;
if(a1*a3)
{
printf("1:P2左%d+P1左%d\n",a3,a1);
s1=1;
}
if(a2*a3)
{
printf("2:P2左%d+P1右%d\n",a3,a2);
s2=1;
}
if(a1*a4)
{
printf("3:P2右%d+P1左%d\n",a4,a1);
s3=1;
}
if(a2*a4)
{
printf("4:P2右%d+P1右%d\n",a4,a2);
s4=1;
}
cout<<endl;
cout<<"P2请操作:";
while(1)
{
cin>>cz;
if(cz==1&&s1) game(a1,a2,add(a1,a3),a4,1);
if(cz==2&&s2) game(a1,a2,add(a2,a3),a4,1);
if(cz==3&&s3) game(a1,a2,a3,add(a1,a4),1);
if(cz==4&&s4) game(a1,a2,a3,add(a2,a4),1);
}
}
}
signed main()
{
game(1,1,1,1,1);
return 0;
}
玩法:可以用自己的一个非0数加对方的一个非0数,变成两位数则保留个位,手中变成两个0则获胜
评论: