2048游戏源代码!复制粘贴可是不好的习惯哦!

核心提示#defineKey_Up 0x4800// 向上方向键   #defineKey_Down 0x5000// 向下方向键#defineKey_Right 0x4d00// 向右方向键#defineKey_Left 0x4b00// 向

#defineKey_Up 0x4800// 向上方向键   

#defineKey_Down 0x5000// 向下方向键

#defineKey_Right 0x4d00// 向右方向键

#defineKey_Left 0x4b00// 向左方向键

intmap[4][4] = {0 };

intcheck[4] = {0}; //判断游戏是否结束,如果都不为0,游戏结束 int i, j;

////显示在屏幕上//void print

{

for

{

for

{

printf;

}

printf;

}

}

////向右移动//int moveRight {

intflag =0;//来标记是否整个map矩阵能否改变,以此判断整个游戏是否结束

//这个循环的目的是为了做某一行的加减,如某一行为[2 2 4 4],经过以下运算就会变为[0 4 0 8];for

{

for

{

intcell = map[i][j];

if

{

intk = j -1;

while

{

intnextcell = map[i][k];

if

{

if

{

flag =1;

map[i][j] += map[i][k];

map[i][k] =0;

}

k = -1;

break;

}

k--;

}

}

}

}

//上一步做的是数据加减,这一步对加减后的数据做数据处理

//例如某一行经过上一步的数据为【0 4 0 8】,将会变为【0 0 4 8】for

{

for

{

intcell = map[i][j];

if

{

intk = j -1;

while

{

intnextcell = map[i][k];

if

{

flag =1;//当前元素为0,说明能移动,改变flag的值map[i][j] = nextcell;

map[i][k] =0;

k = -1;

}

k--;

}

}

}

}

if

return0;

elsereturn4;//游戏结束 }

////向左移动//int moveLeft {

intflag=0;

for

{

for

{

intcell = map[i][j];//cell单词用的不太恰当,表示当前元素,你可以采用更有意义的命名if

{

intk = j +1;

while

{

intnextcell = map[i][k];

if

{

if

{

flag =1;//相邻两个元素相同,就说明能移动,所以改变flag的值map[i][j] += map[i][k];

map[i][k] =0;

}

k =4;

break;

}

k++;

}

}

}

}

//修改部分:for循环中的i或者j的循环条件for

{

for

{

intcell = map[i][j];

if

{

intk = j +1;

while

{

intnextcell = map[i][k];

if

{

flag =1;

map[i][j] = nextcell;

map[i][k] =0;

k =4;

}

k++;

}

}

}

}

if

return0;

elsereturn3;

}

////向下移动 //int moveDown {

intflag=0;

for

{

for

{

intcell = map[i][j];

if

{

intk = i -1;

while

{

intnextcell = map[k][j];

if

{

if

{

flag =1;

map[i][j] += map[k][j];

map[k][j] =0;

}

k =0;

break;

}

k--;

}

}

}

}

//修改部分:for循环中的i或者j的循环条件for

{

for

{

intcell = map[i][j];

if

{

intk = i -1;

while

{

intnextcell = map[k][j];

if

{

flag =1;

map[i][j] = nextcell;

map[k][j] =0;

k =0;

}

k--;

}

}

}

}

if

return0;

elsereturn2;

}

////向上移动//int moveUp {

intflag=0;

for

{

for

{

intcell = map[i][j];

if

{

intk = i +1;

while

{

intnextcell = map[k][j];

if

{

if

{

flag =1;

map[i][j] += map[k][j];

map[k][j] =0;

}

k =4;

break;

}

k++;

}

}

}

}

//修改部分:for循环中的i或者j的循环条件for

{

for

{

intcell = map[i][j];

if

{

intk = i +1;

while

{

intnextcell = map[k][j];

if

{

flag =1;

map[i][j] = nextcell;

map[k][j] =0;

k =4;

}

k++;

}

}

}

}

if

return0;

elsereturn1;

}

////随机生成在空格上生成2或者4,并且判断是否游戏结束 //intrandInteger//有缺陷,【0 0 0 0】{

for

{

for

{

if

{

map[i][j] = %2+1) *2;//return0;

}

}

}

return0;

}

int main

{

char key;

while

{

printf;

printf;

scanf;

switch

{

case'w':

{

randInteger;

moveUp;

printf;

print;

break;

}

case's':

{

randInteger;

moveDown;

printf;

print;

break;

}

case'a':

{

randInteger;

moveLeft;

printf;

print;

break;

}

case'd':

{

randInteger;

moveRight;

printf;

print;

break;

}

case'q':

return0;

}

}

return0;

}

“我是一名从事了10年开发的老程序员,最近我花了一些时间整理关于C语言、C++,自己有做的材料的整合,一个完整的学习C语言、C++的路线,学习材料和工具。免费送给大家。这里是编程爱好者的聚集地,欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。

关注我的专栏带你遨游代码的世界!

 
友情链接
鄂ICP备19019357号-22