📄 main.c
字号:
if(ff[n][1]>ff[n-1][1])
{if(ff[zj][1]==ff[n][1]+1)
{
if(ff[n-1][0]>ff[n-2][0])
zj3=1;
else
zj3=2;
goto sss; //蛇头碰到蛇身改变蛇头
}
}
if(ff[n][1]<ff[n-1][1])
{if(ff[zj][1]==ff[n][1]-1)
{ if(ff[n-1][0]>ff[n-2][0])
zj3=1;
else
zj3=2;
goto sss; //蛇头碰到蛇身改变蛇头
}
}
}
}
}
} //是否碰到蛇身
{ int8 a9; //蛇头自动转向豆子
if(ff[n][1]==ff[n-1][1])
{if(ff[n][0]>ff[n-1][0])
{if(ff[n][1]>mm&&ff[n][0]>vv||ff[n][0]==vv&&ff[n][1]>mm)
{
a9=kk(ff[n][0],ff[n][1]-1);
if(a9)
zj3=4;
}
if(ff[n][1]<mm&&ff[n][0]>vv||ff[n][0]==vv&&ff[n][1]<mm)
{
a9=kk(ff[n][0],ff[n][1]+1);
if(a9)
zj3=3;
}
}
else
{if(ff[n][1]>mm&&ff[n][0]<vv||ff[n][0]==vv&&ff[n][1]>mm)
{
a9=kk(ff[n][0],ff[n][1]-1);
if(a9)
zj3=4;
}
if(ff[n][1]<mm&&ff[n][0]<vv||ff[n][0]==vv&&ff[n][1]<mm)
{
a9=kk(ff[n][0],ff[n][1]+1);
if(a9)
zj3=3;
}
}
}
if(ff[n][0]==ff[n-1][0])
{if(ff[n][1]>ff[n-1][1])
{if(ff[n][0]>vv&&ff[n][1]>mm||ff[n][1]==mm&&ff[n][0]>vv)
{
a9=kk(ff[n][0]-1,ff[n][1]);
if(a9)
zj3=2;
}
if(ff[n][0]<vv&&ff[n][1]>mm||ff[n][1]==mm&&ff[n][0]<vv)
{
a9=kk(ff[n][0]+1,ff[n][1]);
if(a9)
zj3=1;
}
}
else
{if(ff[n][0]>vv&&ff[n][1]<mm||ff[n][1]==mm&&ff[n][0]>vv)
{
a9=kk(ff[n][0]-1,ff[n][1]);
if(a9)
zj3=2;
}
if(ff[n][0]<vv&&ff[n][1]<mm||ff[n][1]==mm&&ff[n][0]<vv)
{
a9=kk(ff[n][0]+1,ff[n][1]);
if(a9)
zj3=1;
}
}
} //蛇头自动转向豆子
}
if(ff[n][0]==ff[n-1][0]&&vv==ff[n][0]) //豆子在蛇头后处理
{
if(!(ff[n-1][1]>ff[n][1])==(ff[n-1][1]>mm))
{ if((ff[n][0]-1)!=0)
zj3=2;
else
zj3=1;
}
}
if(ff[n][1]==ff[n-1][1]&&mm==ff[n][1])
{
if(!(ff[n-1][0]>ff[n][0])==(ff[n-1][0]>vv))
{if((ff[n][1]-1)!=0)
zj3=4;
else
zj3=3;
} //豆子在蛇头后处理
}
}
sss:switch(zj3) //改变蛇身处理
{ case 1:
if(ff[n][0]==ff[n-1][0])
{
n++;
z=0;
ff[n][0]=ff[n-1][0]+1;
ff[n][1]=ff[n-1][1];
}
break;
case 2:
if(ff[n][0]==ff[n-1][0])
{n++;
z=0;
ff[n][0]=ff[n-1][0]-1;
ff[n][1]=ff[n-1][1];
}
break;
case 3:
if(ff[n][1]==ff[n-1][1])
{n++;
z=0;
ff[n][0]=ff[n-1][0];
ff[n][1]=ff[n-1][1]+1;
}
break;
case 4:
if(ff[n][1]==ff[n-1][1])
{n++;
z=0;
ff[n][0]=ff[n-1][0];
ff[n][1]=ff[n-1][1]-1;
}
break;
}
zj3=0; //改变蛇身处理
zj1=ff[n][0]; //蛇身自动前进
zj2=ff[n][1];
if(z)
{
if(ff[n][0]==ff[n-1][0])
{if(ff[n][1]<ff[n-1][1])
ff[n][1]--;
if(ff[n][1]>ff[n-1][1])
ff[n][1]++;
}
if(ff[n][1]==ff[n-1][1])
{if(ff[n][0]<ff[n-1][0])
ff[n][0]--;
if(ff[n][0]>ff[n-1][0])
ff[n][0]++;
}
}
z=1;
if(ff[0][0]==ff[1][0]&&s5)
{
if(ff[0][1]<ff[1][1])
ff[0][1]++;
if(ff[0][1]>ff[1][1])
ff[0][1]--;
}
if(ff[0][1]==ff[1][1]&&s5)
{
if(ff[0][0]<ff[1][0])
ff[0][0]++;
if(ff[0][0]>ff[1][0])
ff[0][0]--;
}
s5=1;
if(ff[0][0]==ff[1][0]&&ff[0][1]==ff[1][1])
{uint8 g;
for(g=0;g!=n;g++)
{ff[g][0]=ff[g+1][0];
ff[g][1]=ff[g+1][1];
}
n--;
} //蛇身自动前进
if(n!=1) //检测是否碰到尾
{for(zj=n-1;zj!=0;zj--)
{ if(ff[zj][0]==ff[zj-1][0])
{
if(!(ff[zj][1]>ff[n][1])==(ff[zj-1][1]>ff[n][1]))
{if(ff[zj][0]==ff[n][0])
{
OSSemPend(sem7,0,&err);
ff[n][0]=zj1;
ff[n][1]=zj2;
snack(ff,n,21);
err=OSSemPost(sem7);
k1=1;
err=OSTaskSuspend (4); //碰到尾停止
}
}
}
if(ff[zj][1]==ff[zj-1][1])
{
if(!(ff[zj][0]>ff[n][0])==(ff[zj-1][0]>ff[n][0]))
{if(ff[zj][1]==ff[n][1])
{
OSSemPend(sem7,0,&err);
ff[n][0]=zj1;
ff[n][1]=zj2;
snack(ff,n,21);
err=OSSemPost(sem7);
k1=1;
err=OSTaskSuspend (4); //碰到尾停止
}
}
}
}
} //检测是否碰到尾
if(ff[n][0]>39||ff[n][1]>24||ff[n][0]<0||ff[n][1]<0) //检测是否碰到壁
{
OSSemPend(sem7,0,&err);
ff[n][0]=zj1;
ff[n][1]=zj2;
snack(ff,n,21);
err=OSSemPost(sem7);
k1=1;
err=OSTaskSuspend (4);
}
OSSemPend(sem7,0,&err);
snack1(ff,n,0x21);
err=OSSemPost(sem7); //检测是否碰到壁
OSTimeDly(100);
}
}
/*
********************************************************************************************************
** Task3 任务
** 产生随机豆子任务
********************************************************************************************************
*/
void Task3(void *pdata)
{uint8 err;
uint8 xx=1,zj,ut=0;
char str6[3]={' ',' ',0};
pdata=pdata;
for(;;)
{
loop2: if(xx&&rrr(0,39))
{xx=0;
vv=je;
}
if(!xx&&rrr(0,39))
{if(rrr1(0,24))
{xx=1;
mm=je1;
ut=1;
}
}
if(ut) //是否豆子在蛇身
{ for(zj=n;zj!=0;zj--)
{ if(ff[zj][0]==ff[zj-1][0])
{if(ff[zj][1]>ff[zj-1][1])
{if(ff[zj][1]>=mm&&ff[zj-1][1]<=mm)
{if(ff[zj][0]==vv)
{ut=0;
goto loop2;
}
}
}
else
{if(ff[zj][1]<=mm&&ff[zj-1][1]>=mm)
{if(ff[zj][0]==vv)
{ut=0;
goto loop2;
}
}
}
}
if(ff[zj][1]==ff[zj-1][1])
{if(ff[zj][0]>ff[zj-1][0])
{if(ff[zj][0]>=vv&&ff[zj-1][0]<=vv)
{if(ff[zj][1]==mm)
{ut=0;
goto loop2;
}
}
}
else
{if(ff[zj][0]<=vv&&ff[zj-1][0]>=vv)
{if(ff[zj][1]==mm)
{ut=0;
goto loop2;
}
}
}
}
}
} //是否豆子在蛇身
loop3: if(ut)
{ut=0;
OSSemPend(sem7,0,&err);
ISendStr ((vv)*2, mm, 21,str6); //产生豆子
err=OSSemPost(sem7);
OSSemPend(pd0,0,&err);
pdata=pdata;
}
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -