资源简介
用51单片机在16*16的led点阵上实现贪吃蛇游戏
代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
//基本功能部分变量
sbit k0=P3^7; //下面的开关,锁定用 和k1同时按下时解锁
sbit k1=P3^5; //中间的开关,左移(回移)用 和k0同时按下时解锁
sbit k2=P3^6; //左边的开关,右移(顺移)用
sbit g1=P3^0; //重力感应1
sbit g2=P3^1; //重力感应2
sbit ksnack=P3^4; //自锁式按键 贪吃蛇开关
uchar *p; //指向table的指针
uchar code X[]={0x000x010x020x030x040x050x060X07};//选列
uchar code Y[]={0x800x400x200x100x080x040x020X01};//选行
uint n=0; // 指针使用(选行)
uint num=0; // 中断计数使用
uint j=0; // 每次左右移计数停止时使用
uint t=0; // 重力选定使用
uint s1=0; // 锁定
uint s2=0; // 解锁
uint s3=0; // 左移(回移)
uint s4=0; // 右移(顺移)
uint s5=0; // 待机
uint s6=0; // 贪吃蛇
uint s7=0; //
//贪吃蛇部分
#define MAX_LENGTH 33 //蛇的最大长度
struct Point
{
uchar x y;
};
struct Snake
{
struct Point nodes[MAX_LENGTH];
uchar length;
uchar direction;
uchar live;
} snake;
struct Food
{
struct Point position;
uchar exist;
} food;
uint left=0top=0right=15bottom=15jfood=0;
int lastxlasty;
void delay_ms(uint xms) //延时程序
{
uint ij;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void delay()
{
uint i;
for(i=160;i>0;i--);
}
//贪吃蛇
void init() {
snake.nodes[0].x=3;
snake.nodes[0].y=3;
snake.nodes[1].x=4;
snake.nodes[1].y=3;
snake.length=2;
snake.live=1;
snake.direction=0;
food.exist=0;
}
int oppositeDirection(int t) {
if(t==0&&snake.direction==2){
return 1;
}
else if(t==2&&snake.direction==0) {
return 1;
}
else if(t==1&&snake.direction==3){
return 1;
}
else if(t==3&&snake.direction==1){
return 1;
}
else
return 0;
}
void gameOver()
{
uint im;
while(1)
{
for(i=0;i<8;i++)
{
P2=0xff;
P1=0xff;
P0=X[i]|0x40;
m++;
}
for(i=0;i<8;i++)
{
P2=0xff;
P1=0xff;
P0=X[i]|0x80;
m++;
}
}
}
void createFood()
{
int i;
label:
jfood+=3;
if(jfood>=500) jfood=0;
srand(jfood);
food.position.x=((int)rand()%16);
food.position.y=((int)rand()%16);
for(i=0;i<=snake.length-1;i++){
if(snake.nodes[i].x==food.position.x&&snake.nodes[i].y==food.position.y)
goto label;
}
}
void draw()
{
uint ij;
for(j=0;j<8;j++)
{
P1=0x00;
P2=0x00;
if(food.position.x==j)
{
if(food.position.y<8) P2=Y[food.position.y];
else P1=Y[food.position.y-8];
}
for(i=0;i if(snake.nodes[i].x==j)
{
相关资源
- 贪吃蛇源代码.fla
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 贪吃蛇游戏设计(汇编语言)
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- Scratch 贪吃蛇 素材及代码
- Scratch 贪吃蛇 小游戏源码
评论
共有 条评论