欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)LCD12864鏈表實(shí)現(xiàn)貪吃蛇源碼
[打印本頁(yè)]
作者:
花生皮納特
時(shí)間:
2018-7-22 16:55
標(biāo)題:
單片機(jī)LCD12864鏈表實(shí)現(xiàn)貪吃蛇源碼
內(nèi)附LCD12864子函數(shù)
0.png
(36.81 KB, 下載次數(shù): 24)
下載附件
2018-7-23 02:24 上傳
單片機(jī)源程序如下:
#include<reg52.h>
#include<stdlib.h>
#include<lcd12864.h>
#define uchar unsigned char
#define uint unsigned int
#define Random(x) (rand()%x)
#define dgrade 11
#define igrade 15
#define up 9
#define down 13
#define left 12
#define right 14
#define passscore 50
#define N 25
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
sbit dula=P2^6;
sbit wela=P2^7;
uchar code score0[]={"score"};
uchar code speed0[]={"speed"};
uchar score = 0,speed = 5;
uchar temp,key=16;
struct Snake
{
uchar x[N];
uchar y[N];
uchar node;
uchar direction;
uchar life;
}snake;
struct Food
{
uchar x;
uchar y;
uint exist;
}food;
void delay(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
//矩陣鍵盤
void ReadKey()
{
P3 = 0xfe;
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0)
{
delay(100);
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xee:
key = 0;
break;
case 0xde:
key = 1;
break;
case 0xbe:
key = 2;
break;
case 0x7e:
key = 3;
break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp & 0xf0;
}
}
}
P3 = 0xfd;
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0)
{
delay(100);
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xed:
key = 4;
break;
case 0xdd:
key = 5;
break;
case 0xbd:
key = 6;
break;
case 0x7d:
key = 7;
break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp & 0xf0;
}
}
}
P3 = 0xfb;
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0)
{
delay(100);
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xeb:
key = 8;
break;
case 0xdb:
key = 9;
break;
case 0xbb:
key = 10;
break;
case 0x7b:
key = 11;
break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp & 0xf0;
}
}
}
P3 = 0xf7;
temp = P3;
temp = temp & 0xf0;
if(temp != 0xf0)
{
delay(100);
if(temp != 0xf0)
{
temp = P3;
switch(temp)
{
case 0xe7:
key = 12;
break;
case 0xd7:
key = 13;
break;
case 0xb7:
key = 14;
break;
case 0x77:
key = 15;
break;
}
while(temp != 0xf0)
{
temp = P3;
temp = temp & 0xf0;
}
}
}
}
void Lcd_DisNode(uchar x,uchar y,uchar color)
{
Lcd_DisRectangle(2*x,2*y,2*x+1,2*y+1,color);
}
void Timer0_Init()
{
TMOD = 0x01;
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
TR0 = 1;
ET0 = 1;
EA = 1;
}
//創(chuàng)建基本框架
void CreatBasicFrame()
{
uchar n;
for(n=0;n<128;n++)
{
Lcd_DisDot(n,0,1);
Lcd_DisDot(n,1,1);
Lcd_DisDot(n,62,1);
Lcd_DisDot(n,63,1);
}
for(n=0;n<63;n++)
{
Lcd_DisDot(0,n,1);
Lcd_DisDot(1,n,1);
Lcd_DisDot(78,n,1);
Lcd_DisDot(79,n,1);
Lcd_DisDot(126,n,1);
Lcd_DisDot(127,n,1);
}
}
//顯示成績(jī)
void DisScore()
{
uchar str[3];
str[0] = (score/10)|0x30;
str[1] = (score%10)|0x30;
str[2] = 0;
Lcd_WriteStr(5,0,score0);
Lcd_WriteStr(6,1,str);
}
//顯示速度
void DisSpeed()
{
uchar str[3];
str[0] = ' ';
str[1] = speed|0x30;
str[2] = 0;
Lcd_WriteStr(5,2,speed0);
Lcd_WriteStr(6,3,str);
}
//游戲結(jié)束
void GameOver()
{
uchar n;
Lcd_DisNode(food.x,food.y,0);
for(n=1;n<snake.node;n++)
{
Lcd_DisNode(snake.x[n],snake.y[n],0);
}
if(snake.life==1)
Lcd_WriteStr(1,1," PASS");
else
Lcd_WriteStr(1,1," LOSE");
Lcd_WriteStr(0,2," GameOver");
}
void GamePlay()
{
uchar n;
food.exist=0;
snake.life=1;
snake.direction=down;
snake.x[0]=6;snake.y[0]=6;
snake.x[1]=5;snake.y[1]=6;
snake.x[2]=4;snake.y[2]=6;
snake.node=3;
DisScore();
DisSpeed();
while(1)
{
if(food.exist==0)
{
//產(chǎn)生食物
while(1)
{
srand(TL0);
food.x=Random(30);
food.y=Random(38);
for(n=0;n<snake.node;n++)
{
if((food.x==snake.x[n])&&(food.y==snake.y[n]))
break;
}
if(n==snake.node)
{
if(food.x>0&&food.x<39&&food.y>0&&food.y<31)
food.exist=1;
break;
}
}
}
if(food.exist==1)
{
Lcd_DisNode(food.x,food.y,1);
}
for(n=snake.node-1;n>0;n--)
{
snake.x[n]=snake.x[n-1];
snake.y[n]=snake.y[n-1];
}
switch(snake.direction)
{
case down:snake.y[0]++;break;
case up:snake.y[0]--;break;
case right:snake.x[0]++;break;
case left:snake.x[0]--;break;
default:break;
}
//判斷是否死亡
for(n=3;n<snake.node;n++)
{
if(snake.x[n]==snake.x[0]&&snake.y[n]==snake.y[0])
{
GameOver();
snake.life=0;
break;
}
}
if(snake.x[0]<1||snake.x[0]>38||snake.y[0]<1||snake.y[0]>30)
{
GameOver();
snake.life=0;
}
if(snake.life==0)
break;
//判斷是否吃到食物
if(snake.x[0]==food.x&&snake.y[0]==food.y)
{
Lcd_DisNode(food.x,food.y,0);
snake.x[snake.node]=200;
snake.y[snake.node]=200;
snake.node++;
food.exist=0;
score=score+speed;
if(score>=passscore)
{
DisScore();
GameOver();
break;
}
DisScore();
}
//畫出蛇身
for(n=0;n<snake.node;n++)
{
Lcd_DisNode(snake.x[n],snake.y[n],1);
}
delay((10-speed)*300);
delay((10-speed)*300);
Lcd_DisNode(snake.x[snake.node-1],snake.y[snake.node-1],0);
switch(key)
{
case dgrade:
key=0;
if(--speed<=0)
speed=9;
DisScore();
DisSpeed();
break;
case igrade:
key=0;
if(++speed>=10)
speed=1;
DisScore();
DisSpeed();
break;
case down:
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
貪吃蛇.rar
(4.66 KB, 下載次數(shù): 48)
2018-7-22 16:54 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
怪怪愛玩
時(shí)間:
2018-7-23 11:43
這么牛的代碼沒人頂嗎,謝謝樓主
作者:
花生皮納特
時(shí)間:
2018-7-23 14:17
錯(cuò)了 是數(shù)組寫的
作者:
小小山
時(shí)間:
2018-7-28 20:55
非常好
作者:
hl26463388
時(shí)間:
2019-10-20 18:13
學(xué)習(xí)了,寫得很好,……
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1