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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5948|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機16x16點陣俄羅斯方塊程序 帶詳細注釋

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:633559 發(fā)表于 2020-1-21 20:10 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
一年前做的小玩意了,硬件丟失了,程序還在,以前都是寫在一個文件內(nèi),翻出來分成幾個文件,程序注釋寫的很詳細,希望對初入單片機的師兄有所幫助

單片機源程序如下:
  1. //=========================================================================================================================================
  2. //軟件功能:俄羅斯方塊
  3. //硬件描述:最小系統(tǒng)+4x(8x8點陣)+ (1x(HC154)+3x(74HC14D)) + 1x(HC595)
  4. //程序描述:74595.c中有串進并出程序
  5. //          delay.c中有延遲函數(shù)
  6. //          dispaly.c中有開始畫面顯示函數(shù)、點陣顯示函數(shù)、數(shù)碼管顯示函數(shù)
  7. //          random.c中有隨機圖案緩存函數(shù)
  8. //          anjian.c中按鍵函數(shù)、圖案觸底函數(shù)、消行函數(shù)、旋轉(zhuǎn)圖案數(shù)據(jù)改變函數(shù)、顯示清除函數(shù)
  9. //          timinit.c中中斷初始化函數(shù)
  10. //功能概括描述:16x16點陣用于顯示、5個按鍵有旋轉(zhuǎn)按鍵、上、下、左、右按鍵、數(shù)碼管用于顯示得分
  11. //              上按鍵用于開始游戲鍵、下按鍵用于圖案加速下落鍵、左、右按鍵用于圖案左右移動
  12. //              有圖案觸底判斷、圖案左右碰壁判斷、消行判斷
  13. //=========================================================================================================================================
  14. #include "reg52.h"                                                 //52頭文件
  15. #include "stdlib.h"                                                 //隨機函數(shù)rand()調(diào)用頭文件
  16. #include "74595.h"                   //74HC595使用所需
  17. #include "delay.h"
  18. #include "display.h"
  19. #include "random.h"
  20. #include "anjian.h"
  21. #include "timinit.h"
  22. #define uchar unsigned char                 
  23. #define uint unsigned int
  24. sbit KS=P3^4;                                                                                                                //下鍵
  25. //sbit BEEP=P2^7;                                                                                                      //蜂鳴器
  26. uchar code DUANMA[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};                //數(shù)碼管顯示0~9,0xff不顯示;
  27. uint code KAITOU[3][8]={{0x3c10,0x2820,0x3bfc,0x2480,0x2520,0x3bfc,0x2020,0x20a8},            //陳發(fā)兩字;
  28.                         {0x2124,0x2020,0x2060,0x2020,0x0000,0x0000,0x0210,0x0428},
  29.                                                 {0x0844,0x1080,0x3ffc,0x03f0,0x04a0,0x0840,0x10a0,0x2110}};
  30. uint HUANCUN[16],CUN[16],XZA[4],KKK;                                                                                                                            //顯示數(shù)組HUANCUN[16],存儲隨機圖案數(shù)組CUN[16]
  31. uchar q,n,k,m=1,x=0,t=0,JILV=1,a=0,ZUOJIA=7,G=7,XUANZUAN=0,R=0;                                                               //ZUOJIA對應(yīng)16*16的豎,左到右編號為0~15
  32. //=========================================================================================================================================                                                                                                                                 
  33. void main()                                                                        //主函數(shù)
  34. {
  35.         init();                                                                          //初始化
  36.         KT();                                                                                  //開頭顯示啟動游戲界面
  37.         while(1)
  38.         {
  39.                 a=rand()%6;                                                        //隨機數(shù)0~5
  40.                 XIANSI();                                                                //點陣顯示函數(shù)
  41.                 if(TR0==0){                                                        //判斷定時器是否關(guān)著           
  42.                         SMG();                                                                //數(shù)碼管顯示函數(shù)
  43.                         if(KEY==0){                                                //如果開始鍵按下        
  44.                           QC_HC();                                          //清除緩存顯示函數(shù)
  45.                           KKK=0;                                                  //分數(shù)清零
  46.                           TR0=1;                                                  //啟動定時器
  47.                         }        
  48.                 }                  
  49.   }
  50. }
  51. //=========================================================================================================================================
  52. //變量說明:t:用于計時,配合向下按鍵的判斷,來決定圖案的下落速度
  53. //          CBN:圖案下落速度變量
  54. //          x,m,JILV:初始狀態(tài)m=JILV=1,x=0(x是HUANCUN[]里的數(shù)據(jù)編號,從0開始)
  55. //程序描述:先忽略按鍵部分,理順開始按鍵(KEY)按下后的整個流程
  56. //          判斷定時時間CBN與t的值是否相等,到時間先判斷圖案還能不能下落,既觸底(m=JILV),如果沒觸底清除當(dāng)前圖案,顯示下落一行后的圖案
  57. //          初始狀態(tài)是m=JILV=1,會先運行一次XH();和AJ_PD();
  58. //          添加按鍵功能,首先調(diào)用按鍵函數(shù)ANJIAN();        
  59. //          如果按鍵有變化那么ZUOJIA和XUANZUAN都將發(fā)生改變,此時不管t為何值都要執(zhí)行相應(yīng)程序
  60. //          根據(jù)ZUOJIA的改變來變動CUN[]的圖案數(shù)據(jù)
  61. //          如果CUN[]改變,要從新調(diào)用AJ_PD();求JILV的值
  62. //          如果旋轉(zhuǎn)按鍵狀態(tài)XUANZUAN改變,變動CUN[]里的數(shù)據(jù),判斷此時的圖案會不會與原來的“積木”重疊,如果重疊,CUN[]變回原來的數(shù)據(jù),AJ_PD();重新調(diào)用
  63. //=========================================================================================================================================        
  64. void timer() interrupt 1
  65. {                                                                                          
  66.         static uchar CBN;                                                           //定義變量CBN用于控制圖案下落的速度
  67.         TH0=(65536-5000)/256;                                     //定時器初始化
  68.         TL0=(65536-5000)%256;
  69.         t++;                                                                             //計時(t)累加
  70.         ANJIAN();                                                                                           //調(diào)用按鍵子程序
  71.         if(KS==0){                                                           //判斷向下按鍵(KS)有沒有按         
  72.           if(t>30)t=0;                                                       //如果計時(t)大于30,t清零重新開始計時
  73.           CBN=20;                                                                                           //減短圖案下落的時間
  74.         }else
  75.            CBN=80;                                                                                   //圖案平時下落速度
  76. /*----------------------------------------------------------------------------------------------------------------------------------------*/
  77.         if((t==CBN)||(ZUOJIA!=G)||(XUANZUAN!=R)){           //計時(t)到了所設(shè)定的時間“或”左右和旋轉(zhuǎn)按鍵三鍵中的一個按了一下
  78.           if(m==JILV){                                                                               //如果圖案下落到預(yù)先掃描的指定行           
  79.             x=0;                                                                                           //各種變量初始化
  80.                   m=1;
  81.                   G=7;
  82.                   R=0;
  83.                   JILV=1;
  84.                   ZUOJIA=7;
  85.                   XUANZUAN=0;
  86.                   XIAOHAN();                                                                               //調(diào)用消行子程序
  87.                 /*---------------------------------------------------------------------------------*/
  88.                         if(HUANCUN[0]!=0x0000){                                                 //點陣頂部是否亮起,如果亮起表示該結(jié)束了            
  89.               QC_HC();                                                                          //清除緩存
  90.               HUANCUN[2]=0x0ff0;                                             //結(jié)束顯示笑臉圖案
  91.               HUANCUN[3]=0x1008;
  92.                       HUANCUN[4]=0x2424;
  93.                      HUANCUN[5]=0x2a54;
  94.                      HUANCUN[6]=0x2004;
  95.                      HUANCUN[7]=0x2004;
  96.                      HUANCUN[8]=0x2004;
  97.                      HUANCUN[9]=0x2004;
  98.                       HUANCUN[10]=0x2244;
  99.                      HUANCUN[11]=0x2184;
  100.                     HUANCUN[12]=0x1008;
  101.                      HUANCUN[13]=0x0ff0;
  102.               TR0=0;                                                                                 //定時器關(guān)閉
  103.                     return;                                                                                 //跳出中斷
  104.             }
  105.                 /*---------------------------------------------------------------------------------*/
  106.                   XH();                                                                                           //圖案對應(yīng)數(shù)組
  107.                   AJ_PD();                                                                                 //從上至下行掃描得到指定行變量(JILV)
  108.           }else{                                                                                                 //如果圖案還在下落                                                                  
  109.              m--;                                                                                           //變量(m)控制圖案數(shù)組與緩存數(shù)組的數(shù)據(jù)運算
  110.                    x=m-1;                                                                                   //緩存變量(x)返回上個圖案值         
  111.                    for(n=0;n<m;n++){   
  112.                      HUANCUN[x]&=(~CUN[n]);                                         //上個圖案清除
  113.                      x--;
  114.              }
  115.                    x=m;                                                                                           //緩存變量(x)加一為下個圖案顯示做準備
  116.              m++;
  117.            }
  118.         /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
  119.     if(ZUOJIA!=G){                                                                      //如果左右鍵狀態(tài)發(fā)生一次改變           
  120.                   for(n=0;n<16;n++){        
  121.                     if(ZUOJIA>G){                                                              //如果是右鍵發(fā)生的變動               
  122.                             CUN[n]>>=1;
  123.                           }else
  124.                                    CUN[n]<<=1;
  125.                   }
  126.                   AJ_PD();                                                                                //重新掃描求JILV
  127.                   x--;
  128.                   m--;
  129.                   G=ZUOJIA;
  130.           }
  131.           if(XUANZUAN!=R){                                                                    //旋轉(zhuǎn)鍵狀態(tài)改變一次   
  132.             x--;
  133.                   m--;
  134.                   XH();                                                                                          //調(diào)用XH()子程序,為了顯示旋轉(zhuǎn)后的圖案,注意:這時圖案是在正中間,即ZUOJIA=7的位置
  135.                   HPP();                                                                      //調(diào)用旋轉(zhuǎn)子程序
  136.                   for(n=0;n<m;n++){     
  137.                     if(CUN[n]!=0){                  
  138.                       if((HUANCUN[x]&CUN[n])!=0){                            //如果旋轉(zhuǎn)后的圖案會和已存在圖案重合               
  139.                               if(XUANZUAN==0)XUANZUAN=4;                    //4種旋轉(zhuǎn)圖案對應(yīng)狀態(tài)值改回未變圖案前的狀態(tài)
  140.                           else XUANZUAN--;
  141.                               for(n=0;n<4;n++){                                                //圖案也要變回去              
  142.                           CUN[n]=XZA[n];
  143.                         }
  144.                               break;
  145.                             }
  146.                     }
  147.                     x--;
  148.             }
  149.                   AJ_PD();                                                                      //調(diào)用掃描子程序,求新的JILV
  150.             x=m-1;
  151.                   R=XUANZUAN;                                                              //把旋轉(zhuǎn)圖案狀態(tài)值賦值給變量R,只有旋轉(zhuǎn)按鈕再次按下,才會再進來
  152.           }
  153.         /*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
  154.           for(n=0;n<m;n++){                                                        
  155.                   HUANCUN[x]|=CUN[n];                                          //把將要顯示的圖案對應(yīng)的數(shù)組送入緩存數(shù)組
  156.                   x--;
  157.           }
  158.           m++;
  159.           t=0;                            //計時變量清零
  160.         }
  161. }
  162. //=========================================================================================================================================        
復(fù)制代碼
  1. #include "anjian.h"
  2. //=========================================================================================================================================
  3. extern uchar XUANZUAN,ZUOJIA,JILV,m,n,x,k,G;
  4. extern uint HUANCUN[16],CUN[16],XZA[4],KKK;
  5. //=========================================================================================================================================
  6. //程序描述:判斷右鍵(YOU)按下否?
  7. //          先把圖案對應(yīng)豎位置的狀態(tài)變量ZUOJIA改變,再判斷圖案可不可以移動,如果不可以ZUOJIA改回來
  8. //          m,x確實有點繞
  9. //          左鍵同上
  10. //          旋轉(zhuǎn)按鍵按下,改變圖案狀態(tài)變量XUANZUAN,保存當(dāng)前圖案CUN[]到XZA[]
  11. //=========================================================================================================================================
  12. void ANJIAN()                                                                                                                                                                                                   //按鍵子程序
  13. {
  14.   static uchar i=1,s=1,j=1;                                                                                                                                                             //定義三個靜態(tài)變量i,s,j表示右,左,旋轉(zhuǎn)按鍵的狀態(tài)值
  15.   if(YOU!=s){                                                                                                                                                                                                                                                                                                                    //如果右鍵狀態(tài)值發(fā)生改變   
  16.           if(s!=0){                                                                                                                                                                                                                                                                                                                    //判斷狀態(tài)值是否為0,如果不是,說明右鍵按下了
  17.             ZUOJIA++;                                                                                                                                                                                                                                                                                                            //圖案未動,圖案對應(yīng)豎的狀態(tài)值先加一
  18.                         m--;                                                                                                                                                                                                                                                                                                                      //x,m數(shù)組間交換變化所定義的變量
  19.                   x=m-1;
  20.                   for(n=0;n<m;n++){                                    
  21.                           if(CUN[n]!=0){                                                                                                                                                                                                                                                                                   //如果CUN[n]為0,就不用浪費時間判斷什么了
  22.                             if(((HUANCUN[x]&((CUN[n]|(CUN[n]/2))-CUN[n]))!=0)||((CUN[n]&0x0001)!=0)){                                   //CUN[n]/2右移一位                                                                                                                                                                                                                                                                                                                                                                        
  23.                                     m++;                                                                                                                                                                                                                                                                                                           //CUN[n]|(CUN[n]/2)右移一位后和之前的數(shù)或,(CUN[n]|(CUN[n]/2))-CUN[n]或了的數(shù)再減去最開始的數(shù),就是右移后的圖案
  24.                                     ZUOJIA--;                                                                                                                                                                                                                                                                                     //HUANCUN[x]&((CUN[n]|(CUN[n]/2))-CUN[n])!=0上面的數(shù)再和顯示數(shù)組里的數(shù)與,判斷運算后的數(shù)是否為0
  25.                                      s=YOU;                                                                                                                                                                                                                                                                                                   //上面的運算就是判斷”圖案向右移動是否會碰到已經(jīng)存在的圖案“
  26.                                     return;                                                                                                                                                                                                                                                                                                   //(CUN[n]&0x0001)!=0這句判斷圖案有沒有碰到右邊的邊界
  27.                             }                                                                                                                                                                                                                                                                                                                                   //m++;ZUOJIA--;進入if說明圖案不能變,那么前面改變的值都要改回來,s=YOU;既然程序要跳出來了,按鍵的狀態(tài)值也要改變的,防止又進來了
  28.                           }
  29.                           x--;
  30.                   }         
  31.             x=m;
  32.             m++;
  33.           }
  34.           s=YOU;
  35.         }
  36.   if(ZUO!=i){                                                                                                                                                                                                              //左鍵類同右鍵   
  37.           if(i!=0){
  38.             ZUOJIA--;
  39.                   m--;
  40.       x=m-1;
  41.                   for(n=0;n<m;n++){                                    
  42.                           if(CUN[n]!=0){
  43.                             if(((HUANCUN[x]&((CUN[n]|(CUN[n]<<1))-CUN[n]))!=0)||(CUN[n]>=0x8000)){
  44.                                     m++;
  45.                                     ZUOJIA++;
  46.                                      i=ZUO;
  47.                                     return;
  48.                             }
  49.                           }
  50.                           x--;
  51.                   }
  52.             x=n;
  53.             m++;
  54.           }
  55.           i=ZUO;
  56.   }
  57.         if(XZ!=j){                                                                                                                                                                         //旋轉(zhuǎn)按鍵
  58.           if(j!=0){
  59.             XUANZUAN=(XUANZUAN+1)%4;                                                                                                                         //如果旋轉(zhuǎn)按鍵按下了,這里4種圖案是按逆時針變化
  60.                   for(n=0;n<4;n++){
  61.                     XZA[n]=CUN[n];                                                                                                                                             //圖案先保存在數(shù)組XZA[]中
  62.                   }   
  63.           }
  64.           j=XZ;
  65.         }
  66. }
  67. //=========================================================================================================================================
  68. //思維說明:在XH()程序中知道圖案細分成15種,目的是要寫一個程序讓這15種圖案下落后碰到下面的"積木"停下來(記下這一行的編號存在變量JILV里)
  69. //程序描述:圖案保存在數(shù)組CUN[]中,CUN[0]是圖案的底部,CUN[1]是圖案中部,CUN[2]是圖案上部,CUN[3]可以不作考慮
  70. //          16x16點陣有16行,以圖案當(dāng)前在點陣處在的位置開始與點陣已經(jīng)存在“積木”做運算,判斷再下落是否會重疊
  71. //          首先,判斷CUN[0]是否觸底了,即,(HUANCUN[n]&CUN[0])!=0
  72. //          其次,判斷CUN[1]是否觸底了,(CUN[1]|CUN[0])-CUN[0]這是取CUN[1]和CUN[0]在垂直方向上沒有重合的部分
  73. //          最后,判斷CUN[2]是否觸底了,這種情況只有一種圖案會發(fā)生
  74. //          總結(jié),一種圖案出現(xiàn)改變也好,都要調(diào)用這個函數(shù)找出觸底位置
  75. //                當(dāng)n>1后,運行一次for就判斷一個圖案分成3段的觸底情況
  76. //=========================================================================================================================================
  77. void AJ_PD()                                                                                                                                                                                                                                    //從上至下行掃描得到指定行變量(JILV)子程序
  78. {   
  79.         for(n=m-1;n<16;n++){                                                                                                                                                                                       //掃描緩存數(shù)組
  80.           if((HUANCUN[n]&CUN[0])!=0) break;                                                                                                                                    //如果圖案底層觸底,跳出掃描                                 
  81.             else
  82.               if((n>0)&&((HUANCUN[n-1]&((CUN[1]|CUN[0])-CUN[0]))!=0)) break;  //否則,圖案底層上面層觸底,跳出掃描
  83.                 if((n>1)&&((HUANCUN[n-2]&((CUN[2]|CUN[1])-CUN[1]))!=0)) break;      //圖案底層上面層的上面層觸底,跳出掃描                  
  84.   }
  85.         JILV=n+1;                                                                                                                                                                                  //記錄JILV                                                                                                           
  86. }
  87. //=========================================================================================================================================
  88. //我看到一個教程里說不要在for(i=0;i<6;i++)里面改變變量(i)的值,但我不知道會出什么問題
  89. //程序描述:從點陣的最下行向上開始判斷
  90. //=========================================================================================================================================
  91. void XIAOHAN()
  92. {                                                                                                                                               //消行子程序
  93.         uint i;
  94.         uchar u;
  95.         i=KKK;
  96.         for(n=16;n>0;n--){                                                                                 //掃描16行         
  97.                 if(HUANCUN[n-1]==0xffff){                                                 //如果某行全亮
  98.                   for(u=n;u>1;u--){
  99.                     HUANCUN[u-1]=HUANCUN[u-2];                         //上面一行覆蓋下面一行
  100.                   }
  101.                   HUANCUN[0]=0x0000;
  102.                   n++;
  103.                   KKK++;
  104.                 }                                                                                                                               //最上面一行清零
  105.         }                                                                                                                                       //16行全掃描后,結(jié)束子程序
  106.         if(KKK==(i+2))KKK+=2;                                                                         //如果同時消除2行加4分
  107.           else
  108.             if(KKK==(i+3))KKK+=6;                                                         //如果同時消除3行加9分
  109.               else
  110.                 if(KKK==(i+4))KKK+=12;                                 //如果同時消除4行加16分
  111.                         else
  112.                     if(KKK>(i+4))KKK+=20;                         //如果同時消除5行加25分                                          
  113. }
  114. //=========================================================================================================================================
  115. //思維說明:XH();中CUN[]只存改變后的圖案,位置是在ZUOJIA=7,現(xiàn)在要寫段程序根據(jù)ZUOJIA的值改變CUN[]的數(shù)據(jù),即左右移動后的圖案數(shù)據(jù)CUN[]
  116. //程序描述:比如當(dāng)ZUOJIA=6時,CUN[]前4位數(shù)據(jù)(圖案只用到前4位)都左移1位
  117. //          如果圖案碰到了邊界,重新調(diào)用XH();函數(shù)一次,CUN[]數(shù)據(jù)移動到能移動的最遠位置
  118. //=========================================================================================================================================
  119. void HPP()                                                                                                                              //旋轉(zhuǎn)子程序一部分
  120. {                                                                                                                                          
  121.         if(ZUOJIA<=7){                                                                                                            //如果圖案在點陣的左半邊
  122.                 for(k=0;k<(7-ZUOJIA);k++){                                                                //7-ZUOJIA表示圖案需要移動的位數(shù)                  
  123.                   for(n=0;n<4;n++){                                                                                    //圖案左移一位         
  124.                                 CUN[n]<<=1;                                                                                 
  125.                           if(CUN[n]>=0x8000){                                                                          //在該圖案左移的過程中,判斷有沒有碰到點陣左邊的邊界
  126.                                   XH();                                                                                                  //調(diào)用XH()子程序,該圖案在ZUOJIA=7的位置;
  127.                             for(n=0;n<4;n++){                                                                          //該圖案左移k+1個位,因為是k=0圖案開始一位位左移,所以是k+1                       
  128.                                     CUN[n]<<=k+1;
  129.                             }
  130.                                   ZUOJIA=6-k;                                                                                       //圖案對應(yīng)豎變量也要跟著變化,6-k即7-(k+1)
  131.                                   G=6-k;                                                                                                 //圖案的豎位置變了,左右按鍵的狀態(tài)變量也要隨之改變
  132.                                   return;                                                                                                 //跳出子程序
  133.                                 }
  134.                   }
  135.                 }
  136.         }else{                                                                                                                           //否則圖案在點陣右半邊
  137.                  for(k=0;k<(ZUOJIA-7);k++){                                                                 //以下類同上面                  
  138.                    for(n=0;n<4;n++){              
  139.                                  CUN[n]>>=1;
  140.                            if((CUN[n]&0x0001)!=0){
  141.                                    XH();
  142.                              for(n=0;n<4;n++){
  143.                                      CUN[n]>>=k+1;
  144.                        }
  145.                                    ZUOJIA=8+k;
  146.                                    G=8+k;
  147.                                    return;
  148.                                  }
  149.        }
  150.                  }
  151.          }
  152. }
  153. //=========================================================================================================================================
  154. void QC_HC()                                                                           //緩存(顯示)數(shù)組清零
  155. {
  156.         for(n=0;n<16;n++){
  157.                 HUANCUN[n]=0x0000;
  158.         }   
  159. }
  160. //=========================================================================================================================================
復(fù)制代碼


所有資料51hei提供下載:
俄羅斯方塊.rar (73.91 KB, 下載次數(shù): 51)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:183659 發(fā)表于 2020-1-27 20:37 | 只看該作者
新年快樂~
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲成在人线 | 国产午夜精品久久久 | 日韩视频一区二区 | 国产亚洲日本精品 | 一区二区三区av | 在线观看av不卡 | 成人h动漫亚洲一区二区 | 天天操天天射天天舔 | 久久99精品国产自在现线小黄鸭 | 国产欧美一区二区三区日本久久久 | 一区二区日韩精品 | 国产精品久久久久久久久婷婷 | 欧美国产日韩一区二区三区 | 欧美综合在线观看 | 香蕉久久网 | 69av网| 亚洲午夜精品久久久久久app | 在线播放中文 | 欧洲成人免费视频 | 日韩在线免费 | 久久久国产一区二区三区四区小说 | 欧美一区二区三区视频 | a中文在线视频 | 乱码av午夜噜噜噜噜动漫 | 91久久国产综合久久91精品网站 | 欧美精品1区 | 怡红院怡春院一级毛片 | 国产一区久久 | 国产精品123区| 波多野结衣精品在线 | 国产精品久久久久久久久久久久午夜片 | 日韩欧美国产一区二区三区 | 天堂色 | 精品久久香蕉国产线看观看亚洲 | 亚洲精品乱码久久久久久黑人 | 午夜丰满少妇一级毛片 | 久久黄色网 | 久久精品免费一区二区 | av永久| 操久久 | 天天干天天插天天 |