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

📄 snake.lst

📁 2.4tft彩屏教程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 174          {
 175   1              uchar i=0;
 176   1      
 177   1              /*********************根据按键选择蛇的运动方向*******************/
 178   1              if((Key_Value==Key_Right&&Key_V_temp!=Key_Left)||(Key_Value==Key_Left&&Key_V_temp==Key_Right))
 179   1              {
C51 COMPILER V7.06   SNAKE                                                                 07/12/2010 23:49:26 PAGE 4   

 180   2                      Trun_Off_Point(Snake.X[0],Snake.Y[0]);         //先把蛇尾给熄灭掉 
 181   2      
 182   2                      for(i=0;i<Snake.Long-1;i++)                    //蛇身都是它前一段的蛇身的位置
 183   2                      {
 184   3                              Snake.X[i]=Snake.X[i+1];
 185   3                              Snake.Y[i]=Snake.Y[i+1];
 186   3                      } 
 187   2      
 188   2                      Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]+1;
 189   2                      Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]+0; //蛇头向你要求的方向移动
 190   2                      
 191   2                      for(i=0;i<Snake.Long;i++)                                   //这个让蛇显示出来的函数
 192   2                      {
 193   3                              Trun_On_Point(Snake.X[i],Snake.Y[i],0xaa);
 194   3                      }
 195   2                      Key_V_temp=Key_Right;
 196   2              }
 197   1      
 198   1              if((Key_Value==Key_Left&&Key_V_temp!=Key_Right)||(Key_Value==Key_Right&&Key_V_temp==Key_Left))
 199   1              {
 200   2      
 201   2                      Trun_Off_Point(Snake.X[0],Snake.Y[0]);             //先把蛇尾给熄灭掉 
 202   2                      
 203   2                      for(i=0;i<Snake.Long-1;i++)                     //蛇身都是它前一段的蛇身的位置
 204   2                      {
 205   3                              Snake.X[i]=Snake.X[i+1];
 206   3                              Snake.Y[i]=Snake.Y[i+1];
 207   3                      } 
 208   2                      
 209   2                      Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]-1;
 210   2                      Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]+0; //蛇头向你要求的方向移动
 211   2                      
 212   2                      for(i=0;i<Snake.Long;i++)                                   //这个让蛇显示出来的函数
 213   2                      {
 214   3                              Trun_On_Point(Snake.X[i],Snake.Y[i],0xaa);
 215   3                      }
 216   2                      Key_V_temp=Key_Left;
 217   2              }
 218   1              if(( Key_Value==Key_Up&&Key_V_temp!=Key_Down)||( Key_Value==Key_Down&&Key_V_temp==Key_Up))
 219   1              {
 220   2                      Trun_Off_Point(Snake.X[0],Snake.Y[0]);            //先把蛇尾给熄灭掉 
 221   2                      
 222   2                      for(i=0;i<Snake.Long-1;i++)                   //蛇身都是它前一段的蛇身的位置
 223   2                      {
 224   3                              Snake.X[i]=Snake.X[i+1];
 225   3                              Snake.Y[i]=Snake.Y[i+1];
 226   3                      } 
 227   2                      
 228   2                      Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]+0;
 229   2                      Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]-1; //蛇头向你要求的方向移动
 230   2                      
 231   2                      for(i=0;i<Snake.Long;i++)                                  //这个让蛇显示出来的函数
 232   2                      {
 233   3                              Trun_On_Point(Snake.X[i],Snake.Y[i],0xaa);
 234   3                      }
 235   2                      Key_V_temp=Key_Up;
 236   2              }
 237   1              if(( Key_Value==Key_Down&&Key_V_temp!=Key_Up)||( Key_Value==Key_Up&&Key_V_temp==Key_Down))
 238   1              {
 239   2                      Trun_Off_Point(Snake.X[0],Snake.Y[0]);           //先把蛇尾给熄灭掉 
 240   2                      
 241   2                      for(i=0;i<Snake.Long-1;i++)                  //蛇身都是它前一段的蛇身的位置
C51 COMPILER V7.06   SNAKE                                                                 07/12/2010 23:49:26 PAGE 5   

 242   2                      {
 243   3                              Snake.X[i]=Snake.X[i+1];
 244   3                              Snake.Y[i]=Snake.Y[i+1];
 245   3                      } 
 246   2                      
 247   2                      Snake.X[Snake.Long-1]=Snake.X[Snake.Long-2]+0;
 248   2                      Snake.Y[Snake.Long-1]=Snake.Y[Snake.Long-2]+1; //蛇头向你要求的方向移动
 249   2                      
 250   2                      for(i=0;i<Snake.Long;i++)                                  //这个让蛇显示出来的函数
 251   2                      {
 252   3                              Trun_On_Point(Snake.X[i],Snake.Y[i],0xaa);
 253   3                      }
 254   2                      Key_V_temp=Key_Down;
 255   2              }
 256   1              
 257   1      
 258   1              /****************根据按键选择蛇的运动程序结束*******************/
 259   1              /////////////////////////////////////////////////////////////////
 260   1      
 261   1              
 262   1              /************************判断蛇是否死亡***********************/
 263   1              if(Snake.X[Snake.Long-1]>=19||Snake.Y[Snake.Long-1]>=28)//判蛇头是否撞到墙壁
 264   1              {
 265   2                      Snake.Life=1;
 266   2              }
 267   1              for(i=3;i<Snake.Long;i++)//从第三节开始判断蛇头是否咬到自己
 268   1              {
 269   2                      if(Snake.X[i]==Snake.X[0]&&Snake.Y[i]==Snake.Y[0])
 270   2                      {
 271   3                              Snake.Life=1;
 272   3                      }
 273   2              }
 274   1              if(Snake.Life==1)         //if the snake over
 275   1              {
 276   2                      
 277   2                      Display_dead();
 278   2              }
 279   1              /******************判断蛇是否死亡程序结束***********************/
 280   1              /////////////////////////////////////////////////////////////////
 281   1      
 282   1      
 283   1              /************************判断蛇是否最长了**********************/
 284   1              if(Snake.Long==SNAKE_Max_Long)
 285   1              {
 286   2                      
 287   2                      Display_Pass();
 288   2              }
 289   1              /////////////////////////////////////////////////////////////////                                                                                  
 290   1      
 291   1              /*************************判蛇是否吃到食物**********************/               
 292   1              if(Snake.X[Snake.Long-1]==Food.X&&Snake.Y[Snake.Long-1]==Food.Y)//
 293   1              {
 294   2                      //Trun_Off_Point(Food.X,Food.Y);                 //消隐食物
 295   2                      Snake.Long++;//蛇节数加1
 296   2                      Snake.X[Snake.Long-1]=Food.X;
 297   2                      Snake.Y[Snake.Long-1]=Food.Y;
 298   2                      Snake.Score+=10;
 299   2                      LCDShow_uCharNumber(96,24,Snake.Score,0x00ff,0xBE5F);
 300   2                      Food.Yes=1;  //食物标志置1
 301   2              }
 302   1              /////////////////////////////////////////////////////////////////
 303   1              
