基于STC89C52单片机贪吃蛇做法(4)

2020-02-21 15:19

if(x_bit<8) //该点位于高八位 { if(clour==0) //画点 { data_H=read_H|(1<<(7-x_bit)); //把1左移7-x_bit位 } else { data_H=read_H&~(1<<(7-x_bit)); }

data_L=read_L; } else //该点位于低八位 { data_H=read_H; if(clour==0) { data_L=read_L|(1<<(15-x_bit)); } else { data_L=read_L&~(1<<(15-x_bit)); } } Write_Cmd(0x80+y_pos); Write_Cmd(0x80+x_pos); Write_Data(data_H); //写高八位数据 Write_Data(data_L); //写低八位数据

Write_Cmd(0x30); //回到基本指令集 Write_Cmd(0x0c); }

/*------------------------------------------------------------------------------------------------------------ 在整个屏幕上画一条直线

-------------------------------------------------------------------------------------------------------------*/

void Draw_zhi(uchar X1,uchar X2,uchar Y) //X1代表线首横坐标,X2代表线尾横坐标,Y代表纵坐标 { uchar i,temp ;

if(X1>X2) //X轴上,起点大于终点,交换数据 {

temp=X2; X2=X1;

X1=temp; }

for(i=X1;i<=X2;i++) {

Draw_Point(i,Y,0); } }

/*------------------------------------------------------------------------------------------------------------ 在整个屏幕上画一条竖线

-------------------------------------------------------------------------------------------------------------*/ void Draw_shu(uchar X,uchar Y1,uchar Y2) //Y1代表线首纵坐标,Y2代表线尾纵坐标,X代表横坐标 {

uchar i ,temp;

if(Y1>Y2) //X轴上,起点大于终点,交换数据 {

temp=Y2; Y2=Y1;

Y1=temp; } for(i=Y1;i<=Y2;i++) {

Draw_Point(X,i,0); } }

/*------------------------------------------------------------------------------------------------------------ 在整个屏幕上画一条线

-------------------------------------------------------------------------------------------------------------*/ void Draw_line(uchar x0,uchar y0,uchar x1,uchar y1) //只能是横线或者是竖线,(x0,y0)为线首坐标。(x1,y1)为线尾坐标 { int dx,dy; //定义X.Y轴上增加的变量值

dx=x1-x0; //X轴方向上的增量 dy=y1-y0; //Y轴方向上的增量 if(dx==0) Draw_shu(x0,y0,y1);

if(dy==0) Draw_zhi(x0,x1,y0); }

/*------------------------------------------------------------------------------------------------------------ 画边界函数

-------------------------------------------------------------------------------------------------------------*/ void Draw_all_lines() {

uchar i;

for(i=0;i

/*------------------------------------------------------------------------------------------------------------ 开始点,蛇头

-------------------------------------------------------------------------------------------------------------*/ void Stat_Point() {

if(c[0]==0) {

a[0]=a[0]+1; //如果向右,直线长度加1 }

else if(c[0]==1) {

b[0]=b[0]+1; } else if(c[0]==2) {

a[0]=a[0]-1; } else {

b[0]=b[0]-1; }

}

/*------------------------------------------------------------------------------------------------------------ 最后点,蛇尾

-------------------------------------------------------------------------------------------------------------*/ void Last_Point() { if(c[flag-1]==0) //如果第一次拐之前,方向向右 { a[flag]=a[flag]+1; //蛇尾横坐标加1 }

else if(c[flag-1]==1) { b[flag]=b[flag]+1; }

else if(c[flag-1]==2) { a[flag]=a[flag]-1; }

else { b[flag]=b[flag]-1; }

if((a[flag]==a[flag-1])&&(b[flag]==b[flag-1])) {

flag--; } }

/*------------------------------------------------------------------------------------------------------------ 加点,如果吃到食物,就产生新的食物,并画上该点,把该点作为蛇头

-------------------------------------------------------------------------------------------------------------*/ void Add_Point() { if(c[0]==0) { if((a[0]+1)==x&&(b[0]==y)) {

a[0]=x; pointstatus=1; allpoints++; } } else if(c[0]==1) { if((b[0]+1)==y&&(a[0]==x)) { b[0]=y; pointstatus=1; allpoints++; } } else if(c[0]==2) { if((a[0]-1)==x&&(b[0]==y)) { a[0]=x; pointstatus=1; allpoints++; } } else { if((a[0])==x&&(b[0]-1)==y) { b[0]=y; pointstatus=1; allpoints++; } }

Draw_Point(x,y,0); //画上一个点,即产生食物 if(pointstatus) { beep=0; Delayms(10); beep=1; pointstatus=0;


基于STC89C52单片机贪吃蛇做法(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:萧的入门

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: