贪吃蛇(51单片机程序)

#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^0;
sbit rw=P2^1;
sbit cs1=P2^2;
sbit cs2=P2^3;
sbit dirup=P3^0;
sbit dirdown=P3^1;
sbit dirleft=P3^2;
sbit dirright=P3^3;
uint second=0;
uchar flag=4;
uchar count=0,second0=0,second1=0,second2=0,speed=0;
bit start,flag1,flag2=0;//重新写食物
uchar scale=2;
char length[60]={3,0,3,1};
#define rwcom XBYTE[0x0400]
#define rwdat XBYTE[0x0500]
#define rrcom XBYTE[0x0600]
#define rrdat XBYTE[0x0700]
#define lwcom XBYTE[0x0800]
#define lwdat XBYTE[0x0900]
#define lrcom XBYTE[0x0a00]
#define lrdat XBYTE[0X0b00]
uchar code time[]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};
/*********time********************/
uchar code tan[]={0x20,0x20,0x10,0x90,0xA8,0xA4,0xAA,0xB1,0xA2,0xE4,0xA8,0x88,0x10,0x30,0x10,0x00,
0x00,0x00,0x80,0x9F,0x40,0x20,0x10,0x0E,0x10,0x20,0x60,0xDF,0x00,0x00,0x00,0x00,};
/******贪******/
uchar code chi[]={0x00,0xFC,0x04,0x04,0xFC,0x20,0x58,0x4F,0x4A,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,
0x00,0x0F,0x02,0x02,0x07,0x00,0x30,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0x70,0x00,};
/******吃**************/
uchar code she[]={0x00,0xF0,0x10,0xFF,0x10,0xF0,0x20,0x18,0xE8,0x09,0x0E,0x0A,0xA8,0x18,0x08,0x00,
0x20,0x23,0x21,0x1F,0x11,0x3B,0x10,0x00,0x3F,0x42,0x41,0x41,0x40,0x38,0x00,0x00,};
/*******蛇**********************/
uchar code game[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0

0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xF0,0xFC,0xFE,0x07,0x03,0x01,0x01,0x03,0x0F,0x3E,0x38,0x00,0x00,0x00,
0x00,0x00,0xF0,0xFE,0x1F,0x1F,0xFE,0xF0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x7F,
0xF8,0x00,0x00,0xC0,0xFE,0x3F,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x83,0x83,0x83,
0x83,0x83,0x83,0x83,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0xFE,0x0F,0x03,0x01,0x01,0x03,0x03,0x3F,0xFE,0xF8,
0x00,0x00,0x0F,0x7F,0xFC,0xC0,0x00,0x00,0x00,0xC0,0xF8,0x7F,0x0F,0x01,0x00,0x00,
0xFF,0xFF,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x03,0x00,0x00,0x00,0xFF,0xFF,0x03,
0x03,0x03,0x03,0x83,0x87,0xFF,0xFE,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0x7F,0xFF,0xC0,0x80,0x80,0x83,0x83,0xC3,0xFF,0xFF,0x00,0x00,0x80,
0xF8,0xFF,0x0F,0x0D,0x0C,0x0C,0x0D,0x0F,0xFF,0xF8,0x80,0x00,0x00,0xFF,0xFF,0x00,
0x0F,0xFF,0xF8,0xFF,0x07,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x81,0x81,0x81,
0x81,0x81,0x81,0x81,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xE0,0x80,0x80,0x80,0x80,0xC0,0xFC,0x7F,0x1F,
0x00,0x00,0x00,0x00,0x03,0x3F,0xFE,0xE0,0xFC,0x3F,0x07,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x00,0x00,0xFF,0xFF,0x03,
0x03,0x03,0x07,0x1F,0x7D,0xF1,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x00,
0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0

x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
/*********GAME OVER**********/
uchar code snake[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xD0,0xE0,0xE8,0x78,
0x50,0x80,0xAC,0xE4,0xE4,0xC4,0x84,0xA0,0xA0,0xA0,0x20,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x10,0x00,0x08,0x00,0x04,
0x04,0x00,0x00,0x02,0x02,0x02,0x00,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,
0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x02,0x02,
0x02,0x06,0x06,0x04,0x04,0x0C,0x08,0x18,0x18,0x18,0x30,0x70,0xE0,0xE0,0xC0,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7C,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00

,0x00,0x00,0x00,0x00,0x00,0x06,
0x04,0x06,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x04,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
0x40,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xFF,0xFF,
0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x20,
0x00,0x40,0x00,0x80,0x00,0x01,0x03,0x02,0x02,0x02,0x02,0x0C,0x18,0x10,0x10,0x0C,
0x04,0x04,0x04,0x04,0x14,0xEC,0x84,0x04,0x04,0x04,0x04,0x34,0xCC,0x0C,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x18,0x10,0x12,0x0E,0x06,0x02,0x82,
0x80,0xC1,0xC0,0x60,0x60,0x30,0x30,0x18,0x18,0x18,0x0C,0x0E,0x0F,0x07,0x03,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x40,0x00,0xA0,0xE0,
0xE0,0xC0,0xE0,0xE1,0xF2,0xF4,0xF8,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC0,0x20,0x20,0x02,0x13,0x12,0x10,0x10,0x01,0x02,0x02,0x01,0x00,0x00,0x00,
0x00,0x00,0x10,0x10,0x00,0x20,0x20,0xC0,0xC0,0x00,0x00,0x00,0x04,0x3E,0xFF,0xFF,
0xE3,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x21,0x21,0x40,0x00,0x80,0x80,0x00,0x01,0x01,
0x03,0x03,0x03,0x03,0x03,0x03,0x07,0x81,0x81,0x80,0x00,0x00,0x40,0x20,0x00,0x08,
0x4E,0x41,0x02,0x02,0x02,0x02,0x10,0x10,0x10,0x10,0x90,0x10,0x10,0x10,0x10,0x10,
0x12,0x02,0x42,0x42,0x42,0x8A,0x48,0x3B,0x3B,0x8C,0x80,0xC0,0xC0,0xF0,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFE,0xFA,0xFC,0xF8,0xF8,0xF0,0xC0,0x80,0x80,0x90,0xD0,0xD0,
0xC0,0xC8,0xC8,0xE0,0xE4,0xF0,0x7E,0x7E,0x7E,0x2E,0x1E,0x0E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x42,0x42,0x81,0x81,0x80,0x00,0x01,0x01,0x01,
0x01,0x01,0x03,0x03,0x02,0x03,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x02,
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,
0x02,0x02,0x00,0x01,0x80,0x81,0xC1,0xC1,0xC1,0xC1,0xE0,0xF9,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x7F,0x7F,0x3F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x07,0x03,0x07,0x07,
0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,
0x02,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x0D,0x0C,0x0C,0x0C,0x0C,0x0C,
0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0E,0x0E,0x0E,0x0E,
0x0E,0x0E,0x0F,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x03,0x03,0x03,0x01,
0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
/**************蛇**************************/
uchar code bmp[]={0x00,0x00,0x00,0x00,0x80,0x00,0x18,0x30,0x80,0x80,0x80,0x7E,0x00,0x40,0x00,0xF0,
0x10,0x10,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF0,0x00,0x00,
0x00,0xFC,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xF0,0x80,
0x00,0x48,0x48,0xC8,0x6C,0x1C,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x88,0x98,0x80,0x80,0x00,0x40,0xB0,0x2C,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x18,0x40,0x40,0x4C,0x48,0x40,0x60,0x4E,
0x06,0xA0,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0xE0,0x18,0x80,0xE0,0x20,
0x20,0x2C,0x88,0x80,0x10,0x70,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC1,0xE1,0x18,0x00,0x38,0x20,0x27,0x24,0x3C,0x84,0x70,0x1F,
0x09,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x80,0xC0,0x43,0x21,0x21,0xFF,0x00,0x00,
0x00,0x7F,0x82,0x81,0x81,0x80,0x80,0xF0,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x80,
0x88,0x40,0x04,0x07,0x0E,0x32,0xE2,0x82,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x80,
0x41,0x31,0x19,0x87,0x84,0x7C,0x00,0x10,0x14,0xD3,0x7A,0x3C,0xC1,0x89,0x08,0x08,
0x00,0x00,0x00,0x00,0x02,0x23,0x20,0x20,0x20,0x22,0x22,0x10,0x39,0xF7,0x13,0x10,
0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x02,0x07,0x80,0x48,0x31,
0x11,0x05,0xFC,0x04,0x06,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x01,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x02,0x07,0x07,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x01,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,
0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x0F,0x03,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0

0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x80,
0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0xC0,
0x40,0x40,0xC0,0x80,0x00,0x00,0x00,0x40,0xC0,0x40,0x40,0xC0,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0xC0,
0x40,0x40,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x81,
0xFE,0x00,0x00,0x00,0x03,0x00,0x80,0xC0,0x3B,0x0F,0x00,0x00,0x00,0x00,0x03,0x00,
0x80,0xC0,0x39,0x0F,0x00,0x00,0x00,0x00,0xFF,0x71,0x00,0x70,0xDF,0x0F,0x00,0x00,
0x00,0x00,0x00,0xE0,0x06,0x4F,0xFC,0xC0,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x08,0x08,0x07,
0x01,0x00,0x00,0x00,0x04,0x0E,0x05,0x04,0x0C,0x0C,0x00,0x00,0x00,0x00,0x0C,0x06,
0x05,0x0C,0x04,0x04,0x00,0x00,0x00,0x08,0x0F,0x06,0x00,0x00,0x03,0x06,0x0C,0x00,
0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x08,0x0F,
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/******************作者**************************/
void busy(uchar right)
{ uchar temp;
do
{
if(right) temp=rrcom;
else temp=lrcom;
}
while(temp&0x80);
}
void delayms(uint x)
{
x=x*125;
while(x--);
}
uchar readdat(uchar right)
{ uchar dat;
busy(right);
if(right)
{
rrdat=0xff;
dat=rrdat;
}
else
{
lrdat=0xff;
dat=lrdat;
}
return(dat);
}
void writecom(uchar right,uchar com)
{ busy(right);
if(right)
rwcom=com;
else
lwcom=com;
}
void writedat(uchar right,uchar dat)
{
busy(right);
if(right)
rwdat=dat;
else
lwdat=dat;
}
void ini12864()
{
writecom(0,0x3f);
writecom(0,0xc0);
writecom(0,0xb8);
writecom(0,0x40);
writecom(1,0x3f);
writecom(1,0xc0);
writecom(1,0xb8);
writecom(1,0x40);
}
void clr()
{
uchar i,j;
for(i=0;i<8;i++)
{
writecom(0,0xb8+i);
writecom(1,0xb8+i);
writecom(0,0x40);
writecom(1,0x40);
for(j=0;j<64;j++)
{
writedat(0,0);
writedat(1,0);
}
}
}
void writetime(uchar page,uchar line,uchar *time,uchar ti)
{
uchar i,j;
if(line<=63)
{ for(i=0;i<2;i++)
{
writecom(0,0xb8+page+i);
writecom(0,0x40+line);
for(j=ti*16;jwritedat(0,time[i*8+j]);
}
}
else
{
for(i=0;i<2;i++)
{
writecom(1,0xb8+page+i);
writecom(1,0x40+line-64);
for(j=ti*16;jwritedat(1,time[i*8+j]);
}
}
}
/*void writechar(uchar page,uchar line,uchar *cha)
{
uchar i,j;
if(line<=63)
{ for(i=0;i<2;i++)
{
writecom(0,0xb8+page+i);
writecom(0,0x40+line);
for(j=0;j<8;j++)
writedat(0,*(cha+i*8+j));
}
}
else
{
for(i=0;i<2;i++)
{
writecom(1,0xb8+page+i);
writecom(1,0x40+line-64);
for(j=0;j<8;j++)
writedat(1,*(cha+i*8+j));
}
}
}*/
void writeword(uchar page,uchar line,uchar *word)
{
uchar i,j;
if(line<=63)
{ for(i=0;i<2;i++)
{
writecom(0,0xb8+page+i);
writecom(0,0x40+line);
for(j=0;j<16;j++)
writedat(0,*(word+i*16+j));
}
}
else
{
for(i=0;i<2;i++)
{
writecom(1,0xb8+page+i);
writecom(1,0x40+line-64);
for(j=0;j<16;j++)
writedat(1,*(word+i*16+j));
}
}
}
void picture(uchar *bmp)
{
uchar i,j;
for(i=0;i<8;i++)
{
writecom(0,0xb8+i);
writecom(1,0xb8+i);
writecom(0,0x40);
writecom(1,0x40);
for(j=0;j<64;j++)
{
writedat(0,*(bmp+i*128+j));
writedat(1,*(bmp+i*128+j+64));
}
}
}
void view()
{
picture(bmp);
delayms(1000);
clr();
delayms(1000);
picture(bmp);
delayms(1000);
clr();
}
void clock()
{
second2=second/100;
second1=second%100/10;
second0=second%10;
writetime(3,24,time,second2);
writetime(3,32,time,second1);
writetime(3,40,time,second0);
}
void board()
{ if(scale<=9)
{ writetime(6,0,time,0);
writetime(6,8,time,scale);
}
else
{
writetime(6,0,time,scale/10);
writetime(6,8,time,scale%10);
}
}
void dot(uchar x,uchar y)
{

uchar dat;
if(y<=63)
{ writecom(0,0xb8+x/8);
writecom(0,0x40+y);
dat=readdat(0);
writecom(0,0xb8+x/8);
writecom(0,0x40+y);
writedat(0,(1<}
else
{ writecom(1,0xb8+x/8);
writecom(1,0x40+y-64);
dat=readdat(1);
writecom(1,0xb8+x/8);
writecom(1,0x40+y-64);
writedat(1,(1<
}
}
void clrdot(uchar x,uchar y)
{ uchar dat;
if(y<=63)
{ writecom(0,0xb8+x/8);
writecom(0,0x40+y);
dat=readdat(0);
writecom(0,0xb8+x/8);
writecom(0,0x40+y);
writedat(0,~(1<}
else
{ writecom(1,0xb8+x/8);
writecom(1,0x40+y-64);
dat=readdat(1);
writecom(1,0xb8+x/8);
writecom(1,0x40+y-64);
writedat(1,~(1<
}
}
void gather(uchar x,uchar y)
{ uchar i,j,k;
if(x<((62-1-1)/4)&&y<((127-58-1)/4))//x<15,y<17
{
i=x*4;
j=y*4;
for(k=0;k<4;k++)
{
dot(2+i+k,59+j);
dot(2+i+k,59+j+3);
}
dot(2+i,59+j+1);
dot(2+i+2,59+j+1);
dot(2+i+3,59+j+1);
dot(2+i,59+j+2);
dot(2+i+1,59+j+2);
dot(2+i+3,59+j+2);
}
}
void clrgather(uchar x,uchar y)
{
uchar i,j,k;
i=x*4;
j=y*4;
for(k=0;k<4;k++)
{
clrdot(2+i+k,59+j);
clrdot(2+i+k,59+j+3);
clrdot(2+i+k,59+j+1);
clrdot(2+i+k,59+j+2);
}
}
void main()
{ uchar food[2]={7,8};
uchar i,j,x,y,test1=0,test2=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ini12864();
clr();
view();
writeword(0,0,tan);
writeword(2,0,chi);
writeword(4,0,she);
for(i=1;i<63;i++)
{
dot(i,58);
dot(i,127);
}
for(j=58;j<128;j++)
{
dot(1,j);
dot(62,j);
}
gather(food[0],food[1]);
gather(length[0],length[1]);
gather(length[2],length[3]);
do
{
clock();
board();
x=length[0];
y=length[1];//每次蛇身移动都把它的尾巴拿出来,但是当蛇移动后,又要砍掉它
if(flag==1||flag==2)//要单独写,不能把它写在下面的switch里面,有反应延迟的现象
{
if(dirright==0)
{ delayms(10);
if(dirright==0)
flag=4;
while(dirright==0);
delayms(10);
while(dirright==0);
}
if(dirleft==0)
{ delayms(10);
if(dirleft==0)
flag=3;
while(dirleft==0);
delayms(10);
while(dirleft==0);
}
}
if(flag==3||flag==4)
{
if(dirup==0)
{ delayms(10);
if(dirup==0)
flag=1;
while(dirup==0);
delayms(10);
while(dirup==0);
}
if(dirdown==0)
{ delayms(10);
if(dirdown==0)
flag=2;
while(dirdown==0);
delayms(10);
while(dirdown==0);
}
}
if(start)
{ start=0;
switch(flag)
{ case 1:
{ for(i=0;i{
length[i*2]=length[i*2+2];
length[i*2+1]=length[i*2+3];
}
length[scale*2-2]--;
// if(length[scale*2-2]==0)
// test1=+1;
};break;
case 2:
{ for(i=0;i{
length[i*2]=length[i*2+2];
length[i*2+1]=length[i*2+3];
}
length[sca

le*2-2]++;
};break;
case 3:
{ for(i=0;i{
length[i*2]=length[i*2+2];
length[i*2+1]=length[i*2+3];
}
length[scale*2-1]--;
// if(length[scale*2-1]==0)
// test2+=1;
};break;
case 4:
{ for(i=0;i{
length[i*2]=length[i*2+2];
length[i*2+1]=length[i*2+3];
}
length[scale*2-1]++;
};break;
default:break;
}
if((length[scale*2-2]==food[0])&&(length[scale*2-1]==food[1]))//如果吃到食物,要放到移动函数也就是switch的后面

{
for(i=scale;i>0;i--)
{
length[i*2]=length[i*2-2];
length[i*2+1]=length[i*2-1];
}
length[0]=x;
length[1]=y;
scale++;
do
{
flag1=0;
food[0]=TH0%15;
food[1]=TL0%17;//使之能够在蛇的活动范围内
for(i=0;i{
if((length[i*2]==food[0])&&(length[i*2+1]==food[1]))//
//如果食物放在蛇身上面就重放
{ flag1=1;
break;
}
}
}
while(flag1);
gather(food[0],food[1]);//不需要消去食物,因为食物的数组的数据就两个
}
clrgather(x,y);//点移动过程中清除前一个点,用新一个点来代替,砍掉尾巴
//每次蛇身移动,按照程序的执行,后面的尾巴都会显示(如果其长度为2,移动一次,长度变成3,所以每次
//都需要砍一次尾巴)
for(i=0;i{
gather(length[i*2],length[i*2+1]);
}
if(length[scale*2-1]==17||length[scale*2-2]==15||length[scale*2-1]<0||length[scale*2-2]<0)
flag2=1;//如果在蛇身移动程序里面写就会出现问题
for(i=scale;i>0;i--)
{
if(length[scale*2-2]==length[(i-1)*2-2]&&length[scale*2-1]==length[(i-1)*2-1])
flag2=1;
}
}
}while(!flag2);
clr();
delayms(500);
picture(game);
delayms(1000);
delayms(1000);
picture(snake);
while(1);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==15)
{ count=0;
second++;
if(second==1000)
second=0;
}
speed++;
if(speed==30/scale)
{ speed=0;
start=1;
}

}

相关文档
最新文档