⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 一个“游蛇吃豆”小游戏(用EasyARM.exe显示)
💻 C
📖 第 1 页 / 共 2 页
字号:
                 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 + -