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

📄 game.lst

📁 Maria2 CarTV 20060707 Tony
💻 LST
📖 第 1 页 / 共 3 页
字号:
                      Game_clear_block(nblock);
                              nblock.shape++;
                              break;
                      case(4):
                              if((nblock.x+2==MaxLine)||Game_check_change(nblock))
                              return nblock;
                      Game_clear_block(nblock);
                              nblock.shape=1;
                              break;
                  }
                 break;
                 case CP_Gameblock_Z:
                  switch(nblock.shape)
                  {
                      case(1):
                              if((Game_gridMatrix[nblock.x+1][nblock.y])||(Game_gridMatrix[nblock.x][nblock.y+1]))
                                      return nblock;
                              Game_clear_block(nblock);
                              nblock.shape++;
                              break;
                     case(2):
                              if((Game_gridMatrix[nblock.x][nblock.y])||(Game_gridMatrix[nblock.x+1][nblock.y+1]))
                              return nblock;
                      Game_clear_block(nblock);
                              nblock.shape--;
                              break;
                  }
                 break;
              
                default:
                      break;
               }
              
              return nblock;
              }
              
              void Game_draw_delline(BYTE nline,BOOL Line1,BOOL Line2,BOOL Line3)
              {
              BYTE i,j,k;
              
              
                        for(k=0;k<2;k++)
                              {
                                      Osd_SetTextColor(CP_BlueColor, CP_BlackColor);
                                      for(j=nline;j<nline+3;j++)
                                              for(i=1;i<MaxColume;i++)
                                                      {
                                                        if(j==nline)
                                                              {
                                                              if(!Line1)
                                                                      break;
                                                              }
                                                       else if(j==nline+1)
                                                              {
                                                              if(!Line2)
                                                                      break;
                                                              }
                                                       else
                                                              {
                                                              if(!Line3)
                                                                      break;
                                                              }
C51 COMPILER V8.01   GAME                                                                  11/28/2006 08:08:06 PAGE 11  

                                                      Osd_DrawStr(i,j,"\x087");
                                                      }
              
                                      Delay1ms(200);
              
                                      Osd_SetTextColor(CP_BlackColor, CP_BlackColor);
                                      for(j=nline;j<nline+3;j++)
                                              for(i=1;i<MaxColume;i++)
                                                      {
                                                       if(j==nline)
                                                              {
                                                              if(!Line1)
                                                                      break;
                                                              }
                                                       else if(j==nline+1)
                                                              {
                                                              if(!Line2)
                                                                      break;
                                                              }
                                                       else
                                                              {
                                                              if(!Line3)
                                                                      break;
                                                              }
                                                              Osd_DrawStr(i,j,"\x088");
                                                      }
              
                                      Delay1ms(200);
              
                              }
              
              }
              
              BOOL Game_del_line(BYTE nline)
              {
                 BYTE i,j,k,m;
                 BOOL Flag_1=FALSE;
                 BOOL Flag_del1=FALSE,Flag_del2=FALSE,Flag_del3=FALSE;
              
                      for(j=nline;j<nline+3;j++)
                              for(i=1;i<MaxColume;i++)
                              {
              
                                      if(j>=MaxLine)
                                              break;
                                      if(!Game_gridMatrix[i][j])
                                              break;
                                      if(i==MaxColume-1)
                                              {
                                                      Score++;
                                                      if(j==nline)
                                                              Flag_del1=TRUE;
                                                      else if(j==nline+1)
                                                              Flag_del2=TRUE;
                                                      else
                                                              Flag_del3=TRUE;
              
                                                      Flag_1=TRUE;
                                                      for(m=j;m>0;m--)
                                                              for(k=0;k<MaxColume;k++)
                                                                      Game_gridMatrix[k][m]=Game_gridMatrix[k][m-1];
                                              }
C51 COMPILER V8.01   GAME                                                                  11/28/2006 08:08:06 PAGE 12  

              
                              }
                      if(Flag_1)
                              Game_draw_delline(nline,Flag_del1,Flag_del2,Flag_del3);
              
                      return Flag_1;
              }
              
              void GameVariableInitial(void)
              {
                      g_bGameEnable=0;
                      g_ucGameKeyControlStatus=GK_GameKeyNop;
              }
              
              BOOL Game_initial(void)
              {
                      Score=0;
                      g_bGameEnable=1;
                      g_ucGameStatus=GS_GameReStart;
                         return TRUE;
              }
              
              BOOL Game_Start(void)
              {
                      g_ucGameStatus=GS_GameRunning;
                     Game_MenuExec();
                      Game_ini_grid();
                      g_GameNowBlock=Game_createblock();
                      g_GameNextBlock=Game_createblock();
                     Game_draw_next(g_GameNextBlock);
                     Game_draw_block(g_GameNowBlock);
                         return TRUE;
              }
              
              void GameOverCheck(void)
              {
                 if(Game_check_top(g_GameNextBlock))
                      {
                       g_ucGameStatus=GS_GameStop;
                       Game_restart();
                      }
                 else
                      {
                     g_GameNowBlock=g_GameNextBlock;
                     g_GameNextBlock=Game_createblock();
                     Game_draw_next(g_GameNextBlock);
                     Game_draw_block(g_GameNowBlock);
                      }
              }
              void Gameprocess(void)
              {
              
                 if(g_ucGameKeyControlStatus)
                 {
                      switch(g_ucGameKeyControlStatus)
                              {
                              case GK_GameKeyDown://for change block
                                              Set_GameBlockFastDownFlag();
                                              g_uwGameMsCounter=GameFastTick;
                                      break;
                              case GK_GameKeyTurn://for change block
                                              g_GameNowBlock=Game_change(g_GameNowBlock);
C51 COMPILER V8.01   GAME                                                                  11/28/2006 08:08:06 PAGE 13  

                                              Game_draw_block(g_GameNowBlock);
                                              if(Game_check_bottom(g_GameNowBlock))
                                                      {
                                                              if(Game_del_line(g_GameNowBlock.y))
                                                                      {Game_draw_score();}
                                                              Game_draw_grid(g_GameNowBlock);
                                                              GameOverCheck();
                                                      }
                                      break;
                              case GK_GameKeyLeft:
                                      if(!Game_check_lborder(g_GameNowBlock)&&!Game_check_bottom(g_GameNowBlock))
                                              {
                                                      Game_clear_block(g_GameNowBlock);
                                                      g_GameNowBlock.x-=1;
                                                      Game_draw_block(g_GameNowBlock);
                                              }
                                      break;
                              case GK_GameKeyRight:
                                      if(!Game_check_rborder(g_GameNowBlock)&&!Game_check_bottom(g_GameNowBlock))
                                              {
                                                      Game_clear_block(g_GameNowBlock);
                                                      g_GameNowBlock.x+=1;
                                                      Game_draw_block(g_GameNowBlock);
                                              }
                                      break;
                              default:
                                      break;
                              }
                      g_ucGameKeyControlStatus=GK_GameKeyNop;
                 }
              
                 if (GameBlockDownFlag)
                 {
                      Clr_GameBlockDownFlag() ;
                 if(!Game_check_bottom(g_GameNowBlock))
                      {
              
                              Game_clear_block(g_GameNowBlock);
                              g_GameNowBlock.y+=1;
                              Game_draw_block(g_GameNowBlock);
                      }
                 else
                      {
                              if(Game_del_line(g_GameNowBlock.y))
                                      {
                                              Game_draw_score();
                                      }
                              Game_draw_grid(g_GameNowBlock);
                              GameOverCheck();
                      }
                 }
              }
              
              void GameHandle(void)
              {
                if (!g_bGameEnable)
                      return;
                switch(g_ucGameStatus)
                      {
                      case GS_GameRunning:
                              Gameprocess();
                              break;
C51 COMPILER V8.01   GAME                                                                  11/28/2006 08:08:06 PAGE 14  

                      case GS_GameReStart:
                              Game_Start();
                              break;
                      case GS_GameExit:
                             Osd_Hide();
                             g_ucMenuPageIndex=RootMenu;
                              g_ucMenuItemIndex=0;
                              g_bGameEnable=0;
                              Set_InputTimingChangeFlag();
                              break;
                      case GS_GameStop:
                              break;
                      }
              }
              
              #endif


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


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

⌨️ 快捷键说明

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