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

📄 badgerbash.lst

📁 打地鼠程序游戏
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   BADGERBASH                                                           05/06/2009 21:14:12 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE BADGERBASH
OBJECT MODULE PLACED IN badgerbash.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE badgerbash.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          *文件说明:打地鼠程序
   3          *时    间:2009-05-01
   4          *作    者:小树
   5          *修改时间:
   6          *修改人  :
   7          */
   8          
   9          #include <reg52.h>
  10          #include <stdlib.h>
  11          #include "badgerbash_header.h"
  12          #include "LCD1602.h"
  13          /**添加还需要的头文件**/
  14          
  15          /**********************函数声明区**********************/
  16          
  17          /**函数:void delay_ms(uchar num)
  18           * 参数:num----延时时间
  19           * 功能:延时程序
  20           * 返回:无
  21           */
  22          void delay_ms(uchar num)
  23          {
  24   1              uchar i=200;
  25   1              while(num--)
  26   1              {
  27   2                      while(--i);
  28   2              }
  29   1      }
  30          
  31          
  32          void initial(void);
  33          
  34          /**函数:int creatbadger(int num);
  35           * 参数:num----产生地鼠的个数
  36           * 功能:生成地鼠随机位置
  37           * 返回:
  38           */
  39          void creatbadger(uchar num, uint p[posNum][2]);
  40          
  41          /**函数:void showbadger(uchar p[posNum]);
  42           * 参数:p[posNum][2]----地鼠位置、时间数组
  43           * 功能:在相应位置上显示地鼠
  44           * 返回:无
  45           */
  46          void showbadger(uint p[posNum][2]);
  47          
  48          /**函数:void bash(uchar key);
  49           * 参数:key----按下的键号
  50           * 功能:打地鼠处理函数,打中与否处理,积分处理
  51           * 返回:无
  52           */
  53          void bashPro(uchar key, uint p[posNum][2]);
  54          
  55          /**函数:uchar keyscan(void);
C51 COMPILER V8.05a   BADGERBASH                                                           05/06/2009 21:14:12 PAGE 2   

  56           * 参数:无
  57           * 功能:按键扫描
  58           * 返回:按键编号
  59           */
  60          uchar keyscan(void);
  61          
  62          /**函数:void modeControl(uchar m);
  63           * 参数:m----游戏模式
  64           * 功能:模式设置
  65           * 返回:无
  66           */
  67          void modeControl(uchar m);
  68          
  69          /**函数:void setMode(void);
  70           * 参数:无
  71           * 功能:游戏设置
  72           * 返回:无
  73           */
  74          void set_Mode(void);
  75          
  76          /**函数:void monitor(void);
  77           * 参数:无
  78           * 功能:系统监控
  79           * 返回:无
  80           */
  81          void monitor(void);
  82          
  83          void setgrade(uchar g);
  84          
  85          /**********************定义全局变量**********************/
  86          uint showTime;            /*地鼠出现时间*/
  87          uchar badgerNum;           /*地鼠同时出现数目*/
  88          uchar badgerNow;           /*已经出现的数目,通过该数与badgerNum的差,立即再产生(badgerNum-badgerNow)个*/
  89          
  90          uchar grade;               /*游戏难度等级*/
  91          uint levelscore[LEVEL] = {0, 50, 150, 350, 650, 1050, 1550, 2150, 2850}; /*进入各关卡所需的分数*/
  92          uchar newlevel;
  93          
  94          uint showPos[posNum][2];   /*地鼠出现位置,出现所在位置为1,第二位表示出现的时间*/
  95          uchar keyNum;              /*按键编号*/
  96          
  97          uint sc; uchar score[5];   /*游戏积分*/
  98          uint gain;                 /*每打中一个的得分*/
  99          
 100          uchar showEn;              /*显示控制*/
 101          uchar start, run;          /*游戏开始*/
 102          uchar setsound,set_mod;    /*声音、模式设置标志。0:未设置,1:允许/模式1,2:禁止/模式2   ***/
 103          
 104          uint count, count2;
 105          /**********************程序入口点,main函数**********************/
 106          
 107          int main(void)
 108          {
 109   1              /*系统初始化*/
 110   1              initial();
 111   1              
 112   1              /*循环处理*/
 113   1              while(1)
 114   1              {
 115   2                      //LCD_SetDisplay(LCD_SHOW|LCD_CURSOR|LCD_FLASH);
 116   2                      
 117   2                      if (run == 1)            /*设置完成,游戏开始*/
C51 COMPILER V8.05a   BADGERBASH                                                           05/06/2009 21:14:12 PAGE 3   

 118   2                      {
 119   3                              keyNum = keyscan();
 120   3                              
 121   3                              bashPro(keyNum, showPos);
 122   3                              
 123   3                              if (showEn > 9)        /*为了更准确扫描键盘,控制显示刷新频率,500ms刷新一次*/
 124   3                              {
 125   4                                      monitor();
 126   4                                      showbadger(showPos);
 127   4                                      showEn = 0;
 128   4                              }
 129   3                      }
 130   2                      else                      /*刚进入系统,进行游戏设置*/
 131   2                              set_Mode();
 132   2              }
 133   1              
 134   1      }
 135          
 136          void initial(void)
 137          {               
 138   1          uchar i = 50;
 139   1              
 140   1              /*定时器初始化*/
 141   1          TMOD = 0x01;           /*设置定时器0为工作方式1*/
 142   1              TH0 = 0x3c;            /*定时50ms*/
 143   1              TL0 = 0xb0;
 144   1              EA = 1;
 145   1              ET0 = 1;              /*开定时器0中断*/
 146   1              TR0 = 1;            /*启动T0*/
 147   1              
 148   1              /*地鼠显示清空*/
 149   1              showPort = 0xff;
 150   1              showbit = 1;
 151   1              
 152   1              /*清空按键号,无键按下*/
 153   1              keyNum = 254;
 154   1              
 155   1              /*设置打地鼠相关参数*/
 156   1              /*改为在模式中设定*/
 157   1              
 158   1              /*生成地鼠*/
 159   1              creatbadger(badgerNum, showPos);
 160   1              badgerNow = badgerNum;
 161   1              
 162   1              score[0] = 0 + '0';
 163   1              score[1] = 0 + '0'; 
 164   1              score[2] = 0 + '0';
 165   1              score[3] = 0 + '0';
 166   1              score[4] = '\0';
 167   1              
 168   1              /*液晶初始化*/
 169   1              LCD_Initial();
 170   1              GotoXY(0,0);
 171   1              Print(" Badger Inside! ");
 172   1              GotoXY(0,1);
 173   1              Print("Let's bash it..");
 174   1              
 175   1              /*延时定格欢迎画面*/
 176   1              delay_ms(200);
 177   1              delay_ms(200);
 178   1              delay_ms(200);
 179   1              delay_ms(200);
C51 COMPILER V8.05a   BADGERBASH                                                           05/06/2009 21:14:12 PAGE 4   

 180   1              
 181   1              /*产生随机种子*/
 182   1               srand(0);
 183   1               while(i--)
 184   1                      rand();
 185   1              
 186   1              /*其他初始化操作*/
 187   1              
 188   1      }
 189          
 190          void creatbadger(uchar num, uint p[posNum][2])
 191          {
 192   1              uchar i,temp;
 193   1              i = num;
 194   1              /*参数范围检查*/
 195   1              if((num < 0) || (num > posNum - 1))
 196   1                      return;
 197   1              
 198   1              while(i > 0)
 199   1              {
 200   2                      temp = rand()%posNum;          /*产生0~posNum之间的随机数*/
 201   2                      if (p[temp][0] == 0)              /*该位置没出现地鼠*/
 202   2                      {
 203   3                              p[temp][0] = 1;               /*在相应的位置上置1,即产生地鼠*/
 204   3                              p[temp][1] = showTime;
 205   3                      }
 206   2                      else                           /*该位置已有地鼠,重新产生*/
 207   2                              continue;
 208   2                      i--;
 209   2              }
 210   1      
 211   1      }
 212          
 213          void showbadger(uint p[posNum][2])
 214          {
 215   1              uchar i;
 216   1              uchar showdata;         
 217   1              showdata = 0xff;showbit = 1;       /*显示数据清零*/
 218   1              
 219   1              /*将地鼠所在位置数组-->转换成-->直接输出端口的数据*/
 220   1              for (i = 0;i < posNum-1; i++)
 221   1              {
 222   2                      /*低8位*/
 223   2                      if (p[i][0] == 1 && p[i][1] > 0)
 224   2                              showdata &=~(0x01<<i); 
 225   2              }
 226   1              
 227   1              /*将数据输出,显示地鼠*/
 228   1              showPort = showdata;
 229   1              /*最高位*/
 230   1              if (p[i][0] == 1 && p[i][1] > 0)
 231   1                      showbit = 0;
 232   1      }
 233          
 234          void bashPro(uchar key, uint p[posNum][2])
 235          {
 236   1              uint t;
 237   1              uchar i, l[2];
 238   1              
 239   1              if (key > posNum-1)      /*无按键按下*/
 240   1                      return;
 241   1              
C51 COMPILER V8.05a   BADGERBASH                                                           05/06/2009 21:14:12 PAGE 5   

 242   1              if (p[key][0] == 1)     /*打中地鼠*/
 243   1              {
 244   2                      p[key][0] = 0;      /*地鼠消失*/
 245   2                      p[key][1] = 0;
 246   2                      /*if (setsound == 1)*/
 247   2                      /*beep();             发出声效*/
 248   2                      //right = ~right;
 249   2                      sc += gain;          /*积分增加*/
 250   2                      
 251   2                      /*只有在模式1下,进入新关卡*/
 252   2                      if (set_mod == 1)
 253   2                      {
 254   3                              for (i=0; i< LEVEL; i++)
 255   3                                      if (sc == levelscore[i])
 256   3                                      {
 257   4                                              grade = i + 1;
 258   4                                              setgrade(grade);
 259   4                                              
 260   4                                              l[0] = grade + '0';
 261   4                                              l[1] = '\0';
 262   4                                              
 263   4                                              GotoXY(0,0);
 264   4                                              Print("Level ");
 265   4                                              GotoXY(6,0);
 266   4                                              Print(l);
 267   4                              }
 268   3                      }
 269   2                      /*只有在击中的情况下才刷新LCD*/
 270   2                      score[0] = sc/1000 + '0';
 271   2                      t = sc % 1000;
 272   2                      score[1] = t/100 + '0';
 273   2                      t = t % 100;
 274   2                      score[2] = t/10 + '0';
 275   2                      t = t % 10;
 276   2                      score[3] = t + '0';
 277   2                      score[4] = '\0';
 278   2                      

⌨️ 快捷键说明

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