原理图

源程序


#include <reg51.h>
#define uchar unsigned char
#define SNAKE 20                 //最大长长度
#define TIME 50                 //显示延时时间
#define SPEED 71               //速度控制sbit Left=P3^4;             //左
sbit Right=P3^2;             //右
sbit Up=P3^3;        //上
sbit Down=P3^5;              //下
uchar x[SNAKE+1];
uchar y[SNAKE+1];
uchar time,n,i,e;              //延时时间,当前蛇长,通用循环变量,当前速度
char addx,addy;                //位移偏移量
/********************
延时程序
*********************/
void delay(char MS)
{char us,usn;while(MS!=0){usn = 0;while(usn!=0){us=0xff;while (us!=0){us--;};usn--;}MS--;}
}
/*******************************************
判断碰撞
*******************************************/
bit knock()
{bit k;k=0;if(x[1]>7||y[1]>7)k=1;                             //撞墙for(i=2; i<n; i++)if((x[1]==x[i])&(y[1]==y[i]))k=1; //撞自己 return k;
}
/*****************
上下左右键位处理
*****************/
void turnkey()// interrupt 0 using 2
{//Left=1;if(!Down){addy=0;if(addx!=1)addx=-1;else addx=1;}if(!Up){addy=0;if(addx!=-1)addx=1;else addx=-1;}if(!Left){addx=0;if(addy!=-1)addy=1;else addy=-1;}if(!Right){addx=0;if(addy!=1)addy=-1;else addy=1;}
}
/*****************
乘方程序
*****************/
uchar mux(uchar temp)
{if(temp==7)return 128;if(temp==6)return 64;if(temp==5)return 32;if(temp==4)return 16;if(temp==3)return 8;if(temp==2)return 4;if(temp==1)return 2;if(temp==0)return 1;return 0;
}
/*****************
显示时钟 显示程序
*****************/
void timer0(uchar k)
{while(k--){for(i=0; i<SNAKE+1; i++){P2=mux(x[i]);P1=255-mux(y[i]);turnkey();                     //上下左右键位处理delay(TIME);                   //显示延迟P2=0x00;P1=0xff;}}
}
/*****************
主程序
*****************/
void main(void)
{e=SPEED;P0=0x00;P1=0xff;P2=0x00;P3=0xff;while(1){for(i=3; i<SNAKE+1; i++)x[i]=100;for(i=3; i<SNAKE+1; i++)y[i]=100; //初始化 x[0]=4;y[0]=4;                                                //果子n=3;                                                          //蛇长 n=-1x[1]=1;y[1]=0;                                                //蛇头x[2]=0;y[2]=0;                                                //蛇尾1addx=0;addy=0;                                                //位移偏移while(1){if(!Down||!Up||!Left||!Right)break;timer0(1);}while(1){timer0(e);if(knock()){e=SPEED;    //判断碰撞break;}if((x[0]==x[1]+addx)&(y[0]==y[1]+addy))         //是否吃东西 {n++;if(n==SNAKE+1){n=3;e=e-10;for(i=3; i<SNAKE+1; i++)x[i]=100;for(i=3; i<SNAKE+1; i++)y[i]=100;}x[0]=x[n-2];y[0]=y[n-2];}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;                     //移动}}
}

运行效果

【PROTEUS仿真】AT89C51实现简单贪吃蛇程序相关推荐

  1. 模仿别人的简单贪吃蛇程序

    参考的别人的贪吃蛇程序,只做了少许的更改,惭愧.http://bbs.csdn.net/topics/350080780 #include <stdio.h> #include <s ...

  2. 基于C语言Ncurse库和链表的简单贪吃蛇小游戏

    参考:基于C语言Ncurse库和链表的简单贪吃蛇小游戏 作者:三速何时sub20 发布时间:2020-09-29 10:23:51 网址:https://blog.csdn.net/weixin_44 ...

  3. JAVA小程序:一个基于MVC框架的贪吃蛇程序

    学习JAVA也有一段时间了,之前看了翁恺老师的视频,跟着做了一个细胞自动机,粗浅地了解了一点MVC框架的知识,感觉获益匪浅.但是细胞自动机毕竟是跟着视频完成的,有很大程度上都是参考了视频里的代码,没有 ...

  4. 完整版! 大一新手C语言数据结构实现简单贪吃蛇游戏

    大一新手C语言数据结构实现简单贪吃蛇游戏含源代码 贪吃蛇 1.前言简述 2.编写语言及工具 3.游戏的头文件代码(.h) 3.1map.h 3.2snake.h 3.3Food.h 4.游戏的源文件代 ...

  5. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  6. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  7. html与js简单小游戏,JS实现简单贪吃蛇小游戏

    本文实例为大家分享了JS实现简单贪吃蛇游戏的具体代码,供大家参考,具体内容如下 1.使用语言 HTML+CSS+JavaScript 2.使用工具 visual studio code 3.GitHu ...

  8. 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...

    51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...

  9. 用python写一个贪吃蛇程序

    我可以为您提供一些有关如何使用Python编写贪吃蛇程序的指导.首先,您需要确定您的程序所需的功能,以及游戏的规则和特性.接下来,您可以编写代码来实现这些功能,并使用Python的图形库来绘制游戏界面 ...

最新文章

  1. 060_Unicode字符编码
  2. 17.explain_api
  3. rssi定位算法 c语言,【论文※】An RSSI Gradient-based AP Localization Algorithm 基于RSSI梯度的AP定位算法...
  4. abap判断包含字符当中包含小数点_剑指Offer整理3 -- 栈和队列 + 数学和字符串
  5. \ d效率低于[0-9]
  6. f.readline()的奇妙坑点
  7. ubuntu 切换java环境,配置单独的用户环境
  8. 【图像修复】基于matlab GUI自适应空间滤波图像修复【含Matlab源码 840期】
  9. 在线制作车牌效果图_写实效果用3dsmax,想快用智能效果图软件
  10. 史上最全java项目开发编程规范
  11. 网页输出pdf并转为word
  12. cornell movie-dialogs corpus 康奈尔大学电影对话语料介绍及下载 可用于dialog,chatbot
  13. leetcode 初级算法 数组
  14. centos树莓派版本安装ssh_树莓派安装系统+ssh登录
  15. Excel函数sumproduct应用案例-多条件求和
  16. 转:走向自治:关于德鲁克的五个关键词
  17. Apple watch 心率监测的原理是什么
  18. c++ 不要节约代码行数_不要只是代码,但也c
  19. python爬虫读取pdf_Python读取PDF内容
  20. 那些年啊,那些事——一个程序员的奋斗史 ——98

热门文章

  1. 优麒麟安装php环境,优麒麟(Ubuntu Kylin) 18.04.2 LTS 版本发布
  2. 学习UI设计怎么样?为什么有人觉得UI设计找工作难?
  3. Cerebro:一个好用的单细胞数据展示shiny工具
  4. 单细胞测序学习笔记(二)——细胞注释
  5. 168. 生日蛋糕(DFS)
  6. 相见恨晚!Unity插件——DoTween介绍
  7. 如何将一个python文件打包成一个可执行的小程序
  8. 关于Android Studio Arctic Fox 无法在 build.gradle(Project) 中添加第三方Maven仓库的解决方案
  9. Starling第一篇
  10. 区域一体化电子病历系统管理源码 医院SOA架构 医院源码