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

📄 main.lst

📁 一个推箱子的游戏,编程思想很值得借鉴,对大家会很有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.08   MAIN                                                                  06/15/2007 17:28:51 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************
   2          *名称:推箱子游戏V0.1 Beta 1 (以占用3513字节 EPROM空间)
   3          *编程:飞扬
   4          *说明:采用YM12864R液晶(ST7920)+62256+PT6122遥控+AT89S51
   5          *下一个版本增加音效,地图编辑功能,界面显示美化,撤销上一步!
   6          *主要是学习外扩展RAM才搞这个东东! 我使用的是24MHz晶振
   7          *关卡增加到20关
   8          **********************************************************/
   9          #include <at89x52.h>
  10          #include "MAIN.H"
  11          /******    引脚定义   ******/
  12          sbit Beep = P3^3; //音频输出脚
  13          
  14          /****** 变量/数组定义 ******/
  15          uchar code logotab[4][17]={
  16          {"                "},
  17          {"  V0.1 Beta 1   "},
  18          {"  推箱子游戏    "},
  19          {"  编程  飞扬    "}};
  20          //存放遥控接收数据
  21          uchar xdata KeyCoding[4]={0,0,0,0};
  22          //关卡设置
  23          uchar guanka = 0;
  24          //用1024个字节存放动态绘图数据,我叫它显存数据
  25          uchar xdata GamePic[1024] _at_ 0x0100; //这里使用了绝对地址
  26          //空(用于清空图形移动后的痕迹)编号0
  27          uchar code kong[8]={0,0,0,0,0,0,0,0};
  28          //墙壁(用来标识移动的范围)编号1
  29          uchar code qiang[8]={0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00};
  30          //圆形(箱子要推到的地方)编号2
  31          uchar code yuan[8]={0x3c,0x66,0xc3,0x81,0x81,0xc3,0x66,0x3c};
  32          //箱子(推动的就是他)编号3
  33          uchar code xiangzi[8]={0xff,0x81,0xbd,0xbd,0xbd,0xbd,0x81,0xff};
  34          //娃娃脸(用于推动箱子)编号4
  35          uchar code lian[8]={0x7e,0xff,0xdb,0xff,0xff,0xc3,0xe7,0x7e};
  36          //十字形(箱子推到圆形位置后变为十字形)编号5
  37          uchar code shizi[8]={0x3c,0x3c,0xff,0xff,0xff,0xff,0x3c,0x3c};
  38          //用于计算图形移动和放置的坐标
  39          //实际存放的是GamePic数组的相应下标
  40          uint code MoveData[64]={
  41          0,1,2,3,4,5,6,7,
  42          128,129,130,131,132,133,134,135,
  43          256,257,258,259,260,261,262,263,
  44          384,385,386,387,388,389,390,391,
  45          512,513,514,515,516,517,518,519,
  46          640,641,642,643,644,645,646,647,
  47          768,769,770,771,772,773,774,775,
  48          896,897,898,899,900,901,902,903
  49          };
  50          /*8X8的游戏地图数据,同时根据图形数据判断娃娃脸是否可以移动,
  51          *箱子是否可以推动,箱子推动的方向是否是墙和箱子,是则不
  52          *能推动!箱子推到的地方是圆形则用十字形替换(将该位置数据换成5),
  53          *推动十字形,则再恢复到箱子的形状(在换成3).
  54          *空(什么都不显示)=0,墙=1,圆=2,箱子=3,脸=4,十字=5 */
  55          uchar code GameMap[20][64]={
C51 COMPILER V8.08   MAIN                                                                  06/15/2007 17:28:51 PAGE 2   

  56          //第一关
  57          {1,1,1,1,1,1,1,1,
  58          1,0,0,0,1,2,0,1,
  59          1,2,0,0,3,0,0,1,
  60          1,1,3,1,1,0,0,1,
  61          1,0,0,1,1,3,1,1,
  62          1,0,0,4,0,0,0,1,
  63          1,0,2,1,0,0,0,1,
  64          1,1,1,1,1,1,1,1},
  65          //第二关
  66          {1,1,1,1,1,1,1,1,
  67          1,0,0,0,1,0,0,1,
  68          1,0,2,0,3,2,0,1,
  69          1,1,3,1,1,0,0,1,
  70          1,0,0,1,1,3,1,1,
  71          1,0,0,4,0,2,0,1,
  72          1,0,0,1,0,0,0,1,
  73          1,1,1,1,1,1,1,1},
  74          //第三关
  75          {1,1,1,1,1,1,1,1,
  76          1,0,0,0,1,0,0,1,
  77          1,0,0,0,3,0,0,1,
  78          1,0,3,1,1,0,0,1,
  79          1,0,2,1,1,3,1,1,
  80          1,0,2,4,0,0,0,1,
  81          1,0,2,1,0,0,0,1,
  82          1,1,1,1,1,1,1,1},
  83          //第四关
  84          {1,1,1,1,1,1,1,1,
  85          1,0,0,0,1,0,0,1,
  86          1,0,2,0,3,2,0,1,
  87          1,1,3,1,1,0,0,1,
  88          1,0,0,1,1,3,1,1,
  89          1,0,2,4,0,0,0,1,
  90          1,0,0,1,0,0,0,1,
  91          1,1,1,1,1,1,1,1},
  92          //第五关
  93          {1,1,1,1,1,1,1,1,
  94          1,0,0,0,1,0,0,1,
  95          1,0,0,2,3,0,0,1,
  96          1,1,3,1,1,0,0,1,
  97          1,0,2,1,1,3,1,1,
  98          1,0,0,4,2,0,0,1,
  99          1,0,0,1,0,0,0,1,
 100          1,1,1,1,1,1,1,1},
 101          //6
 102          {1,1,1,1,1,1,1,1,
 103          1,0,0,0,1,0,0,1,
 104          1,0,0,0,3,0,0,1,
 105          1,1,5,1,1,0,0,1,
 106          1,0,2,1,1,3,1,1,
 107          1,0,2,4,0,0,0,1,
 108          1,0,0,1,0,0,0,1,
 109          1,1,1,1,1,1,1,1},
 110          //7
 111          {1,1,1,1,1,1,1,1,
 112          1,1,0,1,1,0,2,1,
 113          1,0,0,3,0,0,0,1,
 114          1,4,3,3,0,0,0,1,
 115          1,0,1,0,0,1,0,1,
 116          1,0,1,1,1,1,0,1,
 117          1,2,0,0,0,0,2,1,
C51 COMPILER V8.08   MAIN                                                                  06/15/2007 17:28:51 PAGE 3   

 118          1,1,1,1,1,1,1,1},
 119          //8
 120          {1,1,1,1,1,1,1,1,
 121          1,0,0,1,0,0,0,1,
 122          1,0,0,1,0,5,0,1,
 123          1,0,0,1,0,2,1,1,
 124          1,1,0,3,0,0,0,1,
 125          1,0,3,0,0,2,0,1,
 126          1,4,0,1,1,0,0,1,
 127          1,1,1,1,1,1,1,1},
 128          //9
 129          {1,1,1,1,1,1,1,1,
 130          1,1,4,0,1,1,1,1,
 131          1,0,0,0,3,2,0,1,
 132          1,0,0,1,0,0,0,1,
 133          1,0,0,0,1,5,0,1,
 134          1,1,0,3,0,0,0,1,
 135          1,1,1,1,0,2,0,1,
 136          1,1,1,1,1,1,1,1},
 137          //10
 138          {1,1,1,1,1,1,1,1,
 139          1,2,0,1,1,1,1,1,
 140          1,2,0,0,0,1,1,1,
 141          1,0,1,3,0,0,0,1,
 142          1,2,0,3,3,1,0,1,
 143          1,1,0,0,0,0,0,1,
 144          1,1,1,1,1,0,4,1,
 145          1,1,1,1,1,1,1,1},
 146          //11
 147          {1,1,1,1,1,1,1,1,
 148          1,1,0,0,0,1,1,1,
 149          1,0,1,2,3,0,1,1,
 150          1,0,2,4,0,0,1,1,
 151          1,0,3,0,3,0,1,1,
 152          1,1,0,0,0,1,1,1,
 153          1,1,1,1,1,1,1,1,
 154          1,1,1,1,1,1,1,1},
 155          //12
 156          {1,1,1,1,1,1,1,1,
 157          1,1,0,1,1,0,2,1,
 158          1,0,3,0,3,3,0,1,
 159          1,4,0,0,0,0,0,1,
 160          1,0,1,0,0,1,0,1,
 161          1,0,1,1,1,1,0,1,
 162          1,2,0,0,0,0,2,1,
 163          1,1,1,1,1,1,1,1},
 164          //13
 165          {1,1,1,1,1,1,1,1,
 166          1,1,1,1,1,1,1,1,
 167          1,1,0,0,0,0,1,1,
 168          1,1,2,1,1,3,0,1,
 169          1,0,2,2,3,0,0,1,
 170          1,0,0,1,3,0,0,1,
 171          1,0,0,4,0,1,1,1,
 172          1,1,1,1,1,1,1,1},
 173          //14
 174          {1,1,1,1,1,1,1,1,
 175          1,1,1,0,0,1,1,1,
 176          1,1,0,0,0,0,1,1,
 177          1,0,2,0,2,3,1,1,
 178          1,0,0,3,4,0,0,1,
 179          1,1,1,1,5,1,0,1,
C51 COMPILER V8.08   MAIN                                                                  06/15/2007 17:28:51 PAGE 4   

 180          1,1,1,1,0,0,0,1,
 181          1,1,1,1,1,1,1,1},
 182          //15
 183          {1,1,1,1,1,1,1,1,
 184          1,1,1,1,1,1,1,1,
 185          1,1,0,2,0,5,0,1,
 186          1,1,0,0,1,0,0,1,
 187          1,1,4,3,5,0,0,1,
 188          1,1,1,0,0,0,1,1,
 189          1,1,1,0,0,0,1,1,
 190          1,1,1,1,1,1,1,1},
 191          //16
 192          {1,1,1,1,1,1,1,1,
 193          1,1,1,1,1,1,1,1,
 194          1,0,2,2,1,1,1,1,
 195          1,0,3,0,0,0,0,1,
 196          1,0,0,1,3,1,0,1,
 197          1,0,4,0,2,3,0,1,
 198          1,1,1,1,1,1,1,1,
 199          1,1,1,1,1,1,1,1},
 200          //17
 201          {1,1,1,1,1,1,1,1,
 202          1,1,1,1,1,1,1,1,
 203          1,2,0,0,4,2,1,1,
 204          1,0,0,3,1,0,1,1,
 205          1,0,1,0,3,2,0,1,
 206          1,0,0,0,3,1,0,1,
 207          1,1,1,1,0,0,0,1,
 208          1,1,1,1,1,1,1,1},
 209          //18
 210          {1,1,1,1,1,1,1,1,
 211          1,2,0,2,1,1,1,1,
 212          1,2,1,3,3,0,1,1,
 213          1,0,0,0,4,0,1,1,
 214          1,0,3,1,0,0,1,1,
 215          1,1,0,0,0,1,1,1,
 216          1,1,1,1,1,1,1,1,
 217          1,1,1,1,1,1,1,1},
 218          //19
 219          {1,1,1,1,1,1,1,1,
 220          1,1,1,1,1,1,1,1,
 221          1,2,0,0,0,2,0,1,
 222          1,0,1,0,1,0,0,1,
 223          1,4,3,0,0,3,2,1,
 224          1,1,1,1,1,0,3,1,
 225          1,1,1,1,1,0,0,1,
 226          1,1,1,1,1,1,1,1},
 227          //20
 228          {1,1,1,1,1,1,1,1,
 229          1,0,0,1,1,1,1,1,
 230          1,0,0,1,1,1,1,1,
 231          1,0,2,5,0,0,0,1,
 232          1,1,3,0,0,0,0,1,
 233          1,1,0,1,3,1,1,1,
 234          1,1,2,0,4,1,1,1,
 235          1,1,1,1,1,1,1,1}
 236          };
 237          /*程序存储器中的数据是只读的!根据这个地图刷新显示.
 238           用于复制程序存储器中的当前地图数据*/
 239          uchar xdata Map[64];
 240          /*用于存放圆形的坐标,最多5个圆.yuanPos[6]存放本关有几个圆*/
 241          uchar xdata yuanPos[6] = 0;