C51 COMPILER V7.06   SNAKE                                                                 07/12/2010 23:49:26 PAGE 6   

 304   1      
 305   1              /***************************放果子程序*************************/
 306   1              if(Food.Yes==0)
 307   1              {
 308   2                      Trun_On_Point(Food.X,Food.Y,0xaa);
 309   2              }                                                                                          
 310   1              if(Food.Yes==1)
 311   1              {
 312   2                      while(1)
 313   2                      {
 314   3                              Food.X=((TL1&0X24)>>1);                         //获得随机数
 315   3                              Food.Y=TL1&0X1B;
 316   3      
 317   3                          for(i=0;i<Snake.Long;i++)                           //判断产生的食物坐标是否和蛇身重合
 318   3                              {
 319   4                                      if((Food.X==Snake.X[i])&&(Food.X==Snake.Y[i]))
 320   4                                              break;
 321   4                              }
 322   3                              if(i==Snake.Long)
 323   3                              {
 324   4                                      Food.Yes=0;
 325   4                                      break;                                                          //产生有效的食物坐标
 326   4                              }
 327   3                      }
 328   2              }
 329   1              /////////////////////////////////////////////////////////////////
 330   1      
 331   1      
 332   1          /**************************延时用于调整游戏速度************************/
 333   1              Delay_1mS(300-Snake.Level*50);
 334   1              /////////////////////////////////////////////////////////////////                       
 335   1      }
 336          
 337          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1195    ----
   CONSTANT SIZE    =     35    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     48       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -