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

📄 gameprocess.lst

📁 用proteus模拟仿真实现俄罗期方块游戏
💻 LST
字号:
C51 COMPILER V8.05a   GAMEPROCESS                                                          09/08/2007 12:48:54 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE GAMEPROCESS
OBJECT MODULE PLACED IN GameProcess.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\GameProcess.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\G
                    -ameProcess.lst) OBJECT(GameProcess.obj)

line level    source

   1          //*************************************************************************************************
   2          //*                                                                                                                                                                                               *
   3          //*                      ******************************游戏动作处理程序**************************                         *
   4          //*                                                                                                                                                                                               *
   5          //*************************************************************************************************
   6          
   7          //*************************************************************************************************
   8          //*                                                                                                                                                                                               *
   9          //*                      ******************************头文件及宏定义**************************                           *
  10          //*                                                                                                                                                                                               *
  11          //*************************************************************************************************
  12          #include "at89x51.h"
  13          #include "LCDShowMap.h"
  14          #include "LCD12864.h"
  15          #include "GameGraph.h"
  16          #include "MoveDecide.h"
  17          #include "MoveBlock.h"
  18          #include "BlockCreate.h"
  19          #include "GetMark.h"
  20          
  21          
  22          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块动作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  23          #define ACTIONROTATE 0
  24          #define ACTIONRIGHT 1
  25          #define ACTIONDOWN 2
  26          #define ACTIONLEFT 3
  27          
  28          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块类型>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  29          #define TYPEONE 0
  30          #define TYPETWO 1
  31          #define TYPETHREE 2
  32          #define TYPEFOUR 3
  33          #define TYPEFIVE 4
  34          #define TYPESIX 5
  35          #define TYPESEVEN 6
  36          
  37          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块状态>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  38          #define STATEONE 0
  39          #define STATETWO 1
  40          #define STATETHREE 2
  41          #define STATEFOUR 3
  42          
  43          //*************************************************************************************************
  44          //*                                                                                                                                                                                               *
  45          //*                      ********************************全局变量*******************************                          *
  46          //*                                                                                                                                                                                               *
  47          //*************************************************************************************************
  48          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定义当前方块属性变量>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  49          unsigned char uc_BlockType=TYPEFOUR;
  50          unsigned char uc_BlockState=STATETHREE;
  51          unsigned char uc_BlockRow=0;
  52          unsigned char uc_BlockLine=4;
  53          
  54          extern bit b_DownStart;            //开启定时器定时下降标志位。
C51 COMPILER V8.05a   GAMEPROCESS                                                          09/08/2007 12:48:54 PAGE 2   

  55          
  56          unsigned int ui_GameMark=0;        //当前游戏分数。
  57          
  58          
  59          //*************************************************************************************************
  60          //*                                                                                                                                                                                               *
  61          //*                      **********************************创建新方块******************************                       *
  62          //*                                                                                                                                                                                               *
  63          //*************************************************************************************************
  64          void vNewBlock()
  65          {
  66   1              if(uc_BlockType==TYPESEVEN)                        //变换方块类型。
  67   1                      uc_BlockType=TYPEONE;
  68   1              else
  69   1                      uc_BlockType++;
  70   1      
  71   1              if(uc_BlockState==STATEFOUR)               //变换方块状态。
  72   1                      uc_BlockState=STATEONE;
  73   1              else
  74   1                      uc_BlockState++;
  75   1      
  76   1              switch(uc_BlockState)                              //防止状态变量超出特定类型方块类型的取值范围。
  77   1                      {
  78   2                      case TYPEONE:uc_BlockState%=2;break;
  79   2                      case TYPETWO:uc_BlockState=0;break;
  80   2                      case TYPETHREE:uc_BlockState%=4;break;
  81   2                      case TYPEFOUR:uc_BlockState%=4;break;
  82   2                      case TYPEFIVE:uc_BlockState%=4;break;
  83   2                      case TYPESIX:uc_BlockState%=2;break;
  84   2                      case TYPESEVEN:uc_BlockState%=2;break;
  85   2                      default:break;
  86   2                      }
  87   1      
  88   1              uc_BlockRow=0;                                           //初始化方块位置
  89   1              uc_BlockLine=4;
  90   1              vBlockCreate();                                          //新建方块。
  91   1      }
  92          
  93          
  94          //*************************************************************************************************
  95          //*                                                                                                                                                                                               *
  96          //*                      ********************************游戏初始化*******************************                        *
  97          //*                                                                                                                                                                                               *
  98          //*************************************************************************************************
  99          void vGameInitialize()
 100          {
 101   1              unsigned char ucCountOne,ucCountTwo;
 102   1      
 103   1              vShowOneChin(1,2,uca_FEN);                 //显示“分数”。
 104   1              vShowOneChin(1,18,uca_SHU);
 105   1      
 106   1              vShowFrame();                                      //显示边框。
 107   1      
 108   1              for(ucCountOne=0;ucCountOne<21;ucCountOne++)       //清空游戏区域。
 109   1                      for(ucCountTwo=0;ucCountTwo<12;ucCountTwo++)
 110   1                              vCleanBlock(ucCountOne,ucCountTwo);
 111   1      
 112   1              ui_GameMark=0;                                                                     //清空游戏分数。
 113   1              vShowNumber(4,0,0);                                                                //显示初始分数。
 114   1              vNewBlock();                                                                       //新建方块。
 115   1              b_DownStart=1;                                                                     //开启定时器定时下降。
 116   1      } 
