c++/c项目程序员

简单的C语言编程学习打造—简单的2048小游戏

2018-02-28  本文已影响89人  小辰带你看世界

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

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(" ┃%4d┃%4d┃%4d┃%4d┃ ", MAP[0][0], MAP[0][1], MAP[0][2], MAP[0][3]);

printf(" ┣━━━╋━━━╋━━━╋━━━┫ ");

printf(" ┃┃┃┃┃ ");

printf(" ┃%4d┃%4d┃%4d┃%4d┃ ", MAP[1][0], MAP[1][1], MAP[1][2], MAP[1][3]);

printf(" ┣━━━╋━━━╋━━━╋━━━┫ ");

printf(" ┃┃┃┃┃ ");

printf(" ┃%4d┃%4d┃%4d┃%4d┃ ", MAP[2][0], MAP[2][1], MAP[2][2], MAP[2][3]);

printf(" ┣━━━╋━━━╋━━━╋━━━┫ ");

printf(" ┃┃┃┃┃ ");

printf(" ┃%4d┃%4d┃%4d┃%4d┃ ", 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语言里面的一些简单的知识点,希望各位伙伴们,语法的话,不要一直去学,每天去记住那些函数语法知识没很大的用处,记住了,思路很重要,对要学着画图,编程不要死敲代码。画图的话,可以带动你的大脑思维,所以说学好了那些知识点,尝试自己去做小项目,就是所谓的多动脑吧,调动自己的逻辑思维能力,在这里希望每一位爱好编程的伙伴们,在这条道路上越走越远。

上一篇下一篇

猜你喜欢

热点阅读