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

📄 russia.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 293   2                      sum=0;
 294   2                      for(j=1;j<11;j++)    
 295   2                      {
 296   3                              sum+=gamespace[i][j];
 297   3                      }
C51 COMPILER V7.06   RUSSIA                                                                10/17/2006 15:30:07 PAGE 6   

 298   2                      if(sum==10)        //发现第i行为满行
 299   2                      {
 300   3                          for(k=i;k>0;k--)      //删除,i行之上下移
 301   3                          {
 302   4                                      for(j=1;j<11;j++)
 303   4                                      {
 304   5                                              gamespace[k][j]=gamespace[k-1][j];
 305   5                                      }
 306   4                              }
 307   3                              for(j=1;j<11;j++)     //最高行补零
 308   3                              {
 309   4                                      gamespace[0][j]=0;
 310   4                              }
 311   3                              score++;               //得分
 312   3                              flag=1;                //返回1
 313   3                      }
 314   2              }
 315   1              return(flag);
 316   1      }
 317          
 318          
 319          
 320          /*******************绘图函数*************/
 321          
 322          void DrawWinPicture()
 323          {   
 324   1          int i,j;
 325   1              CS=0;
 326   1              CmdWrite(CSRDIR_RIGHT);
 327   1              for(i=0;i<240;i++){
 328   2                          Locatexy(0,i);
 329   2                      CmdWrite(MWRITE);
 330   2                              for(j=0;j<40;j++)
 331   2                              { 
 332   3      //                         DataWrite(WinBitmapDot[i*40+j]); 
 333   3                              }
 334   2          }
 335   1          CS=1;
 336   1      }
 337          
 338          void DrawBeginPicture()
 339          {   
 340   1          int i,j;
 341   1              CS=0;
 342   1              CmdWrite(CSRDIR_RIGHT);
 343   1              for(i=0;i<240;i++){
 344   2                          Locatexy(0,i);
 345   2                      CmdWrite(MWRITE);
 346   2                              for(j=0;j<40;j++)
 347   2                              { 
 348   3      //                         DataWrite(BeginBitmapDot[i*40+j]); 
 349   3                              }
 350   2          }
 351   1          CS=1;
 352   1      }
 353          
 354          
 355          /****************画主窗口方块****************/
 356          
 357          void DrawBlockMain(unsigned char  x,unsigned char  y)
 358          {   
 359   1          int i;
C51 COMPILER V7.06   RUSSIA                                                                10/17/2006 15:30:07 PAGE 7   

 360   1          CS=0;
 361   1          Locatexy(y+5,8+x*8);        
 362   1          if(gamespace[x][y]==1){
 363   2               CmdWrite(CSRDIR_DOWN); 
 364   2                       CmdWrite( MWRITE ); 
 365   2                   for(i=0;i<8;i++)
 366   2                              { 
 367   3                                  DataWrite(0xFF);
 368   3                              }
 369   2          }
 370   1              else{
 371   2                       CmdWrite(CSRDIR_DOWN); 
 372   2                       CmdWrite( MWRITE ); 
 373   2                   for(i=0;i<8;i++)
 374   2                              { 
 375   3                                  DataWrite(0x00);
 376   3                  }
 377   2              }
 378   1              CS=1;
 379   1      }
 380          
 381          /******************显示下一图形***************/
 382          void ShowNext()        
 383          {
 384   1              CS=0;
 385   1              for(i=0;i<4;i++)
 386   1              {
 387   2                      for(j=0;j<4;j++)
 388   2                      {   
 389   3                                      Locatexy(j+22,48+i*8);
 390   3                                      if(shape[nextshape_No].xy[i][j]==1)
 391   3                                      {       
 392   4                                               CmdWrite(CSRDIR_DOWN); 
 393   4                                   CmdWrite( MWRITE ); 
 394   4                                       for(k=0;k<8;k++)
 395   4                                              { 
 396   5                                                       DataWrite(0xFF);
 397   5                                              }
 398   4                                      }
 399   3                                  else
 400   3                                      {
 401   4                                               CmdWrite(CSRDIR_DOWN); 
 402   4                                               CmdWrite( MWRITE ); 
 403   4                                       for(k=0;k<8;k++)
 404   4                                                      { 
 405   5                                                               DataWrite(0x00);
 406   5                                              }
 407   4                                      }
 408   3                  }
 409   2               }
 410   1              CS=1;
 411   1      }
 412          /**************画面显示******************/
 413          void ShowMain()
 414          {   
 415   1          unsigned char i,j;
 416   1              for(i=4;i<24;i++){
 417   2                      for(j=1;j<11;j++){
 418   3                              DrawBlockMain(i,j);
 419   3                      }
 420   2              }
 421   1      }
