久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5224|回復(fù): 0
收起左側(cè)

單片機(jī)16X16點(diǎn)陣飛機(jī)射擊游戲 仿真+源程序

[復(fù)制鏈接]
ID:167138 發(fā)表于 2017-2-28 14:51 | 顯示全部樓層 |閱讀模式
4個(gè)8×8led顯示屏組成的,16X16點(diǎn)陣飛機(jī)射擊游戲帶源碼和仿真,下面是仿真原理圖:

0.png

16X16點(diǎn)陣飛機(jī)射擊游戲單片機(jī)源程序:
  1. /*******************************************************
  2. *******16X16點(diǎn)陣飛機(jī)射擊游戲****************************
  3. ********************************************************
  4. **廣東技術(shù)師范學(xué)院天河學(xué)院-電氣工程系-電氣062班*********
  5. ***************梁宏閣***********************************
  6. *******************************************************/
  7. ////////////////////////////////////////////////////////                                                                                                                          
  8. #include "reg51.h"
  9. #include "absacc.h"
  10. #include "intrins.h"
  11. #include "stdio.h"
  12. ///////////////////
  13. #define DENGFANKAISHIJIAN 30
  14. #define QUDOUDONGSHIJIAN 2
  15. /////////////
  16. sbit P21 =P2^1 ;
  17. sbit P22 =P2^2 ;
  18. sbit P23 =P2^3 ;
  19. sbit P24 =P2^4 ;
  20. #define P00        P0
  21. ////////////////////
  22. sbit A_L =P1^1 ;  //左移動
  23. sbit A_R =P1^2 ;  //右移動
  24. sbit A_F =P1^3 ;  //射擊
  25. sbit A_S =P1^4 ;   //開始/暫停
  26. sbit A_T =P1^5 ;   //退出
  27. ///////////////////////////////////
  28. #define ZUO(a) P00=a;P24=0;P24=1
  29. #define YOU(a) P00=a;P21=0;P21=1
  30. #define SHANG(a)  P00=a;P22=0;P22=1
  31. #define XIA(a)    P00=a;P23=0;P23=1
  32. //////////////////////////////////////////
  33. //////////////////////////////////////////

  34. typedef struct //"飛機(jī)"用結(jié)構(gòu)體統(tǒng)一信息
  35. {
  36.   unsigned char x; //飛機(jī)的X坐標(biāo),最大為9
  37.   unsigned int t; //飛機(jī)頭顯示內(nèi)容
  38.   unsigned int w;//飛機(jī)尾顯示內(nèi)容
  39. } FEIJI;

  40. FEIJI feiji;//定義飛機(jī)變量
  41. ///////////////////////////
  42. idata char GoOrStay ;//狀態(tài)標(biāo)記-1為未開始,0為正在游戲,1為暫停,2為設(shè)置狀態(tài)
  43. idata char TU_Y;//最接近飛機(jī)的Y軸標(biāo)記自向下數(shù),最上層為1,無層時(shí)為0
  44. idata char xuanze;//選擇start為0否為1
  45. idata unsigned char Guan;//關(guān)數(shù)
  46. unsigned char TU[32];//16X16圖像數(shù)組
  47. idata unsigned char time_a=0;
  48. idata unsigned int time_b=0;//定時(shí)器內(nèi)和關(guān)數(shù)有關(guān)的增量
  49. ////////////////////////////////


  50. /*3x5字模*/
  51. unsigned char code S_3X5[10][5]={{0x0e,0x0a,0x0a,0x0a,0x0e}/*0*/,{0x04,0x0c,0x04,0x04,0x04}/*1*/,
  52. {0x0e,0x02,0x0e,0x08,0x0e}/*2*/,{0x0e,0x02,0x0e,0x02,0x0e}/*3*/,{0x0a,0x0a,0x0e,0x02,0x02}/*4*/,
  53. {0x0e,0x08,0x0e,0x02,0x0e}/*5*/,{0x0e,0x08,0x0e,0x0a,0x0e}/*6*/,{0x0e,0x02,0x02,0x02,0x02}/*7*/,
  54. {0x0e,0x0a,0x0e,0x0a,0x0e}/*8*/,{0x0e,0x0a,0x0e,0x02,0x0e}/*9*/,
  55. };
  56. /*start+setup字模*/
  57. unsigned char code start_setup[32]={
  58. 0x1c,0x07,0x09,0x02,0x6a,0xb2,0x8a,0xaa,
  59. 0xeb,0xb2,0x2a,0xaa,0xca,0xaa,0x00,0x00,
  60. 0x03,0x80,0x01,0x06,0x6d,0x55,0x89,0x56,
  61. 0xed,0x54,0x29,0x54,0xcd,0x74,0x00,0x00};
  62. unsigned char code start[32]={
  63. 0x1c,0x07,0x09,0x02,0x6a,0xb2,0x8a,0xaa,
  64. 0xeb,0xb2,0x2a,0xaa,0xca,0xaa,0x00,0x00,
  65. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  66. unsigned char code setup[32]={
  67. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  68. 0x03,0x80,0x01,0x06,0x6d,0x55,0x89,0x56,
  69. 0xed,0x54,0x29,0x54,0xcd,0x74,0x00,0x00};
  70. /*STAY字模*/
  71. unsigned char code stay[32]={
  72. 0x00,0x00,0x1f,0x00,0x04,0x11,0x04,0x0a,
  73. 0x74,0x04,0x84,0xc4,0x85,0x24,0x65,0x24,
  74. 0x15,0x24,0x15,0xe4,0xe5,0x20,0x05,0x20,
  75. 0x01,0x20,0x00,0x00,0x00,0x00,0x00,0x00
  76. };
  77. /*OVER字模*/
  78. unsigned char code over[32]={
  79. 0xaa,0xaa,0xff,0xff,0x00,0x00,0x00,0x06,
  80. 0x05,0x35,0x65,0x45,0x95,0x46,0x95,0x75,
  81. 0x95,0x45,0x65,0x45,0x02,0x35,0x00,0x00,
  82. 0xff,0xff,0x55,0x55,0xff,0xff,0x55,0x55
  83. }  ;
  84. /*WIN字模*/
  85. unsigned char code win[32]={
  86. 0x55,0x55,0xff,0xff,0x00,0x00,0xa9,0x40,
  87. 0x55,0x40,0x55,0x40,0x48,0x80,0x00,0x00,
  88. 0x0a,0xa4,0x0a,0xaa,0x05,0x2a,0x00,0x00,
  89. 0xff,0xff,0x00,0x00,0xff,0xff,0xaa,0xaa
  90. };
  91. ///////////函數(shù)聲明/////////////////////
  92. extern void feijitu(void);        //根據(jù)飛機(jī)的x坐標(biāo)寫出它的頭尾形狀,再給回TU數(shù)組
  93. extern void ZHENGJIAYIXING(void);//增加一行
  94. extern void chuqihua(void);//初始化顯示
  95. extern void DELAY(unsigned int a);         //延時(shí)子函數(shù)a最大為十進(jìn)制65535
  96. //extern unsigned char zhenli(unsigned char a);//整理調(diào)整函數(shù)
  97. extern void dian1616(unsigned char ZZ[]);//16X16顯示主函數(shù)
  98. extern void guanshu(unsigned char n);//將當(dāng)前關(guān)卡加入到數(shù)組
  99. extern void QuDouDong(unsigned int a);//去抖動,同時(shí)顯示
  100. extern void SheJi(void); //射擊調(diào)整函數(shù)
  101. extern void AnNiu_S(void);//判開始暫停按鈕
  102. extern void AnNiu_T(void);//判斷退出按鈕
  103. extern void AnNiu_L(void);//判左移按鈕
  104. extern void AnNiu_R(void);//判右移出按鈕
  105. extern void AnNiu_F(void);//判射擊按鈕
  106. extern void AnNiu(void);//按鈕合集
  107. extern void SHANstart(void);//閃START
  108. extern void SHANsetup(void);//閃SETUP
  109. extern void SHAN( char a);//閃0閃start,1閃setup
  110. extern void winORfail(void);//判斷勝利還是失敗
  111. ///////////////////////////////////////


  112. /////////////////////////以下為顯示一個(gè)16X16/////
  113. void DELAY(unsigned int a)         //延時(shí)子函數(shù)a最大為十進(jìn)制65535
  114. {while(a--)
  115.    ;
  116. }

  117. void dian1616(unsigned char ZZ[])//16X16主函數(shù)
  118. { unsigned char a,b;  //a放行號,b放字在數(shù)組的序號
  119.          if(GoOrStay!=2)
  120.          feijitu();         //加入飛機(jī)位置狀態(tài)
  121.          guanshu(Guan);        //關(guān)數(shù)

  122.    b=0;
  123.   XIA(0x00);                 //不送出下半部分
  124.   for(a=0x01;a!=0;a=(a<<1))          //上半個(gè)字
  125.   {       
  126.      DELAY(50) ;//延時(shí)一小段時(shí)間為看清楚
  127.      ZUO(ZZ[b]) ; //調(diào)調(diào)整函數(shù),送出左
  128.          b++ ;
  129.          YOU(ZZ[b]); //送出右
  130.          b++ ;

  131.     SHANG(a) ;//送出行號

  132.         DELAY(50) ;//延時(shí)一小段時(shí)間為了字型顯示更清楚

  133.             ZUO(0) ;  //消影
  134.                 YOU(0);
  135.   }
  136.     SHANG(0x00);                 //不送出上半部分
  137.   for(a=0x01;a!=0;a=(a<<1))          //下半個(gè)字
  138.   {         DELAY(50) ;//延時(shí)一小段時(shí)間為看清楚
  139.      

  140.      ZUO(ZZ[b]) ; //調(diào)整函數(shù),送出左
  141.          b++ ;
  142.          YOU(ZZ[b]); //送出右
  143.          b++ ;

  144.      XIA(a); //送出行號

  145.          DELAY(50) ;//延時(shí)一小段時(shí)間為了字型顯示更清楚

  146.                   ZUO(0) ; //消影
  147.                   YOU(0);
  148.   }   
  149. }
  150. //////////////////以上為顯示一個(gè)16X16////
  151. void ZHENGJIAYIXING(void)//增加一行
  152. {
  153.   char a;
  154.   for(a=15;a>-1;a--)
  155.   {        TU[2*(a+1)]=TU[2*a];
  156.     TU[2*(a+1)+1]=((TU[2*a+1]&0xe0)|(TU[2*(a+1)+1]&0x3f)); //保留信息狀態(tài)區(qū)的內(nèi)容
  157.   }
  158.    TU[0]=0xff;        //補(bǔ)上第0行顯示內(nèi)容
  159.    TU[1]=(0xe0|(TU[1]&0x3f)); //保留信息狀態(tài)區(qū)的內(nèi)容


  160.              TU_Y=(TU_Y+1);
  161. }
  162. ////
  163. void feijitu(void) //根據(jù)飛機(jī)的x坐標(biāo),寫出它的頭尾形態(tài),并再其給回TU數(shù)組
  164. {
  165.   unsigned char a;
  166.    feiji.t=0x8000;
  167.   for(a=0;a<feiji.x;a++)
  168.   {
  169.          feiji.t>>=1;  //右移一位
  170.   }

  171.    feiji.w=(((feiji.t|(feiji.t>>1)&0xffe0)|(feiji.t<<1))&0xffe0);        //尾顯示形態(tài)

  172.    feiji.t=(feiji.t&0xffe0)|((unsigned int)(0x20|(TU[29]&0x3f))); //保留信息狀態(tài)區(qū)的內(nèi)容
  173.    feiji.w=(feiji.w&0xffe0)|((unsigned int)(0x20|(TU[31]&0x3f))); //保留信息狀態(tài)區(qū)的內(nèi)容

  174.    TU[28]=(unsigned char)(feiji.t>>8);
  175.    TU[29]=(unsigned char)feiji.t;
  176.    TU[30]=(unsigned char)(feiji.w>>8);
  177.    TU[31]=(unsigned char)feiji.w;
  178. }
  179. ///
  180. void guanshu(unsigned char n) //將當(dāng)前關(guān)卡加入到數(shù)組
  181. {
  182.   char a;
  183.   if(n<10)
  184.   {
  185.   for(a=2;a<7;a++)
  186.   {
  187.          TU[2*a+1]=(TU[2*a+1]&0xe0)|S_3X5[n][a-2];
  188.   }
  189.   }
  190. }
  191. ///////////////////////////
  192. void SHANstart(void)   //閃start
  193. {          char a;
  194.         a=15;
  195.            while(a--)
  196.            {
  197.    dian1616(setup); //顯示
  198.      AnNiu();
  199.    }
  200.                   a=15;
  201.                 while(a--)
  202.         { dian1616(start_setup); //顯示
  203.           AnNiu();
  204.         }
  205. }
  206. //
  207. void SHANsetup(void)  //閃setup
  208. {          char a;
  209.         a=15;
  210.            while(a--)
  211.            {
  212.    dian1616(start); //顯示
  213.            AnNiu();
  214.    }
  215.                   a=15;
  216.                 while(a--)
  217.                 {
  218.          dian1616(start_setup); //顯示
  219.          AnNiu();
  220.          }
  221. }
  222. //
  223. void SHAN( char a)//a決定0閃start,1閃setup
  224. {
  225. if(a==0)
  226. SHANstart();
  227. else
  228. SHANsetup();
  229. }
  230. /////////////////////////////////
  231. void QuDouDong(unsigned int a)//去抖動,同時(shí)顯示
  232. {  
  233.    while(a--)
  234.    {
  235.    if(GoOrStay!=2)
  236.    feijitu();   //加入飛機(jī)位置狀態(tài)
  237.    guanshu(Guan);//加入顯示關(guān)數(shù)
  238.    dian1616(TU); //16x16點(diǎn)陣顯示
  239.    }
  240. }
  241. ///////
  242. void AnNiu_S(void)//判開始按鈕
  243. {  
  244.         unsigned int n;//超時(shí)退出變量
  245.          A_S=1;
  246.         if(A_S==0)
  247.         {
  248.          A_S=1;
  249.          QuDouDong(QUDOUDONGSHIJIAN);//去抖動
  250.          if(A_S==0)
  251.          {
  252.          if(xuanze==0)//如為開始
  253.          {
  254.          if(GoOrStay==-1)
  255.          
  256.                 GoOrStay=0;//標(biāo)記為開始
  257.                 else
  258.                 {
  259.                 if(GoOrStay==0)
  260.                   GoOrStay=1;//如果已開始則暫停
  261.                   else
  262.                  if(GoOrStay==1)
  263.                   {GoOrStay=0;//如果已暫停則開始
  264.                   }
  265.                 }
  266.        
  267.         }
  268.          if(GoOrStay==2)//如為設(shè)置
  269.          {        GoOrStay=-1;//標(biāo)記為未開始
  270.             xuanze=0;
  271.          }
  272.         if(xuanze==1)//如為選擇
  273.                  GoOrStay=2;         
  274.                
  275.                         //等手放開
  276.         n=DENGFANKAISHIJIAN;
  277.         while(A_S==0)
  278.         {
  279.         A_S=1;
  280.         dian1616(TU); //顯示
  281.         n--;
  282.         if(n==0)
  283.         break;//按鈕超時(shí)退出
  284.         }
  285.         }
  286.   }
  287. }
  288. ////
  289. void AnNiu_L(void)//左按鈕
  290. {
  291.   unsigned int n;//超時(shí)變量
  292.   A_L=1;
  293. if(A_L==0)
  294.   {
  295.    A_L=1;
  296.    QuDouDong(QUDOUDONGSHIJIAN);        //去抖動
  297.            if(A_L==0)        //確認(rèn)進(jìn)入
  298.         {
  299.          if(GoOrStay==0)//如果正在游戲則用左右功能
  300.          {
  301.          if(feiji.x==0)//如果是最左則去最右
  302.          {
  303.            feiji.x=9;
  304.          }
  305.          else
  306.          {
  307.          feiji.x--;//沿x軸左移
  308.          }

  309.         }
  310.         if(GoOrStay==-1)//如果未開始則為上下選擇功能
  311.         {
  312.           if(xuanze==0)
  313.           xuanze=1;
  314.           else
  315.           xuanze=0;
  316.         }
  317.         if(GoOrStay==2)//如果為設(shè)置則選擇關(guān)數(shù)
  318.          {
  319.           if(Guan==9)
  320.            Guan=0;
  321.            else
  322.            Guan++;
  323.          }
  324.                          //等手放開
  325.         n=DENGFANKAISHIJIAN;
  326.         while(A_L==0)
  327.         {
  328.         A_L=1;
  329.         dian1616(TU); //顯示
  330.         n--;
  331.         if(n==0)
  332.         break;//按鈕超時(shí)退出
  333.         }
  334.         }//
  335.   }
  336. }
  337. ///
  338.   ////
  339. void AnNiu_R(void)//右按鈕
  340. {
  341.   unsigned int n;//超時(shí)變量
  342.   A_R=1;
  343. if(A_R==0)
  344.   {
  345.    A_R=1;
  346.    QuDouDong(QUDOUDONGSHIJIAN);        //去抖動
  347.            if(A_R==0)        //確認(rèn)進(jìn)入
  348.         {
  349.          if(GoOrStay==0)//如果正在游戲則用左右功能
  350.          {
  351.          if(feiji.x==9)//如果是最右則去最左
  352.          {
  353.            feiji.x=0;
  354.          }
  355.          else
  356.          {
  357.          feiji.x++;//沿x軸右移
  358.          }

  359.         }
  360.         if(GoOrStay==-1)//如果未開始則為上下選擇功能
  361.         {
  362.           if(xuanze==0)
  363.           xuanze=1;
  364.           else
  365.           xuanze=0;
  366.         }
  367.          if(GoOrStay==2)//如果為設(shè)置則選擇關(guān)數(shù)
  368.          {
  369.           if(Guan==0)
  370.            Guan=9;
  371.            else
  372.            Guan--;
  373.          }
  374.                          //等手放開
  375.         n=DENGFANKAISHIJIAN;
  376.         while(A_R==0)
  377.         {
  378.         A_R=1;
  379.         dian1616(TU); //顯示
  380.         n--;
  381.         if(n==0)
  382.         break;//按鈕超時(shí)退出
  383.         }
  384.         }//
  385.   }
  386. }
  387. ///
  388. //////
  389. void AnNiu_T(void)//退出
  390. {
  391. unsigned int n;
  392. A_T=1;
  393. if(A_T==0)
  394. {
  395.    A_T=1;
  396.    if(A_T==0)
  397.    {
  398.         A_T=1;
  399.         QuDouDong(QUDOUDONGSHIJIAN);//去抖動
  400.         if(A_T==0)
  401.         {
  402.       chuqihua();    //初始化


  403.          //等手放開
  404.         n=DENGFANKAISHIJIAN;
  405.         while(A_T==0)
  406.         {
  407.         A_T=1;
  408.         dian1616(TU); //顯示
  409.         n--;
  410.         if(n==0)
  411.         break;//按鈕超時(shí)退出
  412.         }
  413.         }
  414.    }
  415. }
  416. }
  417. ///
  418. ///
  419. void SheJi(void) //射擊調(diào)整函數(shù)
  420. {  idata char y;
  421.    
  422.    y=TU_Y;
  423.   
  424.   if(y!=0)
  425.   {

  426.    if(feiji.x<8)//找出最凹的y坐標(biāo)
  427.     {          //在左半面找
  428.            for(;((~TU[2*(y-1)])&(0X80>>feiji.x))==((unsigned char)(feiji.t>>8));y--)
  429.            ;
  430.         }
  431.                  else
  432.         {         //在右半面找
  433.            for(;((~TU[2*(y-1)+1])&(0X80>>(feiji.x-8)))==((unsigned char)(feiji.t&0xc0));y--)
  434.                ;
  435.        
  436.          }
  437.    TU[2*(y-1)]=(unsigned char)((~(feiji.t>>8))&TU[2*(y-1)]);
  438.    TU[2*(y-1)+1]=(unsigned char)(~((feiji.t)&0x00c0)&TU[2*(y-1)+1]);
  439.   
  440.   if((TU[2*(TU_Y-1)]==0)&&((TU[2*(TU_Y-1)+1]&0xc0)==0))
  441.    {TU_Y--;
  442.             
  443.    }
  444.    }
  445.            dian1616(TU); //顯示
  446. }
  447. void AnNiu_F(void)//判射擊按鈕
  448. {        unsigned int n;
  449.         A_F=1;
  450.   if(A_F==0)
  451.   {
  452.    A_F=1;
  453.    QuDouDong(QUDOUDONGSHIJIAN);//去抖動
  454.    if(A_F==0)
  455.    {
  456.     if(GoOrStay==0)
  457.     SheJi();//射擊調(diào)整函數(shù)

  458.            //等手放開
  459.         n=2; //射擊鍵超時(shí)少一點(diǎn)
  460.         while(A_F==0)
  461.         {
  462.         A_F=1;
  463.         dian1616(TU); //顯示
  464.         n--;
  465.         if(n==0)
  466.         break;//按鈕超時(shí)退出
  467.         }
  468.    }
  469.   }
  470. }
  471. void AnNiu(void)  //按鈕實(shí)現(xiàn)
  472. {
  473.    AnNiu_S() ;//判開始暫停
  474.    AnNiu_L() ;//判斷左按鈕
  475.    AnNiu_R() ;         //判斷右按鈕
  476.    AnNiu_F() ;         //判斷射擊
  477.    AnNiu_T() ;//判斷退出
  478.   
  479. }
  480. ////
  481. void FAIL(void)        //失敗畫面
  482. {
  483. idata unsigned int n;
  484. n=300;
  485. while(n--)
  486.   dian1616(over);
  487.   chuqihua();//初始化
  488. }       
  489. void WINN(void)//勝利
  490. {

  491. idata unsigned int n;
  492. n=300;
  493. while(n--)
  494. dian1616(win);
  495. chuqihua(); //初始化
  496. }

  497. void winORfail(void)//判斷勝利還是失敗
  498. {
  499.   if(Guan>9)//10關(guān)全過勝利
  500.    WINN();//勝利畫面
  501.   else  
  502.   if(TU_Y>14)
  503.    FAIL();
  504.   
  505. }
  506. ////
  507. void SheZhi(void)//設(shè)置畫面
  508. {
  509.   TU[30]=TU[28]=0xff;//去掉飛機(jī)圖形
  510.   TU[29]|=0XC0;
  511.   TU[31]|=0XC0;
  512.   
  513. guanshu(Guan);
  514. while(GoOrStay==2)
  515. {
  516. dian1616(TU); //顯示
  517. AnNiu();
  518. }
  519. }
  520. //////菜單////
  521. void caidan(void)  
  522. {
  523.         while(GoOrStay==-1|GoOrStay==2)//如果還沒開始
  524.          {
  525.          if(GoOrStay==-1)
  526.    SHAN(xuanze);//選擇畫面
  527.      if(GoOrStay==2)
  528.             SheZhi();//設(shè)置畫面   
  529.          }
  530. }
  531. ///////////////////////////////////////////
  532. void TIME1(void) interrupt 3 //定時(shí)器1
  533. { TH1=0X3C;
  534.   TL1=0XB0;//定時(shí)器初值
  535.   EA=0;
  536.   P3=0XF0;       
  537.          
  538.    //定時(shí)器處理
  539.    time_a++;
  540.    if(time_a==(40-Guan*2))
  541.         {
  542.         ZHENGJIAYIXING();
  543.         time_a=0;}

  544.    time_b++;
  545.    if(time_b==1200)
  546.    {Guan++;
  547.    time_b=0;
  548.    }
  549.    EA=1;
  550.   TR1=1;
  551.    TF1=0;
  552. }
  553. //定時(shí)器初始化
  554. void dishiqi(void)
  555. {
  556.   TMOD=0X10;//定時(shí)器工作方式1
  557.   TH1=0X3C;
  558.   TL1=0XB0;//定時(shí)器初值
  559.   ET1=1;
  560.   EA=1;
  561.   TF1=0;
  562.   TR1=0;//關(guān)定時(shí)器
  563. }
  564. ////////////////////初始化//////////////////
  565. void chuqihua(void)//初始顯示內(nèi)容為0
  566. {
  567. idata char a;
  568. dishiqi() ;//定時(shí)器初始化
  569. for(a=0;a<32;a++)
  570. TU[a]=0x0;
  571. TU_Y=0;
  572. A_L =1 ;  //左移動
  573. A_R =1 ;  //右移動
  574. A_F =1 ;  //射擊
  575. A_S =1 ;   //開始/暫停
  576. A_T =1 ; //退出
  577. P21=1;P22=1;P23=1;P24=1;


  578. for(a=0;a<16;a++)//畫上邊
  579. {
  580. TU[2*a+1]|=0x20;
  581. }
  582. ZHENGJIAYIXING(); //加一層

  583.    feiji.x=5;  //初始飛機(jī)位置
  584.    GoOrStay=-1; //置狀態(tài)標(biāo)記為未開始
  585.    Guan=0;//初始關(guān)卡為0
  586.    
  587.    xuanze=0;

  588. }
  589. /////////////////////////////////


  590.        
  591. void main()           //程序主函數(shù)
  592. {
  593.    chuqihua();//初始化
  594.    while(1)
  595.    {
  596.            if(GoOrStay==-1)
  597.           caidan();
  598.     AnNiu(); //按鈕         
  599.         if(GoOrStay==0)
  600.    {dian1616(TU); //顯示
  601.            TR1=1;//游戲時(shí)開定時(shí)器
  602.    }
  603.               winORfail();//判斷是否勝利
  604.    if(GoOrStay==1)        //暫停
  605.     {dian1616(stay);
  606.          TR1=0;//關(guān)定時(shí)器
  607.         }
  608.    }
  609. }          
復(fù)制代碼

0.png
仿真工程文件和程序源碼下載:
16X16點(diǎn)陣飛機(jī)射擊游戲.rar (29.01 KB, 下載次數(shù): 69)

評分

參與人數(shù) 2黑幣 +35 收起 理由
INVIO + 30 很給力!
y2567974171 + 5

查看全部評分

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区欧美 | 日韩精品一区二区三区免费视频 | 亚洲人在线 | 天天爽网站 | 国产一区二区美女 | 女人一区 | 日韩成人一区 | 精品久久视频 | 一级高清 | h视频免费在线观看 | 亚洲精品久久 | 国产精品久久久久久一区二区三区 | 欧美成人免费在线 | 国产欧美一区二区三区在线看蜜臀 | 国产精品99视频 | 久久精品国产一区二区电影 | 亚洲视频一区二区三区 | 久久久久久亚洲精品不卡 | 色婷婷国产精品 | 成人在线免费观看视频 | 久久国产精品视频 | 免费观看的av毛片的网站 | 毛片一级片| 精品久久久久久久久久久久久久 | 欧美男男videos | 男人的天堂亚洲 | 成人在线视频免费观看 | 看一级毛片视频 | 精品国产免费人成在线观看 | 亚洲欧美在线视频 | 美女在线观看国产 | 欧美一级免费片 | 欧美一级片 | 欧美亚洲在线视频 | 亚洲精品18 | 日韩av第一页 | 亚洲成人精品在线观看 | 日韩三级免费观看 | 日韩中文字幕一区二区 | 97超碰站| 狠狠ri|