C51 COMPILER V8.05a   GAMEPROCESS                                                          09/08/2007 12:48:54 PAGE 3   

 117          //*************************************************************************************************
 118          //*                                                                                                                                                                                               *
 119          //*                      ******************************判断游戏是否结束**************************                         *
 120          //*                                                                                                                                                                                               *
 121          //*************************************************************************************************
 122          unsigned char ucIsGameOver()
 123          {
 124   1              unsigned char ucCount,ucCountTwo;
 125   1      
 126   1              for(ucCount=0;ucCount<12;ucCount++)
 127   1                      if(ucReadBlock(0,ucCount)==1)
 128   1                              {
 129   2                              if(uc_BlockType==TYPETHREE&&(uc_BlockState==STATETWO||uc_BlockState==STATEFOUR))
 130   2                                      {
 131   3                                      for(ucCountTwo=3;ucCountTwo<8;ucCountTwo++)
 132   3                                              if(ucReadBlock(2,ucCountTwo)==1)
 133   3                                                      return 1;
 134   3      
 135   3                                      }
 136   2                              else
 137   2                                      {
 138   3                                      for(ucCountTwo=3;ucCountTwo<8;ucCountTwo++)
 139   3                                              if(ucReadBlock(1,ucCountTwo)==1)
 140   3                                                      return 1;
 141   3                                      }
 142   2                              }
 143   1              return 0;
 144   1      }
 145          
 146          
 147          //*************************************************************************************************
 148          //*                                                                                                                                                                                               *
 149          //*                      ******************************游戏结束处理函数**************************                         *
 150          //*                                                                                                                                                                                               *
 151          //*************************************************************************************************
 152          void vGameOver()
 153          {
 154   1              b_DownStart=0;
 155   1              vGameInitialize();
 156   1      }
 157          
 158          //*************************************************************************************************
 159          //*                                                                                                                                                                                               *
 160          //*                      ******************************游戏动作处理函数****************************                       *
 161          //*                                                                                                                                                                                               *
 162          //*************************************************************************************************
 163          void vBlockAction(unsigned char ucAction)
 164          {
 165   1              unsigned char ucCount;
 166   1      
 167   1              if(ucMoveDecide(ucAction))                 //判断方块是否可以移动。
 168   1                      {
 169   2                      vMoveBlock(ucAction);              //如果可以,则移动方块。
 170   2                      if(uc_BlockLine<3)                         //此处是为了弥补移动方块时可能产生的错误。
 171   2                              for(ucCount=1;ucCount<7;ucCount++)
 172   2                                      {
 173   3                                      CS1=1;
 174   3                                      CS2=0;
 175   3                                      vWriteCMD(LCDPAGE+ucCount);
 176   3                                      vWriteCMD(LCDLINE+FRAMELEFT);
 177   3                                      vWriteData(0xFF);
 178   3                                      vWriteData(0xFF);
C51 COMPILER V8.05a   GAMEPROCESS                                                          09/08/2007 12:48:54 PAGE 4   

 179   3                                      }
 180   2                      }
 181   1              else
 182   1                      if(ucAction==ACTIONDOWN)
 183   1                              {
 184   2                              if(ucIsGameOver())
 185   2                                      vGameOver();
 186   2                              else
 187   2                                      {
 188   3                                      vGetMark();
 189   3                                      vNewBlock();
 190   3                                      }
 191   2                              }
 192   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    354    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       6
   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 + -