C51 COMPILER V7.06   RUSSIA                                                                10/17/2006 15:30:07 PAGE 8   

 422          
 423          void SetSpeed()  //level=1~9,1最慢
 424          {       
 425   1          unsigned char droptime;
 426   1              droptime=(100-level*10)/2+5;
 427   1          Mycounter=((counter+droptime)%65535);
 428   1      }
 429          
 430          void refresh()                  //根据分数调整速度.刷新得分,速度
 431          {       
 432   1              level=(score/levelup)+1;          //调整速度(得分已在clear中调整)
 433   1          strFox10[0]= level+48;            //送数
 434   1          strFox9[0]= score/10+48;
 435   1              strFox9[1]= score%10+48;
 436   1              dprintf(23,125,strFox9);           //显示
 437   1          dprintf(24,175,strFox10);      
 438   1      }
 439          
 440          void Game_INIT()  //游戏初始化,界面,得分,难度..
 441          {       
 442   1          unsigned char i,j; 
 443   1              levelup=0;        //每次升级所需分数
 444   1              level=0;          //控制游戏速度 1~9
 445   1              score=(level-1)*levelup;           //游戏得分
 446   1          ClearData();                       //清屏
 447   1              for(i=0;i<25;i++){                 //主界面显示   
 448   2                      for(j=0;j<12;j++){
 449   3                              gamespace[i][j]=1;
 450   3                      }
 451   2              }
 452   1              for(i=0;i<3;i++){
 453   2                      for(j=1;j<11;j++){
 454   3                              gamespace[i][j]=0;
 455   3                      }
 456   2              }
 457   1              for(i=4;i<24;i++){
 458   2                      for(j=1;j<11;j++){
 459   3                              gamespace[i][j]=0;
 460   3                      }
 461   2              }
 462   1      
 463   1              for(i=3;i<25;i++){
 464   2                      for(j=0;j<12;j++){
 465   3                              DrawBlockMain(i,j);
 466   3                      }
 467   2              }                                
 468   1                                           
 469   1              for(j=1;j<11;j++)
 470   1              gamespace[3][j]=0;      
 471   1              
 472   1          ShowMain();
 473   1          ShowNext();                       
 474   1          refresh();                  
 475   1          dprintf(20,100,strFox1);          //分数
 476   1          dprintf(20,150,strFox3);          //难度
 477   1          dprintf(0, 220,strFox4);          //左移
 478   1              dprintf(5, 220,strFox5);          //下移
 479   1              dprintf(10,220,strFox6);          //右移
 480   1              dprintf(15,220,strFox7);          //变形
 481   1              dprintf(30,220,strFox8);          //重启
 482   1              dprintf(20,32 ,strFox0);          //下一形状                       
 483   1                                                //主界面显示完成
C51 COMPILER V7.06   RUSSIA                                                                10/17/2006 15:30:07 PAGE 9   

 484   1          CreateShape();
 485   1          SetSpeed();                 
 486   1      }
 487          
 488          void MyRussia()
 489          { 
 490   1        unsigned char beginshowend=0; 
 491   1        DrawBeginPicture();             //显示开始画面,按任意键结束
 492   1        while(1)
 493   1        {
 494   2              if(CheckKeyF==1)                    
 495   2              {       
 496   3                      CheckKey();
 497   3              CheckKeyF=0;
 498   3              }
 499   2              for(i=0;i<8;i++)
 500   2          {
 501   3                      if(Key[i].pressed==1)
 502   3              {
 503   4                              beginshowend=1;
 504   4                  Key[i].pressed=0;
 505   4                      }
 506   3              }
 507   2              if(beginshowend==1)
 508   2              break;    
 509   2        }
 510   1       
 511   1        Game_INIT();
 512   1        
 513   1        while(1)                        //后台任务 
 514   1        {   
 515   2            
 516   2                if(CheckKeyF==1)            //键盘检测           
 517   2                {     
 518   3                      CheckKey();
 519   3              CheckKeyF=0;
 520   3                }
 521   2      
 522   2                if(Myflag==1)             //方块自动下落           
 523   2                {     
 524   3                      if(Move_Down()==0)        //方块到底->检测满行->产生新方块
 525   3                      {   
 526   4                  if(ClearLine()==1)         //检测满行
 527   4                              {
 528   5                                      refresh();
 529   5                              }
 530   4                              if(CreateShape()==0)       //不能产生新方块,GAME OVER
 531   4                              {
 532   5                                      dprintf(20,200,strFox2);
 533   5                              }
 534   4                              else
 535   4                              {
 536   5                                      ShowNext(); 
 537   5                              }
 538   4                      }
 539   3                  ShowMain(); 
 540   3                      SetSpeed();
 541   3                      Myflag=0;
 542   3            }
 543   2                
 544   2                if(Key[0].pressed==1)       //方块左移
 545   2                {
C51 COMPILER V7.06   RUSSIA                                                                10/17/2006 15:30:07 PAGE 10  

 546   3                      if(Move_Left()==1) 
 547   3                  ShowMain();
 548   3              Key[0].pressed=0;
 549   3                }
 550   2                
 551   2                if(Key[1].pressed==1)       //方块下移
 552   2                {
 553   3                      if(Move_Down()==1)
 554   3                      ShowMain();
 555   3                      Key[1].pressed=0;
 556   3                }
 557   2                
 558   2                if(Key[2].pressed==1)       //方块右移
 559   2                {
 560   3                      if(Move_Right()==1)
 561   3                      ShowMain();
 562   3                      Key[2].pressed=0;
 563   3                }
 564   2                
 565   2                if(Key[3].pressed==1)       //方块变形
 566   2                {
 567   3                      if(Turn_Round()==1) 
 568   3                  ShowMain();
 569   3                      Key[3].pressed=0;
 570   3                }
 571   2      
 572   2                if(Key[6].pressed==1)       //退出游戏
 573   2                {     
 574   3                       Key[6].pressed=0;
 575   3                       ClearData();
 576   3                   return;
 577   3                }
 578   2            
 579   2                if(Key[7].pressed==1)       //游戏重启
 580   2                {
 581   3                      Game_INIT();
 582   3              Key[7].pressed=0;
 583   3                }
 584   2                
 585   2                if(score>=(9*levelup))              //通关
 586   2                {
 587   3                      DrawWinPicture();             //通关画面
 588   3                      while(1);
 589   3                }
 590   2      
 591   2        }
 592   1      }
 593          

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

⌨️ 快捷键说明

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