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

📄 mdesign.lst

📁 单片机版俄罗斯方块游戏
💻 LST
📖 第 1 页 / 共 2 页
字号:
 195   1              {
 196   2                      ClrLastBlock();
 197   2                      DrawCurBlock();
 198   2                      Delay(10000);
 199   2              }
 200   1      }
 201          
 202          void ComputerRun()
 203          {
 204   1      
 205   1              GAME_GRID       idata GridBack;
 206   1              BLOCK_ATTR      idata BlockBack;
 207   1              BLOCK_GAME      idata GameBack;
 208   1      
 209   1              GRID_ATTR       idata CurGridAttr;
 210   1              GRID_ATTR       idata BestGridAttr;     
 211   1      
 212   1              struct{
 213   1              UINT8 i:4;
 214   1              UINT8 j:4;
 215   1              UINT8 col:4;
 216   1                      UINT8 TurnCount:4; //需要旋转的次数
 217   1              UINT8 BestCol;
 218   1        }st_tmp;
 219   1      
 220   1        
 221   1              st_tmp.BestCol=myGame.GameBlock.nFirstBlockCol;  // 最好状态所在列
 222   1      
 223   1              BestGridAttr.nFullRowCount=-1; // 保证比较不出问题
 224   1      
 225   1              CopyGame(&GameBack, &myGame);  // 备份初始状态
 226   1      
 227   1              for(st_tmp.i=0;st_tmp.i<4;st_tmp.i++)
 228   1              {
 229   2                      for(st_tmp.j=0;st_tmp.j<st_tmp.i;st_tmp.j++) TurnBlock(&myGame);  // 旋转i次
 230   2      
 231   2                      while(MoveBlock(&myGame,eMoveLeft));                            // 移到最左边
 232   2                      do{
 233   3                              CopyGameGrid(&GridBack,&myGame.GameGrid);       // 保存格子
 234   3                              CopyGameBlock(&BlockBack,&myGame.GameBlock);    // 保存方块
 235   3                      
 236   3                              st_tmp.col=myGame.GameBlock.nFirstBlockCol;
 237   3      
 238   3                              while(MoveBlock(&myGame,eMoveDown));    // 落下
 239   3                              FixCurBlock(&myGame);                                   // 固定                         
 240   3                              GetGridAttr(&myGame,&CurGridAttr);              // 获取属性
 241   3                              
C51 COMPILER V7.06   MDESIGN                                                               11/12/2008 09:12:22 PAGE 5   

 242   3                              if(JudgeBetterAttr(&CurGridAttr,&BestGridAttr))
 243   3                              {                               
 244   4                                      CopyGridAttr(&BestGridAttr,&CurGridAttr);
 245   4                                      st_tmp.TurnCount=st_tmp.i;
 246   4                                      st_tmp.BestCol=st_tmp.col;                      
 247   4                              }
 248   3                              
 249   3                              CopyGameGrid(&myGame.GameGrid,&GridBack);    // 恢复格子
 250   3                              CopyGameBlock(&myGame.GameBlock,&BlockBack); // 恢复方块
 251   3                              
 252   3                      }while(MoveBlock(&myGame,eMoveRight));  // 单步向右移动
 253   2                      
 254   2                      CopyGame(&myGame,&GameBack);                    // 恢复为初时状态
 255   2              }
 256   1              DriveBlockRun(st_tmp.TurnCount,st_tmp.BestCol);
 257   1      }
 258          
 259          void main()
 260          {
 261   1              idata struct{
 262   1              UINT8 i;
 263   1              UINT8 j;
 264   1              }rowcol;
 265   1      
 266   1              SINT8 tKey=-1;
 267   1      
 268   1              UINT8 code bmpInfo[31][8]={
 269   1                      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 270   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 271   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 272   1                      0x29,0x00,0x00,0x03,0x60,0x00,0x01,0x80,
 273   1                      0xb1,0x80,0x00,0x06,0x80,0x00,0x01,0x82,
 274   1                      0xfd,0x80,0x00,0x13,0x70,0x80,0x01,0x8c,
 275   1                      0xcd,0xe1,0x00,0x25,0xe8,0x81,0x07,0x82,
 276   1                      0x31,0xc3,0x01,0x37,0x74,0xe0,0x81,0xa7,
 277   1                      0x51,0x82,0x03,0x15,0x50,0x90,0x86,0xba,
 278   1                      0x39,0xc0,0x01,0x17,0xf0,0x91,0x8b,0xae,
 279   1                      0xd1,0x30,0x01,0x1d,0x78,0x91,0x09,0x9d,
 280   1                      0x91,0x10,0xc6,0x03,0xc4,0xe1,0x0b,0x80,
 281   1                      0x71,0x00,0x00,0x00,0x00,0x20,0x01,0x80,
 282   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 283   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 284   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 285   1                      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
 286   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 287   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 288   1                      0x01,0x00,0x00,0x00,0xf8,0x09,0x82,0x80,
 289   1                      0x81,0xc7,0x33,0xc6,0x49,0x1e,0xea,0x87,
 290   1                      0x81,0x40,0x4a,0x29,0xf8,0x2f,0x4a,0x80,
 291   1                      0x01,0x83,0x4b,0x29,0xc0,0x18,0x4a,0x81,
 292   1                      0x81,0xf8,0x4a,0x49,0x60,0x1b,0x8a,0x80,
 293   1                      0x81,0x40,0x4a,0x89,0xf8,0x1d,0x42,0x83,
 294   1                      0x81,0x81,0x33,0xe6,0x41,0x62,0x32,0x8e,
 295   1                      0x01,0x06,0x00,0x00,0x40,0x00,0x0e,0x80,
 296   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 297   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 298   1                      0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
 299   1                      0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
 300   1              };
 301   1      
 302   1              TMOD =0x20;
 303   1              TH0 = 0x00;
C51 COMPILER V7.06   MDESIGN                                                               11/12/2008 09:12:22 PAGE 6   

 304   1              TH1 = 0xFF;
 305   1              TR0=1;
 306   1              DB=0xff;
 307   1              P3=0x00;        
 308   1              _nop_(); _nop_(); _nop_();
 309   1              _nop_(); _nop_(); _nop_();      
 310   1      
 311   1              DrawRect(0,0,0,63,1);
 312   1              DrawRect(0,0,96,0,1);
 313   1              DrawRect(0,63,96,63,1);
 314   1      
 315   1              for(rowcol.i=0;rowcol.i<31;rowcol.i++)
 316   1          {
 317   2           for(rowcol.j=0;rowcol.j<8;rowcol.j++)
 318   2           {
 319   3             SetDispCurPage(1,rowcol.j);      
 320   3                        SetDispCurCol(1,(97+rowcol.i)%64);    
 321   3                              WriteData(1,bmpInfo[rowcol.i][rowcol.j]);
 322   3           }
 323   2          }
 324   1              while(kBegin);
 325   1              srand(TH1<<8|TH0);
 326   1              TR0=0;
 327   1              NewGame(&myGame);
 328   1      
 329   1              while(1){
 330   2                      KEY=0xFF;       
 331   2                      while(kBegin);  
 332   2                      if(!kAutoRun){                  
 333   3                              ComputerRun();
 334   3                              LastKey=KEY;
 335   3                              continue;
 336   3                      }
 337   2                      if(LastKey!=KEY){
 338   3                              tKey=KEY;
 339   3                              Delay(5); // 消抖
 340   3                      }
 341   2                      else{
 342   3                              tKey=-1;
 343   3                      }
 344   2                      if(tKey==KEY){
 345   3                              LastKey=KEY;
 346   3                              if(!kMoveTurn){
 347   4                                      MoveBlock(&myGame,eMoveTurn);
 348   4                                      ClrLastBlock();
 349   4                                      DrawCurBlock();
 350   4                              }
 351   3                              if(!kMoveLeft){
 352   4                                      MoveBlock(&myGame,eMoveLeft);
 353   4                                      ClrLastBlock();
 354   4                                      DrawCurBlock();
 355   4                              }
 356   3                              if(!kMoveRight){
 357   4                                      MoveBlock(&myGame,eMoveRight);
 358   4                                      ClrLastBlock();
 359   4                                      DrawCurBlock();
 360   4                              }
 361   3                              if(!kMoveDown){
 362   4                                      while(DriveBlockDown(&myGame)){
 363   5                                              ClrLastBlock();
 364   5                                              DrawCurBlock();
 365   5                                              Delay(100);
C51 COMPILER V7.06   MDESIGN                                                               11/12/2008 09:12:22 PAGE 7   

 366   5                                      }       
 367   4                              }
 368   3                      }
 369   2                      timer+=1;
 370   2                      if(timer>=MAX_TIMER)
 371   2                      {
 372   3                              timer=0;
 373   3                              if(DriveBlockDown(&myGame))
 374   3                              {
 375   4                                      ClrLastBlock();
 376   4                                      DrawCurBlock(); 
 377   4                              }
 378   3                      }       
 379   2              }
 380   1      }
 381          
 382          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1623    ----
   CONSTANT SIZE    =    248    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11      26
   IDATA SIZE       =     49     112
   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 + -