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

📄 snake.lst

📁 键盘控制游戏液竟晶12864的,通过一般的控制新片就可以实现!供大家参考
💻 LST
📖 第 1 页 / 共 3 页
字号:
 352   4                                      KeyCoding[k]|= 0x80;
 353   4                              while(P3_2==1);         //等待高电平结束
 354   4                      }
 355   3              }
 356   2              //比较地址码和地址反码,不同解码错误退出
 357   2              if (KeyCoding[0]!=~KeyCoding[1]&&KeyCoding[2]!=~KeyCoding[3])
 358   2              { 
 359   3                      EA = 1; //开外中断
 360   3                      return;
 361   3              }
 362   2        }
 363   1        //按键判断也可以放到这里
 364   1        Sound();      //解码成功声音提示.
 365   1        EA = 1;       //开外中断
C51 COMPILER V8.08   SNAKE                                                                 06/20/2007 12:20:21 PAGE 7   

 366   1      }
 367          /*---------------------------------------------------------
 368          函数:Timer0()
 369          说明:定时器0溢出中断
 370          ---------------------------------------------------------*/
 371          Timer0() interrupt 1
 372          {
 373   1        uchar head,i;
 374   1        TH0  = 0xB1; //定时10mS
 375   1        TL0  = 0xE0;
 376   1        counter++; //计数器加1
 377   1        if (counter ==50)     //50*10mS(0.5秒)执行一次
 378   1        {
 379   2              counter = 0;  //计数器清0
 380   2              if (SnakeLong<20)
 381   2              {
 382   3                      PlacedFood(); //放置食物
 383   3                      head = SnakeCoor();//读取蛇头当前位置
 384   3                      switch (MoveDirection)//判断蛇的移动方向
 385   3                      {//在移动时不能向相反的方向移动.
 386   4                              case 1: //向上移动-16
 387   4                                      if (Map[head-16]==0) //蛇头前面是空
 388   4                                      {
 389   5                                              Map[head-16] = 4;//蛇头新位置
 390   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 391   5                                              for (i=SnakeLong;i>0;i--)
 392   5                                              { 
 393   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 394   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 395   6                                              }
 396   5                                              Snake[0] = head-16;//存蛇头新位置
 397   5                                      }
 398   4                                      else if (Map[head-16]==2)//蛇头前面是食物
 399   4                                      {
 400   5                                              FoodFlag  = 0;//食物标志位清0
 401   5                                              SnakeLong +=1;  
 402   5                                              Map[head-16] = 4;//蛇头新位置
 403   5                                              for (i=SnakeLong;i>0;i--)
 404   5                                              { 
 405   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 406   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 407   6                                              }
 408   5                                              Snake[0] = head-16;//存蛇头新位置
 409   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 410   5                                      }
 411   4                                      else if (Map[head-16]==1||Map[head-16]==3)//蛇头前面是墙和蛇身
 412   4                                      {
 413   5                                              GameOver = 1;//游戏结束
 414   5                                      }
 415   4                                      break;
 416   4                              case 2: //向下移动+16
 417   4                                      if (Map[head+16]==0) //蛇头前面是空
 418   4                                      {
 419   5                                              Map[head+16] = 4;//蛇头新位置
 420   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 421   5                                              for (i=SnakeLong;i>0;i--)
 422   5                                              { 
 423   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 424   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 425   6                                              }
 426   5                                              Snake[0] = head+16;//存蛇头新位置
 427   5                                      }
C51 COMPILER V8.08   SNAKE                                                                 06/20/2007 12:20:21 PAGE 8   

 428   4                                      else if (Map[head+16]==2)//蛇头前面是食物
 429   4                                      {
 430   5                                              FoodFlag  = 0;//食物标志位清0
 431   5                                              SnakeLong +=1;  
 432   5                                              Map[head+16] = 4;//蛇头新位置
 433   5                                              for (i=SnakeLong;i>0;i--)
 434   5                                              { 
 435   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 436   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 437   6                                              }
 438   5                                              Snake[0] = head+16;//存蛇头新位置
 439   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 440   5                                      }
 441   4                                      else if (Map[head+16]==1||Map[head+16]==3)//蛇头前面是墙和蛇身
 442   4                                      {
 443   5                                              GameOver = 1;//游戏结束
 444   5                                      }
 445   4                                      break;
 446   4                              case 3: //向左移动-1
 447   4                                      if (Map[head-1]==0) //蛇头前面是空
 448   4                                      {
 449   5                                              Map[head-1] = 4;//蛇头新位置
 450   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 451   5                                              for (i=SnakeLong;i>0;i--)
 452   5                                              { 
 453   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 454   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 455   6                                              }
 456   5                                              Snake[0] = head-1;//存蛇头新位置
 457   5                                      }
 458   4                                      else if (Map[head-1]==2)//蛇头前面是食物
 459   4                                      {
 460   5                                              FoodFlag  = 0;//食物标志位清0
 461   5                                              SnakeLong +=1;  
 462   5                                              Map[head-1] = 4;//蛇头新位置
 463   5                                              for (i=SnakeLong;i>0;i--)
 464   5                                              { 
 465   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 466   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 467   6                                              }
 468   5                                              Snake[0] = head-1;//存蛇头新位置
 469   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 470   5                                      }
 471   4                                      else if (Map[head-1]==1||Map[head-1]==3)//蛇头前面是墙和蛇身
 472   4                                      {
 473   5                                              GameOver = 1;//游戏结束
 474   5                                      }
 475   4                                      break;
 476   4                              case 4: //向右移动+1
 477   4                                      if (Map[head+1]==0) //蛇头前面是空
 478   4                                      {
 479   5                                              Map[head+1] = 4;//蛇头新位置
 480   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 481   5                                              for (i=SnakeLong;i>0;i--)
 482   5                                              { 
 483   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 484   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 485   6                                              }
 486   5                                              Snake[0] = head+1;//存蛇头新位置
 487   5                                      }
 488   4                                      else if (Map[head+1]==2)//蛇头前面是食物
 489   4                                      {
C51 COMPILER V8.08   SNAKE                                                                 06/20/2007 12:20:21 PAGE 9   

 490   5                                              FoodFlag  = 0;//食物标志位清0
 491   5                                              SnakeLong +=1;  
 492   5                                              Map[head+1] = 4;//蛇头新位置
 493   5                                              for (i=SnakeLong;i>0;i--)
 494   5                                              { 
 495   6                                                      Snake[i]=Snake[i-1];//将(蛇身长度-1)的坐标给蛇尾
 496   6                                                      Map[Snake[i-1]]=3;//刷新地图上的蛇身
 497   6                                              }
 498   5                                              Snake[0] = head+1;//存蛇头新位置
 499   5                                              Map[Snake[SnakeLong]]=0;//将蛇尾清0
 500   5                                      }
 501   4                                      else if (Map[head+1]==1||Map[head+1]==3)//蛇头前面是墙和蛇身
 502   4                                      {
 503   5                                      GameOver = 1;//游戏结束
 504   5                                      }
 505   4                                      break;
 506   4                      }
 507   3                      MapCreate(); //生成地图
 508   3                      GameDisplay(GDRAM);//地图刷新显示
 509   3              }
 510   2              else//SnakeLong >=20 就过关
 511   2              {
 512   3                       TR0=0;
 513   3              }
 514   2        }
 515   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1857    ----
   CONSTANT SIZE    =    424    ----
   XDATA SIZE       =   1177    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      8    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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