c++制作贪吃蛇的案例代码

  

c++制作贪吃蛇的案例代码?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

c++贪吃蛇代码是【snake_position位置[(N - 2) * (N - 2) + 1],空白snake_position:初始化(int, j), {x=1, y=j;} char [N] [N]】。

 c + +制作贪吃蛇的案例代码

<强>分析思路

下面就来讲讲贪吃蛇的整个设计思路:

一、

贪吃蛇的特点是随机产生食物后,然后通过上下左右地方向键来控制贪吃蛇的移动,

当碰到食物时,便把它吃掉,从而身体长度增加一个,这里便采用“#”作为蛇的头,“*”作为蛇身和食物。

因此我便想到,产生的食物,是如何达到随机的目的呢?通过查阅资料得知,在time.h头文件中,定义了通过rand()函数来产生随机数。下面是相关知识:

概述

rand()函数是产生随机数的一个随机函数c语言里还有将srand()函数等。

详述

(1)使用该函数首先应在开头包含头文件stdlib.h

# include (c++建议使用# include,下同)

(2)在标准的c库中函数rand()可以生成0 ~ RAND_MAX之间的一个随机数,其中RAND_MAX是stdlib。h 中定义的一个整数,它与系统有关。

(3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:

printf("Random numbers are: %i %i\n",rand(),rand());

(4)因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数。

(5)为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子。函数srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器。

由于一开始没有使用srand()函数,多次运行后发现,每次打开运行后产生的食物位置都是一致的,并没有真正达到随机的目的。因此使用srand()函数,又通过time()函数来每次调用一个系统时间来作为srand()的种子。由于每次调用的系统时间并不相同,所以每次的种子也就不相同,从而使得rand()函数达到了随机数的目的。下面是time()函数相关知识:

time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。

主要用来获取当前的系统时间,返回的结果是一个time_t类型,其值表示从UTC(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime函数将time_t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。需要包含头文件

C标准库函数

time_t time(time_t *t);

如果t是空指针,直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。

这样便通过rand()函数产生了随机数,对其进行取模,便得到一定范围内的随机数了。

二、

然后便是吃食的问题了,当蛇头遇到一个食物时(食物在贪吃蛇前进的方向上),便将该食物变为蛇头,然后将原先的蛇头变为蛇身,从而达到了吃食的目的。

那如果没有碰到食物呢?就按照原来的方向或者键盘按下的方向继续前进就是了。

三、

下面就是实现的问题了,如何将每个动态都展现出来呢?就是说贪吃蛇是一下一下往前移动的,这个又是如何实现的呢?

这里我使用了clock()函数,下面是相关知识:

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:

clock_t clock(void) ;

简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型。

因此,通过定义

int start=clock();while(clock()-start

c++制作贪吃蛇的案例代码