C51 COMPILER V8.08   MAIN                                                                  06/15/2007 17:28:51 PAGE 5   

 242           
 243          /**********************************************************
 244          *函数名:CopyMap() 
 245          *功  能:用于复制程序存储器中的当前地图数据
 246          *输  入:入口参数为当前地图编号
 247          **********************************************************/
 248          void CopyMap(uchar num)
 249          {
 250   1        uchar i;
 251   1        for (i=0;i<64;i++) Map[i] = GameMap[num][i];
 252   1      }
 253          /**********************************************************
 254          *函数名:WriteMemorizer()
 255          *功  能:将图形数据写入显存 
 256          *pos:要显示图形的位置,*p:指针指向要显示的图形
 257          **********************************************************/
 258          void WriteMemorizer(uchar pos,uchar *p)
 259          {
 260   1         uchar i;
 261   1         uint zb;
 262   1         zb = MoveData[pos]; //取显存地址(显示坐标)
 263   1         for (i=0;i<8;i++)
 264   1         {
 265   2              GamePic[zb] = *p; //要显示的图形写入显存
 266   2              p++;   //下一个数据
 267   2              zb+=16;//显存的下一个地址(每个地址之间的差是16)
 268   2         }    //或者说是间隔是16.

⌨️ 快捷键说明

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