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

📄 fangkuai.lst

📁 51单片机游戏程序包括图纸
💻 LST
📖 第 1 页 / 共 3 页
字号:
 198   2      
 199   2              y1+=4;
 200   2              for(i=0;i<5;i++)
 201   2               {
 202   3                 Point(x1+i,y1,0); //画第二条横线
 203   3               }
 204   2      
 205   2               for(i=0;i<5;i++)
 206   2               {
 207   3                  Point(x1,y1-i,0); //画第1条坚线
 208   3                }
 209   2      
 210   2               x1+=4;
 211   2              for(i=0;i<5;i++)
 212   2                {
 213   3                   Point(x1,y1-i,0); //画第2条坚线
 214   3                }
 215   2      
 216   2              y1-=4;
 217   2              for(i=0;i<5;i++)
 218   2               {
 219   3                 Point(x1-i,y1+i,0); //画斜线
 220   3               }
 221   2              }
 222   1      }
 223          //////////////////////////////////////////////////////////////////////////
 224          ////////////////左冲突检测//////////////////////////////////////////////
 225          bit Left_Anti()
 226          {
 227   1        uchar i;
 228   1        for(i=0;i<4;i++)
 229   1              {
 230   2                if(Platform[xx+shape[This_shape].point[i].x-1][yy+shape[This_shape].point[i].y]==1) 
 231   2                  return 1;
 232   2              }
 233   1        return 0;
 234   1      }          
 235          
 236          ////////////////右冲突检测///////////////////////////////////////////
 237          bit Right_Anti()
 238          {
 239   1        uchar i;
 240   1        for(i=0;i<4;i++)
 241   1              {
C51 COMPILER V7.01  FANGKUAI                                                               04/27/2007 22:08:22 PAGE 5   

 242   2                if(Platform[xx+shape[This_shape].point[i].x+1][yy+shape[This_shape].point[i].y]==1)
 243   2                  return 1;
 244   2              }                          
 245   1        return 0;
 246   1        
 247   1      }
 248          
 249          ////////////////////////////////////////下冲突检测//////////////////////////
 250          bit Bottom_Anti()
 251          {
 252   1         uchar i;
 253   1         for(i=0;i<4;i++)
 254   1              {
 255   2                if(Platform[xx+shape[This_shape].point[i].x][yy+shape[This_shape].point[i].y+1]==1)
 256   2                  return 1;
 257   2          }
 258   1        return 0;                       
 259   1      }
 260          //////////////////////////////////改变形状时产生的冲突检测////////////////////
 261          bit Change_Shape_Anti()
 262          {
 263   1         uchar i;
 264   1         for(i=0;i<4;i++)
 265   1              {
 266   2                if(Platform[xx+shape[shape[This_shape].next].point[i].x][yy+shape[shape[This_shape].next].point[i].y]==
             -1)
 267   2                  return 1;      //检测一个形状的冲突情况
 268   2          }
 269   1         return 0;
 270   1      }
 271          //////////////////////////////////产生一个随机数,返回一个随机数///////////////
 272          uchar Random()
 273          {
 274   1        static uchar m;
 275   1        m+=49;
 276   1        return (m%19);
 277   1      }
 278          
 279          //////////////计分函数,参数为 消行行数n///////////////////////////////////////
 280          
 281          void Show_score(uchar n)
 282          {
 283   1        Game_Score=Game_Score+10*n;
 284   1      
 285   1        if(Game_Score<10)
 286   1        {
 287   2           Show_num(13,6,Game_Score%10);              //显示个位
 288   2        }
 289   1        else if(Game_Score<100)
 290   1        {  
 291   2           Show_num(14,6,Game_Score%10);
 292   2               Show_num(13,6,Game_Score/10%100);      //显示个位,十位
 293   2        }
 294   1        else if(Game_Score<1000)
 295   1        {
 296   2           Show_num(14,6,Game_Score%10);
 297   2               Show_num(13,6,Game_Score/10%10);
 298   2               Show_num(12,6,Game_Score/100%10);      //显示个位 ,十位,百位
 299   2        }
 300   1        else
 301   1        {  
 302   2               Show_num(15,6,Game_Score%10);
C51 COMPILER V7.01  FANGKUAI                                                               04/27/2007 22:08:22 PAGE 6   

 303   2               Show_num(14,6,Game_Score/10%10);
 304   2               Show_num(13,6,Game_Score/100%10);      //显示个位 ,十位,百位,千位
 305   2               Show_num(12,6,Game_Score/1000);
 306   2        }
 307   1        
 308   1        if(Game_Score%1000==0)
 309   1        {
 310   2          if(Game_Score>0)
 311   2              {
 312   3             Game_Level++;
 313   3             if(Game_Level==10)
 314   3                 {
 315   4                    Game_Stop=1;
 316   4                    hanzhi(7,5,12,1);  //     输出“太棒了"
 317   4                hanzhi(7,7,13,1);      
 318   4                        hanzhi(7,9,14,1);
 319   4                        
 320   4                 }
 321   3             Show_num(13,11,Game_Level);       //显示水平
 322   3              
 323   3          }
 324   2        }
 325   1      }
 326          
 327          //**************************************************************************
 328          //= 函数原型:void Undisplay_line()
 329          //= 功    能: 消除行
 330          //= 参    数: 无                        
 331          //= 返 回 值: 无
 332          //= 函数性质:私有函数
 333          //= 注    意:
 334          //***************************************************************************   
 335          void UnDisplay_line()
 336          {
 337   1         uchar Del_Line;      //标识要删除的行
 338   1         uchar Del_Line_Num=0;     //标识删除的行数
 339   1         uchar i,j,k;
 340   1         bit HavePoint;                   //标识一行中是否有空白点
 341   1      
 342   1         for(i=0;i<4;i++)
 343   1         {
 344   2            for(j=1;j<13;j++)
 345   2                {
 346   3                   if(Platform[j][yy+i]==0) 
 347   3                          break;                   //如果这一行中有一个为空,则退出这一行的循环
 348   3                       else if(j==12)
 349   3                       {
 350   4                          Del_Line=yy+i;             //确定要删除的行
 351   4                              if(Del_Line<20)
 352   4                              {
 353   5                                 Del_Line_Num++;                 //计算共删除的行数
 354   5                              for(k=1;k<13;k++)
 355   5                              {
 356   6                                  XiaoFengKuai(k,Del_Line,0);         //删除行
 357   6                                      Platform[k][Del_Line]=0;         //平台数据清零
 358   6                              }
 359   5                              while(1)     //下移
 360   5                              {
 361   6                                 HavePoint=0;
 362   6                                 for(k=1;k<13;k++)
 363   6                                 {
 364   7                                    if(Platform[k][Del_Line-1]==1)
C51 COMPILER V7.01  FANGKUAI                                                               04/27/2007 22:08:22 PAGE 7   

 365   7                                        {
 366   8                                           HavePoint=1;            //标识这一行有要下移的点
 367   8                                           XiaoFengKuai(k,Del_Line-1,0);      //删除小方块
 368   8                                               Platform[k][Del_Line-1]=0;         //平台数据清零
 369   8                                               XiaoFengKuai(k,Del_Line,1) ;   //将小方块下移
 370   8                                               Platform[k][Del_Line]=1;         //平台数据置1,表明此位置已被占用
 371   8                                         }
 372   7                                 }
 373   6                                 if(HavePoint==0) break;  //没有要下移的行,退出本循环
 374   6                                 Del_Line--;   //下移上一行
 375   6                              }
 376   5                              }
 377   4                       }
 378   3            }         
 379   2         }
 380   1         if(Del_Line_Num)
 381   1               {
 382   2                  Show_score(Del_Line_Num);     //刷新分数显示
 383   2               }
 384   1      }                           
 385                                     
 386          //**************************************************************************
 387          //= 函数原型:void Show_shape(uchar x1,uchar y1,uchar Tshape,bit mode)
 388          //= 功    能: 显示一个方块形状或删除一个方块形状
 389          //= 参    数: (x1,y1)为显示位置,Tshape为显示的形状,mode=1为显示,mode=0不显示                    
 390          //= 返 回 值:
 391          //= 函数性质:私有函数
 392          //= 注    意:
 393          //*************************************************************************** 
 394          void Show_shape(uchar x1,uchar y1,uchar Tshape,bit mode)
 395          {
 396   1        if(mode==1)
 397   1        {
 398   2      
 399   2           XiaoFengKuai(x1+shape[Tshape].point[0].x,y1+shape[Tshape].point[0].y,1);    //显示形状
 400   2               XiaoFengKuai(x1+shape[Tshape].point[1].x,y1+shape[Tshape].point[1].y,1);
 401   2               XiaoFengKuai(x1+shape[Tshape].point[2].x,y1+shape[Tshape].point[2].y,1);
 402   2               XiaoFengKuai(x1+shape[Tshape].point[3].x,y1+shape[Tshape].point[3].y,1);

⌨️ 快捷键说明

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