闲得无聊又做的小游戏,如果哪个大神路过并且想玩玩的话。。规则我也懒得写了。。度娘会告诉你的
#include<stdio.h>
#include<time.h>
#include<windows.h>
#include<string.h>
#include<iostream>
#include<conio.h>
#include<iomanip>
using namespace std;
int a[4][4],cal[4],x[4],aa[4][4];
void cc(int* x,int* cal,int& score)
{
memset(cal,0,sizeof(cal));
int j=0;
for(int i=0;i<4;i++)
{
if(x[i]) {cal[j]=x[i];j++;}
}
for(int i=0;i<3;i++)
{
if(cal[i]==cal[i+1])
{
cal[i]*=2;
score+=cal[i];
for(int k=i+1;k<3;k++) cal[k]=cal[k+1];
cal[3]=0;
}
}
for(int i=0;i<4;i++) x[i]=cal[i];
memset(cal,0,sizeof(cal));
for(int i=0;i<4;i++) cal[i]=0;
}
int main()
{
int sign,score=0;
bool die=0;
bool ssign=1;
memset(a,0,sizeof(a));
srand((int)time(NULL));
printf("\t\t\t 2048!!!\n\n\n\n\n\n\n\n\n\t\t\t 按5开始\n\n\n\n\n\t\t\t\n\n\t\t 操作:wasd或8456\n\n\t\t 欢迎提供bug\n\n\n\t\t\t\t\tdesigned by wyc");
while(1)
{
char s=getch();
if(s=='8'||s=='w') sign=1;
else if(s=='5'||s=='s') sign=2;
else if(s=='4'||s=='a') sign=3;
else if(s=='6'||s=='d') sign=4;
else sign=0;
if(sign)
{
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
aa[i][j]=a[i][j];
if(sign==1)
{
for(int i=0;i<4;i++)
{
memset(x,0,sizeof(x));
for(int j=0;j<4;j++)
{
x[j]=a[j][i];
}
cc(x,cal,score);
for(int j=0;j<4;j++)
{
a[j][i]=x[j];
}
memset(x,0,sizeof(x));
}
}
else if(sign==2)
{
for(int i=0;i<4;i++)
{
memset(x,0,sizeof(x));
for(int j=3;j>=0;j--)
{
x[3-j]=a[j][i];
}
cc(x,cal,score);
for(int j=3;j>=0;j--)
{
a[j][i]=x[3-j];
}
memset(x,0,sizeof(x));
}
}
else if(sign==3)
{
for(int i=0;i<4;i++)
{
memset(x,0,sizeof(x));
for(int j=0;j<4;j++)
{
x[j]=a[i][j];
}
cc(x,cal,score);
for(int j=0;j<4;j++)
{
a[i][j]=x[j];
}
memset(x,0,sizeof(x));
}
}
else if(sign==4)
{
for(int i=0;i<4;i++)
{
memset(x,0,sizeof(x));
for(int j=3;j>=0;j--)
{
x[3-j]=a[i][j];
}
cc(x,cal,score);
for(int j=3;j>=0;j--)
{
a[i][j]=x[3-j];
}
memset(x,0,sizeof(x));
}
}
memset(x,0,sizeof(x));
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(a[i][j]!=aa[i][j]) ssign=1;
}
int xx;
if(ssign)
{
do{
xx=rand()%16;
}while(a[xx/4][xx%4]!=0&&sign);
if(sign) a[xx/4][xx%4]=2;
if(rand()>27000) a[xx/4][xx%4]=4;
}
system("CLS");
printf("\t A\tB\tC\tD\n\n\n\n");
for(int i=0;i<4;i++)
{
cout<<setw(8)<<(char)('A'+i);
for(int j=0;j<4;j++)
{
if(a[i][j]) cout<<setw(8)<<a[i][j];
else cout<<'\t';
}
printf("\n\n\n\n");
}
printf("\n\n得分:%d",score);
ssign=0;
}
die=1;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(i>=1)
if(a[i][j]==a[i-1][j]) die=0;
if(i<=2)
if(a[i][j]==a[i+1][j]) die=0;
if(j>=1)
if(a[i][j]==a[i][j-1]) die=0;
if(j<=2)
if(a[i][j]==a[i][j+1]) die=0;
if(a[i][j]==0) die=0;
}
if(die) break;
}
printf("\n\t\t你已经死了……\n\t\t 按q退出吧~");
while(1)
{
char p=getch();
if(p=='q') break;
}
return 0;
}