2048 这个游戏, 在之前我完全是沉迷的, 但是用 C 语言做出来真的也很简单哈, 就说一些简简单单的知识点, 什么数组啊, 条件选择, 循环等等, 这些都很简单, 但是思路真的很重要, 我下面就直接把全部的代码发一下吧, 希望看了就不复制黏贴了, 要看懂思路哈
小编推荐一个学 C 语言 / C++ 的学习裙 二六三, 六八八, 二七六 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
这些是 C/C++ 能做的
服务器开发工程师人工智能云计算工程师信息安全 (黑客反黑客) 大数据 数据平台嵌入式工程师流媒体服务器数据控解图像处理音频视频开发工程师游戏服务器分布式系统游戏辅助等
- #include
- #include
- #include
- #include
- #include
- int MAP[4][4], gre;
- void Add(int n)
- {
- srand((unsigned int)time(0)); //
- int num = rand();
- int tf = num % 2;
- int x, y, i;
- x = num % 4;
- srand((unsigned int)time(0) + (unsigned int)num);
- y = rand();
- y %= 4;
- if (tf)
- num = 2;
- else
- num = 4;
- if (n == 0)
- {
- MAP[x][y] = num;
- }
- else if (n == 1)
- {
- if (MAP[3][y] == 0)
- MAP[3][y] = num;
- else
- for (i = 0; i < 4; i++)
- if (MAP[3][i] == 0)
- {
- MAP[3][i] = num;
- break;
- }
- }
- else if (n == 2)
- {
- if (MAP[0][y] == 0)
- MAP[0][y] = num;
- else
- for (i = 0; i < 4; i++)
- if (MAP[0][i] == 0)
- {
- MAP[0][i] = num;
- break;
- }
- }
- else if (n == 3)
- {
- if (MAP[x][3] == 0)
- MAP[x][3] = num;
- else
- for (i = 0; i < 4; i++)
- if (MAP[i][3] == 0)
- {
- MAP[i][3] = num;
- break;
- }
- }
- else if (n == 4)
- {
- if (MAP[x][0] == 0)
- MAP[x][0] = num;
- else
- for (i = 0; i < 4; i++)
- if (MAP[i][0] == 0)
- {
- MAP[i][0] = num;
- break;
- }
- }
- }
- int Moveup(void)
- {
- int i, k, t;
- int tf = 0;
- for (k = 0; k < 4; k++)
- {
- int n = 4;
- while (n--)
- for (i = 0; i < 3; i++)
- if (MAP[i][k] == 0)
- {
- for (t = i; t < 3; t++)
- {
- MAP[t][k] = MAP[t + 1][k];
- MAP[t + 1][k] = 0;
- tf = 1;
- }
- }
- for (i = 0; i < 3; i++)
- {
- if (MAP[i][k] == MAP[i + 1][k])
- {
- MAP[i][k] *= 2;
- gre += MAP[i][k];
- if (MAP[i][k] == 2048)
- return 0;
- for (t = i + 1; t < 3; t++)
- {
- MAP[t][k] = MAP[t + 1][k];
- MAP[t + 1][k] = 0;
- tf = 1;
- }
- }
- }
- }
- if (tf)
- Add(1);
- return 1;
- }
- int Movedown(void)
- {
- int i, k, t;
- int tf = 0;
- for (k = 0; k < 4; k++)
- {
- int n = 4;
- while (n--)
- for (i = 3; i > 0; i--)
- if (MAP[i][k] == 0)
- {
- for (t = i; t > 0; t--)
小编推荐一个学 C 语言 / C++ 的学习裙 二六三, 六八八, 二七六 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
- {
- MAP[t][k] = MAP[t - 1][k];
- MAP[t - 1][k] = 0;
- tf = 1;
- }
- }
- for (i = 3; i > 0; i--)
- {
- if (MAP[i][k] == MAP[i - 1][k])
- {
- MAP[i][k] *= 2;
- gre += MAP[i][k];
- if (MAP[i][k] == 2048)
- return 0;
- for (t = i - 1; t > 0; t--)
- {
- MAP[t][k] = MAP[t - 1][k];
- MAP[t - 1][k] = 0;
- tf = 1;
- }
- }
- }
- }
- if (tf)
- Add(2);
- return 1;
- }
- int Moveleft(void)
- {
- int i, k, t;
- for (i = 0; i < 4; i++)
- {
- int n = 4;
- while (n--)
- for (k = 0; k < 3; k++)
- {
- if (MAP[i][k] == 0)
- for (t = k; t < 3; t++)
- {
- MAP[i][t] = MAP[i][t + 1];
- MAP[i][t + 1] = 0;
- }
- }
- for (k = 0; k < 3; k++)
- {
- if (MAP[i][k] == MAP[i][k + 1])
- {
- MAP[i][k] *= 2;
- gre += MAP[i][k];
- if (MAP[i][k] == 2048)
- return 0;
- for (t = k + 1; t < 3; t++)
- {
- MAP[i][t] = MAP[i][t + 1];
- MAP[i][t + 1] = 0;
- }
- }
- }
- }
- Add(3);
- return 1;
- }
- int Moveright(void)
- {
- int i, k, t;
- for (i = 0; i < 4; i++)
- {
- int n = 4;
- while (n--)
- for (k = 3; k > 0; k--)
- {
- if (MAP[i][k] == 0)
- for (t = k; t > 0; t--)
- {
- MAP[i][t] = MAP[i][t - 1];
- MAP[i][t - 1] = 0;
- }
- }
- for (k = 3; k > 0; k--)
- {
- if (MAP[i][k] == MAP[i][k - 1])
- {
- MAP[i][k] *= 2;
- gre += MAP[i][k];
- if (MAP[i][k] == 2048)
- return 0;
- for (t = k - 1; t > 0; t--)
- {
- MAP[i][t] = MAP[i][t - 1];
- MAP[i][t - 1] = 0;
- }
- }
- }
- }
- Add(4);
- return 1;
- }
- int Move(void)
- {
- fflush(stdin);
- char key;
- key = getch();
- int tf = 1;
- if (key == 72)
- tf = Moveup();
- else if (key == 80)
- tf = Movedown();
- else if (key == 75)
- tf = Moveleft();
- else if (key == 77)
- tf = Moveright();
- if (!tf)
- {
- system("CLS");
- printf("恭喜达到 2048!");
- }
- return tf;
- }
- int Check(void)
- {
- int i, k;
- for (i = 0; i < 4; i++)
- {
- for (k = 1; k < 4; k++)
- if (MAP[i][k - 1] == MAP[i][k])
- return 0;
- }
- for (i = 0; i < 4; i++)
- {
- for (k = 1; k < 4; k++)
- if (MAP[k - 1][i] == MAP[k][i])
- return 0;
- }
- system("CLS");
- printf("游戏结束!");
- return 1;
- }
- void Print(void)
- {
- printf("得分:%d", gre);
- printf(" ");
- printf(" ");
- printf("MMMM", MAP[0][0], MAP[0][1], MAP[0][2], MAP[0][3]);
- printf(" ");
- printf(" ");
- printf("MMMM", MAP[1][0], MAP[1][1], MAP[1][2], MAP[1][3]);
- printf(" ");
- printf(" ");
- printf("MMMM", MAP[2][0], MAP[2][1], MAP[2][2], MAP[2][3]);
- printf(" ");
- printf(" ");
- printf("MMMM", MAP[3][0], MAP[3][1], MAP[3][2], MAP[3][3]);
- printf(" ");
- }
- int main()
- {
- system("COLOR 5F");
- char s[100];
- while (scanf("%s", s), strcmp(s, "0"))
- {
- // 将 s 所指向的某一块内存中的前 n 个 字节的内容全部设置为 ch 指定的 ASCII 值
- memset(MAP, 0, sizeof (MAP));
- gre = 0;
- system("CLS");
- Add(0);
- Print();
- while (Move())
- {
- fflush(stdin);
- system("CLS");
- Print();
- if (Check())
- break;
- }
- printf("按任继续游戏! 输入 0 退出程序!");
- }
- return 0;
- }
小编推荐一个学 C 语言 / C++ 的学习裙 二六三, 六八八, 二七六 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
代码的话, 就只有简简单单的 三百多行, 这个小游戏也只是 C 语言里面的一些简单的知识点, 希望各位伙伴们, 语法的话, 不要一直去学, 每天去记住那些函数语法知识没很大的用处, 记住了, 思路很重要, 对要学着画图, 编程不要死敲代码画图的话, 可以带动你的大脑思维, 所以说学好了那些知识点, 尝试自己去做小项目, 就是所谓的多动脑吧, 调动自己的逻辑思维能力, 在这里希望每一位爱好编程的伙伴们, 在这条道路上越走越远
来源: http://www.jianshu.com/p/8172d54c4c95