基于 51单片机的贪吃蛇游戏
063210
摘要
本文讲的是基于STC89C51单片机为微处理器的贪吃蛇游戏,实现功能有随机产生果实,初始时为2节蛇身,吃到果实然后变长,然后通过数码管显示吃掉的个数即分数,通过16*16的1588BS显示蛇身和果实。软件用C语言进行编写,硬件采用键盘,点阵显示单片机最小系统。事先还通过Proteus进行仿真,仿真成功之后进行硬件搭建。
关键词:单片机;贪吃蛇;仿真
引言 如今虽然51是8位微处理器,已经落伍了,但是现在各大高校,仍然对51进行开设课程讲解。51作为一个入门级的单片机,确实比较好理解,对51也将继续应用下去
1.
游戏实现功能
贪吃蛇通过4个8*8点阵组成的16*16点阵显示,然后通过stc89c51单片机作为MCU 进行控制,通过c语言进行编写,通过下载电路将hex文件下载到单片机里面。此游戏,通道8个键盘,实现上下左右,左上右上左下右下,八个方向进行移动。然后通过数码管进行显示吃到的果实的个数,也是得到的分数。
用8个键控制蛇运动的方向,设置边缘为墙壁。当头碰到墙壁或者自己时死亡,死亡之后,恢复到初始状态。
1.
1588BS点阵
1588BS内部就是一个8*8个发光二极管连接起来。一排8个二极管,有个共阳极,如果把共阳极置1,剩下8个引脚只有置零就会亮,通过这种方式对某个位置的点阵进行控制。
3. 实现贪吃蛇的算法
实现贪吃蛇的基本过程为,就是通过点阵点亮蛇身,然后随机产生果实,也点亮,通过键盘控制使得蛇身进行移动,吃到果实,蛇身变长。当头碰到墙壁或者自己时,游戏结束。
我通过一个一维数组存储蛇身的位置信息和果实的位置信息,当移动时,蛇头根据计算得到移动后的距离,而后面的每一节等于上次上一节的数据。来实现移动的效果。当吃到过果实时,将果实的位置赋值为蛇头,依次执行之前的操作,接着再随机产生果实。
移动主要实现代码如下:
for(i=n-1;i>1;i--)
{
x[i]=x[i-1];
y[i]=y[i-1];
}
x[1]=x[2]+addx;
y[1]=y[2]+addy;
判断撞墙或者撞自己代码
bit knock()
{bit k;
k=0;
if(x[1]>15||y[1]>15)k=1;
for(i=2;i
return k;
}
4. 系统仿真设计
因为stc89c51的引脚过少,所以为了节省引脚,用了74ls138译码器,进行对1588BS进行控制,由于译码器只是一个引脚输出为1其余为0,所以为了和1588BS搭配使用,我又采用了非门进行取反。
c语言游戏贪吃蛇源码通过51io口对8个键盘进行控制,然后实现上下左右,左上左下右上右下8个方向进行移动
5.结论
本文讲述了贪吃蛇的实现主要功能及过程,用stc89c51对1588BS进行控制通过c语言进行
贪吃蛇的主要实现算法进行编程。事先通过Proteus进行仿真,使结果更加可行,然后硬件搭建,程序下载,现象成功。
参考文献
[1]刘帅,张冬,何建国,张晓彪,卫婷婷,李晓林.基于AT89C52单片机的LCD12864显示设计及贪吃蛇游戏算法研究[J].科技通报,2018,34(12):192-197.
[2]张文华,廖俊杰,付乙眉.基于C语言的贪吃蛇游戏的简单设计与实现[J].智富时代,2019(03):183.
[3]张文华,廖俊杰,付乙眉.基于C语言的贪吃蛇游戏的简单设计与实现[J].智富时代,2019(03):183.
[4]李营,吕兆承,陈帅,权循忠.基于FPGA的贪吃蛇游戏设计与实现[J].通化师范学院学报,2020,41(08):14-18.
[5]李营,吕兆承,陈帅,权循忠.基于FPGA的贪吃蛇游戏设计与实现[J].通化师范学院学报,2020,41(08):14-18.
[6]李营,吕兆承,陈帅,权循忠.基于FPGA的贪吃蛇游戏设计与实现[J].通化师范学院学报,2020,41(08):14-18.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。