「已注销」 2017-06-10 08:31 采纳率: 0%
浏览 1173

C++做2048的程序有问题

#include
#include
#include

int magic;
int block[4][4]={0};
char dir; //移动方向
int k=0; //可能位置计数器
int x; //随机数在可能位置中选取一个位置

void print();
void appear();
void move();

int main()
{
int i,j;
int count=16; //记录当前为0的个数
srand(time(NULL));
i=rand()%4;
j=rand()%4;
block[i][j]=2;
print();
for(;count!=0;)
{
move();
print();
}
printf("game over");
return 0;
}

void appear()
{
int i,j; //a为坐标
for(;magic=3;)
magic=rand()%5+2;
int a[15]={0};
int b[15]={0};
switch(dir)
{
case 'w':
{
k=0;
for(j=0;j<=3;j++)
{
for(i=0;i<=3;i++)
{
if(block[i][j]=0) //如果当前位置为0,分别记录下横纵坐标

{
a[k]=i;
b[k]=j;
k++;
}
}
}
x=rand()%k+1; //随机数为1到k
block[a[x]][b[x]]=magic; //可能位置赋值
}
case 'a':
{
k=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
if(block[i][j]=0)
{
a[k]=i;
b[k]=j;
k++;
}
}
}
x=rand()%k+1; //随机数为1到k
block[a[x]][b[x]]=magic; //可能位置赋值
}
case 's':
{
k=0;
for(j=0;j<=3;j++)
{
for(i=0;i<=3;i++)
{
if(block[i][j]=0)
{
a[k]=i;
b[k]=j;
k++;
}
}
}
x=rand()%k+1; //随机数为1到k
block[a[x]][b[x]]=magic; //可能位置赋值
}
case 'd':
{
k=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
if(block[i][j]=0)
{
a[k]=i;
b[k]=j;
k++;
}
}
}
x=rand()%k+1; //随机数为1到k
block[a[x]][b[x]]=magic; //可能位置赋值
}

}

}

void print()
{
int i,j; //i行 j列
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
printf("%d",block[i][j]);
printf("\t");
if(j==3)
printf("\n");
}
}
}

void move()
{
int i=0,j=0,k;
scanf("%c",dir);
getchar();
switch(dir)
{
case 'w':
{
for(i=0;i {
for(j=0;j {
if(block[i][j]!=0) //消除移动后i行可以叠加的数字
{
k=j;
for(;block[i][k]==0&&k block[i][j]=block[i][k];
block[i][k]=0;
}
if(block[i][j+1]==block[i][j])
{
block[i][j]=2*block[i][j];
block[i][j+1]=0;
}
}
}
appear();
}
case 'a':
{
for(j=0;j {
for(i=0;i {
if(block[i][j]!=0)
{
k=i;
for(;block[i][k]==0&&k block[i][j]=block[k][j];
block[k][j]=0;
}
if(block[i][j]==block[i+1][j])
{
block[i][j]=2*block[i][j];
block[i+1][j]=0;
}
}
}
appear();
}
case 's':
{
for(i=3;i>0;i--)

{
for(j=3;j>0;j--)

{
if(block[i][j]!=0)

{
k=j;
for(;block[i][k]==0&&k>0;k--)
block[i][j]=block[i][k];
block[i][k]=0;
}
}
if(block[i][j]==block[i][j-1])
{
block[i][j]=2*block[i][j];
block[i][j-1]=0;
}
}
appear();
}
case 'd':
{
for(j=3;j>0;j--)

{
for(i=0;i {
if(block[i][j]!=0)
{
k=i;
for(;block[i][k]==0&&k>0;k--)
block[i][j]=block[k][j];
block[k][j]=0;
}
if(block[i][j]==block[i-1][j])
{
block[i][j]=2*block[i][j];
block[i-1][j]=0;
}
}
}
appear();
}
}

}

  • 写回答

2条回答 默认 最新

  • 凝视深空 2017-06-10 09:56
    关注

    都不知道你有什么问题?你得说秦楚

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题