导航:首页 > 操作系统 > 单片机88点阵贪吃蛇

单片机88点阵贪吃蛇

发布时间:2024-02-06 16:48:03

‘壹’ 各位都用51单片机做过什么好玩的东西没

当然有啦,如:光影摇棒,一摇就可以显示出汉字来。
还比如:用一个8X8LED点阵,做一个贪吃蛇游戏机。
等等,很多的,都可以用单片机做出一个成形的东西来。

‘贰’ 求大神帮忙,用51单片机c语言编写贪吃蛇代码

这个我写过,代码已经丢了,我当时是创建一个(u16)数组,每个数组里面2个字节代表都是横竖2个地址,显示特定数量是数组的点(蛇长度)。每一次前进,就需要对数组进行自我覆盖,然后显示这个新数组的点。如果要变长,那就多显示一个数组,往后的不显示。
如果现在写,我倾向于使用
链表
,这样就不需要反复复制整个数组,而是只改动头尾变化的点。

‘叁’ 51单片机开发板的功能介绍

1、8个LED灯,可以练习基本单片机IO操作,在其他程序中可以做指示灯使用。
2、2个四联8段数码管,显示温度数据,HELLO欢迎词、时钟等。
3、高亮8*8点阵,如练习数字,字母,图片显示,或者小游戏的开发如贪吃蛇等。
4、4个独立按键,可以配置为中断键盘,为程序的按键扫描节省更多的时间。
5、8个AD按键,主要设计为游戏开发如推箱子等,去掉了矩阵键盘,AD键盘在实际中的应用相当广泛,如电视机加减搜台等都是采用AD键盘,一根AD线可以扩展几百个按键,更接近工程。
6、PCF8591具有AD/DA功能,其采用IIC总线协议,可练习IIC总线的操作。
7、DS18B20:单线多点检测支持。
8、光敏电阻测试光线强度,感受白天黑夜的区别。
9、FM收音机:能接收80M到110MHz之间的FM频段。可实现自动搜台和手动搜台。
10、DS1302时钟芯片提供实时时钟,带3V电池,在掉电的情况下,时钟仍然可以继续运行。
11、可读写SD卡文件系统,保存数据显示到TFT液晶屏等。
12、继电器可以控制高电压的设备,高压危险,请小心使用。
13、直流电机接口,控制直流电机。
14、步进电机接口,控制步进电机运行。
15、蜂鸣器,可以做电子琴、音乐发声等。
16、74HC595芯片练习串行转并行数据扩展。
17、74HC573锁存扩展芯片,可以扩展接口。
18、ULN2003电机驱动芯片。(这里用它来驱动步进电机,直流电机,继电器和蜂鸣器)
19、MAX232串口数据传输延长发送距离。(可与计算机通信,同时也可做为STC单片机下载程序的接口)
20、PL2303下载单片机,一线下载,直接的USB下载方式,高速下载。
21、TFT液晶屏,单片机也可以控制彩屏了,让你的学习充满乐趣
22、nRF24L01无线数据传输芯片接口,可以插nRF24L01芯片,做高速无线数据传输。
23、LCD1602液晶接口,字符液晶两行,每行可以显示16个字符。
24、LCD12864带字库液晶接口。
25、LCD12864图形液晶接口。
26、DS18B20单线多点温度采集接口。一根线上便可拓展多个DS18B20温度传感器,先提供两个。
27、提供ISP下载接口,可下载AVR、AT的单片机。支持AVR单片机。
28、40针扩展接口,可以无限扩展。以后的DZR-01A开发板配件将从此端口扩展出去。
29、PS2鼠标键盘接口。配合红外遥控器甚至可以遥控我们的电脑!(配例程)
30、AVR/51复位按键。可以复位51 STC AVR单片机,全部支持
31、TEA5767的IIC总线控制。学习IIC控制
32、SD卡的SPI总线控制。扩展大容量存储器
33、红外遥控接收器,可采集红外遥控发出的信号,可使用遥控信号控制其他设备。
34、外接5V供电电源座。
35、RXD、TXD、POWER电源指示灯
36、40PIN紧锁座(非常方便单片机芯片的取放)
37、带LM1117-3.3稳压芯片(为彩屏液晶,SD卡和无线模块供电)
38、USB供电(USB可以提供500MA的电流,完全能满足开发板的需求了)
39、预留电源+5V,GND接口各四个(方便用户扩展其他外围电路时取电和共地)

‘肆’ 51单片机怎么做做游戏机

要用51单片机做做游戏机,只能做些简单的游戏机,例如,用8X8点阵模块做个贪吃蛇,用12864点阵屏做个更好些的贪吃蛇,俄罗斯方块等。像手机上玩的游戏就做不了的,速度不够,手机用的显示屏又不好驱动。

‘伍’ c语言 贪吃蛇 程序

基本思路:

蛇每吃一个食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#define BEG_X 2

#define BEG_Y 1

#define WID 20

#define HEI 20

HANDLE hout;

typedef enum {UP, DOWN, LEFT, RIGHT} DIR;

typedef struct Snake_body

{

COORD pos;//蛇身的位置

struct Snake_body *next;//下一个蛇身

struct Snake_body *prev;//前一个蛇身

}SNAKE, *PSNAKE;

PSNAKE head = NULL;//蛇头

