学习体会
构架(基于C语言实现贪吃蛇):
a:开场动画
b:屏幕显示
c:蛇的移动
d:最终分数的显示
代码:
①开场动画
x=100,用一个循环显示。(也可以用红外控制)

//开场动画
wile(x--){for(i=0;i<8;i++){Hc595SendByte(ledwei[i],ledduan[i]);delay(10);         }}

②蛇的移动
二维数组代表蛇的坐标,0,空地,>0&&<65,蛇,65,果实

//主循环while(1){   //移动for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){if(map[i][j]==length){map[i][j]=0;}else if(map[i][j]>1 && map[i][j]<65){map[i][j]++;}else if(map[i][j]==1){map[i][j]++;switch(command){case 0:hand_i=i-1;hand_j=j;break;case 1:hand_i=i;hand_j=j+1;break;case 2:hand_i=i+1;hand_j=j;break;case 3:hand_i=i;hand_j=j-1;break;}}}}//判断是否到墙边if(hand_i==-1){ hand_i=7;}else if(hand_i==8){hand_i=0;}if(hand_j==-1){ hand_j=7;}else if(hand_j==8){hand_j=0;}//判断是否死亡if(map[hand_i][hand_j]>1 && map[hand_i][hand_j]<65){break;//跳出主循环}if(map[hand_i][hand_j]==65){map[hand_i][hand_j]=1;length++;score++;while(1) //要用循环,将新果实的位置找出 {i = rand() % SIZE; j = rand() % SIZE;//规定果实的位置 if (map[i][j] == 0){map[i][j] = 65;break;}}beep();//在串口助手上显示分数SBUF=score+0x30;//十进制要加0x30,十六进制就用hex接收,不用加0x30。while(!TI);           //等待发送数据完成TI=0;}else{map[hand_i][hand_j]=1;}

③显示
用16进制传给74HC595芯片

//显示for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){if(map[i][j]!=0){switch(i){case 0:Duan[j]+=0x01;break;case 1:Duan[j]+=0x02;break;case 2:Duan[j]+=0x04;break;case 3:Duan[j]+=0x08;break;case 4:Duan[j]+=0x10;break;case 5:Duan[j]+=0x20;break;case 6:Duan[j]+=0x40;break;case 7:Duan[j]+=0x80;break;}}} }for(i=0;i<SIZE;i++){Hc595SendByte(ledwei[i],Duan[i]);Duan[i]=0x00;delay(10);}

④显示分数
一半一半分别显示各位和十位。

//显示分数for(i=0;i<SIZE;i++){Duan[i]=0x00;}switch((score%10)){case 0:Duan[4]=0x7f;Duan[5]=0x41;Duan[6]=0x41;Duan[7]=0x7f;break;case 1:Duan[4]=0x00;Duan[5]=0x00;Duan[6]=0x00;Duan[7]=0x7f;break;case 2:Duan[4]=0x79;Duan[5]=0x49;Duan[6]=0x49;Duan[7]=0x4f;break;case 3:Duan[4]=0x49;Duan[5]=0x49;Duan[6]=0x49;Duan[7]=0x7f;break;case 4:Duan[4]=0x0f;Duan[5]=0x08;Duan[6]=0x08;Duan[7]=0x7f;break;case 5:Duan[4]=0x4f;Duan[5]=0x49;Duan[6]=0x49;Duan[7]=0x79;break;case 6:Duan[4]=0x7f;Duan[5]=0x49;Duan[6]=0x49;Duan[7]=0x79;break;case 7:Duan[4]=0x01;Duan[5]=0x01;Duan[6]=0x01;Duan[7]=0x7f;break;case 8:Duan[4]=0x7f;Duan[5]=0x49;Duan[6]=0x49;Duan[7]=0x7f;break;case 9:Duan[4]=0x4f;Duan[5]=0x49;Duan[6]=0x49;Duan[7]=0x7f;break;                                                     }switch(score/10){case 0:Duan[0]=0x7f;Duan[1]=0x41;Duan[2]=0x41;Duan[3]=0x7f;break;case 1:Duan[0]=0x00;Duan[1]=0x00;Duan[2]=0x00;Duan[3]=0x7f;break;case 2:Duan[0]=0x79;Duan[1]=0x49;Duan[2]=0x49;Duan[3]=0x4f;break;case 3:Duan[0]=0x49;Duan[1]=0x49;Duan[2]=0x49;Duan[3]=0x7f;break;case 4:Duan[0]=0x0f;Duan[1]=0x08;Duan[2]=0x08;Duan[3]=0x7f;break;case 5:Duan[0]=0x4f;Duan[1]=0x49;Duan[2]=0x49;Duan[3]=0x79;break;case 6:Duan[0]=0x7f;Duan[1]=0x49;Duan[2]=0x49;Duan[3]=0x79;break;case 7:Duan[0]=0x01;Duan[1]=0x01;Duan[2]=0x01;Duan[3]=0x7f;break;case 8:Duan[0]=0x7f;Duan[1]=0x49;Duan[2]=0x49;Duan[3]=0x7f;break;case 9:Duan[0]=0x4f;Duan[1]=0x49;Duan[2]=0x49;Duan[3]=0x7f;break;}while(1){for(i=0;i<SIZE;i++){Hc595SendByte(ledwei[i],Duan[i]);delay(10);}}

