Linux C编程连载【6】- “混沌”贪吃蛇

 

【任务】利用混沌随机数实现贪吃蛇游戏。

【解析】

【分析】

(1) 采用Lorenz 混沌映射                                           

       根据混沌时间序列的非周期性,改变迭代次数则会产生伪随机的运算结果。将时间(微秒) 向正的方向平移j(j>0),作为Lorenz映射的迭代因子,则迭代次数的范围为[j,j+1000],则混沌方程最少进行j次迭代,最多进行j+1000次迭代。将迭代的序列进行映射处理与本地时间组合,则可以形成随机且唯一的序列码。该序列码可以作为贪吃蛇食物的种子。

(2) 贪吃蛇实现

       贪吃蛇是双链表的典型操作。初始化的贪吃蛇为一个具有3个节点的双链表,包括head,tail和temp节点。

游戏开始后,首先在贪吃蛇头结点之后插入一个新节点,如果贪吃蛇没有吃到食物,就删除掉尾节点之前的一个节点。这样只要在相当短的时间内进行(如20ms),利用人眼的视觉暂留,就会显示出贪吃蛇移动的效果。如果贪吃蛇吃到了食物,就不删除新插入的节点,并显示这个节点的内容(蛇身)。贪吃蛇实现效果如图1所示:

图1 贪吃蛇实现效果

 

chaos.h

chaos.c

list.h

list.c


snake.c

Makefile

 

【链接】Qt写的贪吃蛇,代码暂不公开。

【特点】食物的颜色和位置按混沌运算规律改变。


【参考】

1 http://blog.csdn.net/tandesir/article/details/6917393

2 http://topic.csdn.net/u/20101001/01/2280b2dd-1446-439d-b1f8-cdd9db1fd615.html

【备注】

list.c 注释掉的代码有误,已修改。2011-11-18


 转载请表明出处,欢迎转载!

http://blog.csdn.net/tandesir/article/details/6954910

 

posted @ 2011-11-10 09:58  j2ee技术  阅读(197)  评论(0编辑  收藏  举报