PSNAKE tail = NULL;//蛇尾

//画游戏边框的函数

void DrawBorder()

{

int i, j;

COORD pos = {BEG_X, BEG_Y};

for(i = 0; i < HEI; ++i)

{

SetConsoleCursorPosition(hout, pos);

for(j = 0; j < WID; ++j)

{

if(i == 0)//第一行

{

if(j == 0)

printf("┏");

else if(j == WID - 1)

printf("┓");

else

printf("━");

}

else if(i == HEI - 1)//最后一行

{

if(j == 0)

printf("┗");

else if(j == WID - 1)

printf("┛");

else

printf("━");

}

else if(j == 0 || j == WID - 1)//第一列或最后一列

printf("┃");

else

printf(" ");

}

++pos.Y;

}

}

//添加蛇身的函数

void AddBody(COORD pos)

{

PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));

pnew->pos = pos;

if(!head)

{

head = tail = pnew;

}

else

{

pnew->next = head;//新创建蛇身的next指向原先的蛇头

head->prev = pnew;//原先的蛇头的prev指向新创建的蛇身

head = pnew;//把新创建的蛇身作为新的蛇头

}

SetConsoleCursorPosition(hout, head->pos);

printf("◎");

}

//蛇身移动的函数

void MoveBody(DIR dir)

{

PSNAKE ptmp;

COORD pos = head->pos;

switch(dir)

{

case UP:

if(head->pos.Y > BEG_Y + 1)

--pos.Y;

else

return;

break;

case DOWN:

if(head->pos.Y < BEG_Y + HEI - 2)

++pos.Y;

else

return;

break;

case LEFT:

if(head->pos.X > BEG_X + 2)

pos.X -= 2;

else

return;

break;

case RIGHT:

if(head->pos.X < BEG_X + (WID - 2) * 2)

pos.X += 2;

else

return;

break;

}

AddBody(pos);//添加了一个新的蛇头

ptmp = tail;//保存当前的蛇尾

tail = tail->prev;

if(tail)

tail->next = NULL;

SetConsoleCursorPosition(hout, ptmp->pos);

printf(" ");

free(ptmp);

}

int main()

{

int ctrl;

DIR dir = RIGHT;//初始蛇的方向是向右的

COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};

system("color 0E");

system("mode con cols=90 lines=30");

hout = GetStdHandle(STD_OUTPUT_HANDLE);

printf(" ------------贪吃蛇的移动------------");

DrawBorder();

//自定义几个蛇的身体

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

//控制蛇的移动

while(ctrl = getch())

{

switch(ctrl)

{

case 'w':

if(dir == DOWN)

continue;

dir = UP;

break;

case 's':

if(dir == UP)

continue;

dir = DOWN;

break;

case 'a':

if(dir == RIGHT)

continue;

dir = LEFT;

break;

case 'd':

if(dir == LEFT)

continue;

dir = RIGHT;

break;

case 'q':

return 0;

}

MoveBody(dir);

}

return 0;

}

(5)单片机88点阵贪吃蛇扩展阅读:

实现逻辑

1,可以设置光标,就能实现制定位置打印制定符号。

2,涉及一个结构体,包含两个元素坐标元素和一个结构体指针。

3,结构体串联形成链表,遍历获取成员坐标,打印符号得到蛇身。

4,不断的加头,去尾,重新遍历坐标,再打印形成蛇的移动。

5,食物产生的位置判定,不能越界,也不能与蛇身体重合。

6,蛇的转向判定,一条规则,不允许倒退。

7,转向的实现,跟行进方向决定新的关节坐标(当前头的上下左右)

8,死亡检测,是否头节点坐标是否与墙壁重合,是否与身体其他关节重合。

9,加速减速,设置刷新休眠时间实现。

‘陆’ 开发板的电路连接都是固定的了吗,用单片机开发板能做出贪吃蛇游戏吗

1.这要看开发板的设计。有的是固定式的,有的是自由连接的。固定式的用起来方便,实验不需要拔插接头,没有接错线的顾虑,但不灵活。自由连接的则完全相反。

不过,就算是固定式的开发板,大部分也会把所有的IO引脚引出,所以你仍然可以把它当一个最小板然后组合其他的电路。

2.要做贪吃蛇,单片机开发板必须至少有:

如果你的开发板有这些,那么恭喜你,舞台已经搭好了,剩下的就看你的发挥了。

阅读全文

与单片机88点阵贪吃蛇相关的资料

热点内容
怎么进入电脑板2b2t服务器 浏览:282
idea编译进度条 浏览:132
文件夹工具箱软件 浏览:686
最近为什么手机连不上索尼服务器 浏览:877
海康录像机怎么关视频加密 浏览:786
编程以后有可能被机器人代替吗 浏览:522
windows创建文件命令 浏览:986
linuxcopy文件内容 浏览:383
程序员帅哥秃顶 浏览:839
阿里云服务器开通流程 浏览:105
如何开云服务器 浏览:979
网站小说源码 浏览:301
php用什么ide 浏览:867
网上预约课程app哪个好 浏览:153
android兼容测试工具 浏览:97
云服务器不支持虚拟化怎么办 浏览:189
加密方式的演变 浏览:364
java常用算法pdf 浏览:735
服务器数据遇到异常什么原因 浏览:450
phpexif信息 浏览:544