⑤方向
有红外控制,保存在全局变量command中。

f(IrValue[2]!=~IrValue[3]){return;}//获得贪吃蛇运动方向switch(IrValue[2]){case 8:temp=3;break;//向左case 82:temp=2;break;//向下case 90:temp=1;break;//向右case 24:temp=0;break;//向上}if(abs(temp-command)!=2)//判断是否输入,并且不能反向走{command=temp;}

51单片机--8*8点阵贪吃蛇--C语言相关推荐

  1. 51单片机 8*8点阵贪吃蛇

    在学完按键和点阵屏后,其实就可以做这个贪吃蛇了,只要理解了8*8点阵屏,贪吃蛇的显示就不成问题,理解了贪吃蛇的运作机制,做出贪吃蛇就不成问题,在网上也有很多人做出了这个程序,主要思想应该都是差不多的, ...

  2. 51单片机led点阵C语言,51单片机驱动LED点阵扫描显示C语言程序

    #ifndef__Matrix_H__ #define__Matrix_H__ #ifdef__cplusplus extern"C" { #endif #define SET  ...

  3. Arduino + 74HC595实现24x24点阵贪吃蛇游戏

    Arduino + 74HC595实现24x24点阵贪吃蛇游戏 简介 硬件 开发环境 接线图 软件部分 方向控制 蛇身轨迹 碰壁检测 蛇身显示 刷新食物 仿真演示 源码和原理图下载 简介 本文是基于A ...

  4. 基于51单片机的16X64点阵仿真

    目录 一.项目需求 二.仿真图 三.代码 四.资料清单 资料下载地址:基于51单片机的16X64点阵仿真 一.项目需求 16X64点阵上显示汉子,并且可以左右移动. 二.仿真图 左移 右移 三.代码 ...

  5. C语言贪吃蛇游戏代码,贪吃蛇C语言代码实现大全

    一.C语言贪吃蛇代码实现前言 设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言. 贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏, ...

  6. 51单片机使用HC-SR501人体红外感应器C语言

    51单片机使用HC-SR501人体红外感应器C语言 前言 买到该产品后问客服和面向百度编程,发现在51单片机上 使用的教程不多,且不够细致,使用存在困难,烦躁了很久,为了不让后来者跟我一样,写一篇 文 ...

  7. 单片机红外线c语言,自己写的51单片机的红外线遥控接收程序(C语言)

    自己写的51单片机的红外线遥控接收程序(C语言) (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 //51单片机做的红外遥控实验(C ...

  8. c语言课程设计贪吃蛇报告,贪吃蛇C语言课程设计报告.doc

    贪吃蛇C语言课程设计报告 贪吃蛇游戏设计 姓名: 张力 学号: 完成日期: 月 日 一.设计目的 贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和 ...

  9. 贪吃蛇c语言 游戏中会出现障碍物,贪吃蛇C语言游戏代码.doc

    贪吃蛇C语言游戏代码 //开始编写游戏需要的类 #include //EasyX_2011惊蛰版(绘图库) #include #include #include #define UP1 #define ...

最新文章

  1. 2017-6-3 jQuery 事件 DOM操作
  2. python椭圆拟合_opencv python 轮廓特征/凸包/外接矩形/外接圆/拟合矩形/拟合直线/拟合圆...
  3. 服务器访问oracle数据库,Oracle数据库的访问——通过不同服务器名对数据库的访问...
  4. libuv:多平台支持库-异步I / O
  5. greenplum 外部表 oracle,GREENPLUM使用技巧(一)- 使用外部表实现DBLINK功能
  6. 【白皮书分享】2021年智慧城市白皮书:依托智慧服务,共创新型智慧城市.pdf(附下载链接)
  7. SpringCloudSpringBootmybatis分布式微服务云架构-hystrix参数详解
  8. Node对CommonJS模块的实现
  9. java之单例设计模式
  10. android消息处理机制原理解析
  11. so运行出错:只包含了头文件,未同时编译cpp
  12. 设计模式 (二十二) 责任链模式
  13. 个人电脑检查显示的项目
  14. (一)概率论基础教程-基本概念
  15. 基于android的个人记账系统,android平台的个人记账系统的设计与实现.docx
  16. 2019年1月最新win10激活密匙 win10各版本永久激活序列号 win10正式版激活码分享
  17. [1] UI原型设计工具Pencil Project 学习系列----- 为什么选择
  18. win7和win10对于wifi共享的不同
  19. vue项目中element-ui的分页器(组件封装)
  20. uniapp实现音视频通讯

热门文章

  1. 无线信号RSSI分析
  2. Excel怎么快速显示隐藏区域
  3. 支付宝沙箱环境的H5收不到手机验证码
  4. 过某app的root检测
  5. 挑战30天,开发一个消防答题小程序。教你如何处理小程序用户注册
  6. kubernetes 联邦搭建(kubefed)
  7. 华为服务器系统关机命令,服务器远程关机命令
  8. 2019年第三期全国高校大数据与人工智能骨干师资研修班
  9. Neural Style Transfer 风格迁移经典论文讲解与 PyTorch 实现
  10. 英伟达宣布,《堡垒之夜》重返苹果iOS平台