c语言思路过程文字,C语言,2048游戏文字版,流程逻辑思路,代码详解(中)

bool _MoveUp(struct Game *data){

bool flag = false;

for (size_t _index = 4; _index < data->length; _index+=4)

{

for (size_t index = 4; index < data->length; ++index)

{

if (data->arr[index-4] == 0 && data->arr[index] !=0)

{

data->arr[index-4] = data->arr[index];

data->arr[index] = 0;

flag = true;

}

}

}

return flag;

}

bool MoveUp(struct Game *data){

// 上移操作,需要实现的逻辑有,数字的移动以及合并,是否是有效的移动

bool flag = false;

flag = _MoveUp(data);

for (size_t index = 0; index < data->length-4; ++index) {

if (data->arr[index] == data->arr[index+4] && data->arr[index] != 0)

{

data->arr[index] *= 2;

if (data->arr[index] > data->max){

data->max = data->arr[index];

}

data->arr[index+4] = 0;

flag = true;

}

}

_MoveUp(data);

return flag;

}

bool _MoveLeft(struct Game *data)

{

bool flag = false;

for (size_t _index = 4; _index < data->length; _index+=4)

{

for (size_t index = 0; index < data->length; index+=4)

{

for (size_t i = 0; i < 4 - 1; ++i)

{

if (data->arr[index + i] == 0 && data->arr[index+i+1] != 0)

{

data->arr[index+i] = data->arr[index+i+1];

data->arr[index+i+1] = 0;

flag = true;

}

}

}

}

return flag;

}

bool MoveLeft(struct Game *data)

{

bool flag = false;

flag = _MoveLeft(data);

for (size_t index = 0; index < data->length; index+=4)

{

for (size_t i = 0; i < 4 - 1; ++i)

{

if (data->arr[index + i] == data->arr[index + i + 1] && data->arr[index + i]  != 0)

{

data->arr[index+i] *= 2;

if (data->arr[index+i] > data->max){

data->max = data->arr[index+i];

}

data->arr[index+i+1] = 0;

flag = true;

}

}

}

_MoveLeft(data);

return flag;

}

bool _MoveRight(struct Game *data)

{

bool flag = false;

for (size_t _index = 4; _index < data->length; _index+=4)

{

for (size_t index = 3; index < data->length; index+=4) // 3  7  11 15

{

for (size_t i = 0; i < 4 - 1; ++i)

{

if (data->arr[index - i] == 0 && data->arr[index-i-1] != 0)

{

data->arr[index - i] = data->arr[index-i-1];

data->arr[index- i -1] = 0;

flag = true;

}

}

}

}

return flag;

}

bool MoveRight(struct Game *data)

{

bool flag = false;

flag = _MoveRight(data);

for (size_t index = 3; index < data->length; index+=4) // 3  7  11 15

{

for (size_t i = 0; i < 4 - 1; ++i)

{

if (data->arr[index - i] == data->arr[index- i -1] && data->arr[index- i -1] != 0) // 0 1 2

{

data->arr[index - i] *= 2;

if (data->arr[index-i] > data->max){

data->max = data->arr[index-i];

}

data->arr[index- i -1] = 0;

flag = true;

}

}

}

_MoveRight(data);

return flag;

}

bool _MoveDown(struct Game *data)

{

bool flag = false;

for (size_t _index = 4; _index < data->length; _index+=4)

{

for (size_t index = data->length - 1; index >= 4; --index)

{

if (data->arr[index] == 0 && data->arr[index-4] !=0)

{

data->arr[index] = data->arr[index-4];

data->arr[index-4] = 0;

flag = true;

}

}

}

return flag;

}

bool MoveDown(struct Game *data)

{

bool flag = false;

flag = _MoveDown(data);

for (size_t index = data->length - 1; index >= 4; --index)

{

if (data->arr[index] == data->arr[index-4] && data->arr[index-4] !=0)

{

data->arr[index] *=2 ;

if (data->arr[index] > data->max){

data->max = data->arr[index];

}

data->arr[index-4] = 0;

flag = true;

}

}

_MoveDown(data);

return flag;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值