wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3117|回復: 1
收起左側

STM32單片機打磚塊游戲機制作 附源程序

[復制鏈接]
ID:970990 發表于 2022-12-14 10:44 | 顯示全部樓層 |閱讀模式
用STM32做一個游戲機

游戲視頻地址:https://www.bilibili.com/video/BV1i84y1t7ro
制作出來的實物圖如下:
游戲運行圖片如下:
51hei.jpg

單片機主函數如下:

  1. int main()
  2. {  

  3.    
  4.     OLED_Init();
  5.     Key_Init();
  6.     InitAllVariable();
  7.     OLED_ShowString(1,1,"Press any key to");
  8.     OLED_ShowString(2,1,"start game");
  9.     while(1)
  10.     {
  11.         Game();
  12.     }
  13. }
復制代碼




主函數中的 “Game()”用于開始游戲、暫停游戲以及游戲重新開始,內容如下:

  1. void Game(void)
  2. {
  3.     i=KEY_ValueReturn();
  4.     if(i)
  5.     {
  6.         i=0;
  7.         OLED_Clear();
  8.         while(1)
  9.         {
  10.             GameBody();
  11.             i=KEY_ValueReturn();
  12.             if(ReturnGameOverFlag()==1)//檢測到游戲結束標志
  13.             {
  14.                 OLED_Clear();
  15.                 while(1)
  16.                 {
  17.                     if(Counter_1_FullFlagReturn()){j=!j;}
  18.                     if(j)
  19.                     {
  20.                         OLED_Clear();
  21.                     }else
  22.                     {
  23.                         OLED_ShowString(1,1,"SCORE:");
  24.                         OLED_ShowNum(1,7,GameScore,6);
  25.                         OLED_ShowString(3,1,"Press key 3 to");
  26.                         OLED_ShowString(4,1,"restart");
  27.                     }
  28.                     i=KEY_ValueReturn();
  29.                     if(i==3){ OLED_Clear();Restart=1; break;}
  30.                 }
  31.             }
  32.             if(ReturnGameOverFlag()==0 && Restart==0)

  33.             {
  34.                 if(i==3 )
  35.                 {
  36.                     OLED_Clear();
  37.                     while(1)
  38.                     {
  39.                         if(Counter_1_FullFlagReturn()){j=!j;}
  40.                         if(j){
  41.                             OLED_Clear();
  42.                         }else
  43.                         {
  44.                             OLED_ShowString(1,1,"     PAUSED ");
  45.                         }
  46.                         i=KEY_ValueReturn();
  47.                         if(i==3){OLED_Clear(); break;}
  48.                     }
  49.                 }
  50.             }      
  51.         }
  52.     }  
  53. }
復制代碼



游戲主體Gamebody用于實現整個游戲的運行,代碼如下:

  1. #include "stm32f10x.h"                  // Device header

  2. #include "KEY.h"

  3. #include "OLED.h"



  4. int8_t First_Enemy[9]={16,16,16,16,16,16,16,16,16};//每隊第一個敵人的坐標
  5. int8_t Bullet_X[15],Bullet_Y[15];//儲存子彈坐標
  6. uint32_t GameScore=0,LastScore;
  7. int8_t Restart=0;//重新開始標志位
  8. typedef struct {
  9.     uint8_t FireFlag;
  10.     int8_t ShowBullet;
  11.     uint8_t ShowEnemy;
  12.     uint8_t GameOver;//
  13.     uint8_t BulletSpeedUp;
  14. }FlagDef;

  15. typedef struct {
  16.     int8_t X;
  17.     int8_t Y;
  18. }PlayerDef;

  19. typedef struct {
  20.     int8_t X;
  21.     int8_t Y;
  22. }BulletDef;

  23. typedef struct {
  24.     uint8_t X;
  25.     uint8_t Y;

  26. }EnemyDef;

  27. PlayerDef My_loaction;

  28. FlagDef Flag;
  29. BulletDef Bullet_Location;

  30. BulletDef BulletNum;

  31. EnemyDef EnemyTarget;

  32. /****
  33.     *@brief 初始化所有結構體變量
  34.     *@parameter 無
  35.     *@ReturnValue 無
  36.     */
  37. void InitAllVariable(void)
  38. {
  39.     My_loaction.X=4;//初始化玩家X坐標
  40.     My_loaction.Y=1;//初始化玩家Y坐標
  41.     Flag.FireFlag=0;//初始化開火標志位
  42.     Flag.ShowBullet=0;//子彈顯示
  43.     Flag.GameOver=0;//游戲結束標志
  44.     Flag.BulletSpeedUp=0;//子彈加速標志位
  45.     Bullet_Location.X=My_loaction.X;//初始化子彈位置
  46.     Bullet_Location.Y=My_loaction.Y;//初始化子彈位置
  47.     EnemyTarget.X=8;//首位敵軍的位置
  48.     EnemyTarget.Y=16;//首位敵軍的位置
  49. }

  50. /****
  51.     *@brief 按鍵返回值處理
  52.     *@parameter 無
  53.     *@ReturnValue 無
  54.     */
  55. void KeyNumReturn(void)
  56. {
  57.     int8_t i,temp=0;
  58.     temp=KEY_ValueReturn();
  59.     if(temp){i=temp;}
  60.     if(i==1){ My_loaction.X--; i=0; if(My_loaction.X<=1)My_loaction.X=1;}//1號鍵按下,玩//家上移一格
  61.     if(i==2){ My_loaction.X++; i=0; if(My_loaction.X>=8)My_loaction.X=8; }//2號鍵按下,玩//家下移一格
  62.     if(i==3) { i=0; }
  63.     if(i==4) { Flag.FireFlag=1; i=0; }  //四號鍵按下,開火標志位置一
  64. }


  65. /****
  66.     *@brief 顯示玩家
  67.     *@parameter
  68.     *@ReturnValue
  69.     */
  70. void ShowPlayer(void)
  71. {
  72.     uint8_t i;
  73.     OLED_ShowBlock(My_loaction.X,My_loaction.Y);//根據坐標顯示玩家
  74.     for(i=1;i<=8;i++)//清除玩家移動后,上一次留下的影子(oled不會自動清屏,玩家移動后,上一次的方塊//依然會顯示)
  75.     {
  76.         if(i!=My_loaction.X)
  77.         {
  78.             OLED_DeleteBlock(i,My_loaction.Y);
  79.         }
  80.     }
  81.    
  82. }

  83. /****
  84.     *@brief 子彈處理
  85.     *@parameter 無
  86.     *@ReturnValue 無
  87.     */
  88. void Bullet_process(void)
  89. {
  90.     if(Flag.FireFlag==1)//開火標志位
  91.     {
  92.         if(Flag.ShowBullet==0)
  93.         {
  94.             Bullet_Location.X=My_loaction.X;
  95.             Bullet_Location.Y=My_loaction.Y+1;
  96.             Flag.ShowBullet=1;//子彈顯示標志位  

  97.         }else if(Flag.ShowBullet==1)
  98.         {
  99.             Flag.BulletSpeedUp=1;
  100.         }  
  101.     }  
  102.     Flag.FireFlag=0;
  103.    
  104.     LastScore=GameScore;
  105.     if(Flag.ShowBullet)
  106.     {
  107.         if(Bullet_Location.Y >=1 && Bullet_Location.Y <17)
  108.         {
  109.             if(Counter_0_FullFlagReturn() || Flag.BulletSpeedUp==1)
  110.             {
  111.                 Bullet_Location.Y++;
  112.                
  113.                 Flag.BulletSpeedUp=0;
  114.             }
  115.             if(Bullet_Location.Y>2)//手動清除上一次子彈所在位置,OLED不會自動清屏。
  116.             {
  117.                 OLED_DeleteBlock(Bullet_Location.X,Bullet_Location.Y-1);
  118.             }
  119.         }
  120.         EnemyTarget.Y=First_Enemy[Bullet_Location.X];//
  121.         if(Bullet_Location.Y<EnemyTarget.Y+1)//子彈沒有碰到敵人或墻壁則根據坐標顯示子彈
  122.         {
  123.             OLED_ShowBullet(Bullet_Location.X,Bullet_Location.Y);  
  124.         }else //子彈碰到敵人或墻壁則清除子彈
  125.         {
  126.             if(Bullet_Location.X<16){First_Enemy[Bullet_Location.X]++;}
  127.             Flag.ShowBullet=0;
  128.             GameScore++;//增加游戲分數
  129.         }
  130.         if(Bullet_Location.Y>=17)Flag.ShowBullet=0;
  131.     }

  132. }
  133. /****
  134.     *@brief 返回游戲結束標志位
  135.     *@parameter 無
  136.     *@ReturnValue 無
  137.     */
  138. uint8_t ReturnGameOverFlag(void)
  139. {
  140.     return Flag.GameOver;
  141. }

  142. /****
  143.     *@brief 根據關卡顯示敵人
  144.     *@parameter 無
  145.     *@ReturnValue 無
  146.     */
  147. void Enemy_Process(void)
  148. {
  149.     uint8_t i,j;
  150.     if(Counter_EnemyMovingFlag()==1 )//時間到,讓所有敵人往前走一步
  151.     {
  152.         for(i=1;i<=8;i++)
  153.         {
  154.             First_Enemy[i]--;
  155.         }
  156.         for(i=1;i<=8;i++)
  157.         {
  158.             for(j=First_Enemy[i];j<17;j++)
  159.             {
  160.                 OLED_ShowAnemy(i,j);
  161.             }
  162.         }
  163.     }else if(Counter_EnemyMovingFlag()==0)//時間沒到,所有敵人原地不動
  164.     {
  165.         for(i=1;i<=8;i++)
  166.         {
  167.             for(j=First_Enemy[i];j<17;j++)
  168.             {
  169.                 OLED_ShowAnemy(i,j);
  170.             }
  171.         }
  172.     }
  173.     for(i=1;i<=8;i++)//判斷是否有敵人走到了玩家面前
  174.     {
  175.         if(First_Enemy[i]<=2)
  176.         {
  177.             Flag.GameOver=1;//將游戲結束位置一;
  178.             for(j=1;j<=8;j++)
  179.             {
  180.                 First_Enemy[j]=16;
  181.                
  182.             }
  183.         }
  184.     }
  185. }

  186. /****
  187.     *@brief 根據分數控制蜂鳴器以及燈光
  188.     *@parameter 無
  189.     *@ReturnValue 無
  190.     */
  191. void Score_Process(void)
  192. {
  193.     if(GameScore>LastScore)
  194.     {
  195.         GPIO_ResetBits(GPIOC,GPIO_Pin_13);
  196.     }else
  197.     {
  198.         GPIO_SetBits(GPIOC,GPIO_Pin_13);
  199.     }
  200.    
  201.     if(Counter_0_FullFlagReturn())
  202.     {
  203.         GPIO_SetBits(GPIOC,GPIO_Pin_13);
  204.     }
  205. }

  206. /****
  207.     *@brief 游戲重新開始處理函數
  208.     *@parameter 無
  209.     *@ReturnValue 無
  210.     */
  211. void GameRestart(void)
  212. {
  213.     if(Restart==1 && Flag.GameOver==1)
  214.     {
  215.         OLED_Clear();
  216.         GameScore=0;
  217.         Flag.GameOver=0;
  218.         Restart=0;
  219.     }

  220. }

  221. /****
  222.     *@brief //游戲主體,在主函數中循環調用該函數,運行當前游戲。
  223.     *@parameter 無
  224.     *@ReturnValue 無
  225.     */
  226. void GameBody(void)
  227. {
  228.     KeyNumReturn();
  229.     ShowPlayer();
  230.     Enemy_Process();
  231.     GameRestart();
  232.     Bullet_process();
  233.     Score_Process();   
  234. }
復制代碼

按鍵處理Key.c用于處理按鍵,讓按鍵按下后產生對應的動作,本次的按鍵處理在《單片機定時器中斷掃描按鍵程序思路詳解》(http://www.izizhuan.cn/bbs/dpj-225674-1.html)內容上進行修改,修改后Key.c內容如下:

  1. #include "stm32f10x.h"                  // Device header

  2. #include "delay.h"


  3. uint8_t KEY_Num,KEY_Value;
  4. static uint8_t KEY_LastState,KEY_NowState;
  5. uint8_t Counter_0,Counter_0_FullFlag;
  6. uint8_t Counter_1,Counter_1_FullFlag;
  7. //uint8_t TEST_i;

  8. uint16_t Counter_2=0,Counter_EnemyMoving;
  9. /****
  10.     *@brief 初始化按鍵
  11.     *@parameter 無
  12.     *@ReturnValue 無
  13.     */
  14. void Key_Init(void)
  15. {
  16.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);// 開啟GPIOB時鐘
  17.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);// 開啟GPIOB時鐘
  18.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//開啟TIM2時鐘
  19.    
  20.     GPIO_InitTypeDef GPIO_InitStructure;//GPIO初始化
  21.     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  22.     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  23.     GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  24.     GPIO_Init(GPIOB,&GPIO_InitStructure);
  25.    
  26.     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  27.     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
  28.     GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  29.     GPIO_Init(GPIOC,&GPIO_InitStructure);
  30.     GPIO_SetBits(GPIOC,GPIO_Pin_13);
  31.    
  32.     TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//TIM2定時器初始化

  33.     TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;//不對內部時鐘分頻
  34.     TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上計數模式
  35.     TIM_TimeBaseInitStructure.TIM_Period=20-1;
  36.     TIM_TimeBaseInitStructure.TIM_Prescaler=7200-1;//設置時鐘計數周期為72000000/7200=10000us=1
  37.     TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;//通用定時器沒有重復計數器,設置為0
  38.     TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);
  39.    
  40.     TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//打開TIM2的更新中斷
  41.    
  42.     TIM_InternalClockConfig(TIM2);//選擇內部時鐘源
  43.    
  44.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷分組
  45.    
  46.     NVIC_InitTypeDef NVIC_InitStructure;
  47.     NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
  48.     NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  49.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
  50.     NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
  51.     NVIC_Init(&NVIC_InitStructure);
  52.    
  53.     TIM_Cmd(TIM2,ENABLE);
  54. }

  55. //uint8_t Test_return(void)

  56. //{
  57. //  return TEST_i;
  58. //}
  59. /****
  60.     *@brief 判斷哪個按鍵被按下
  61.     *@parameter 無
  62.     *@ReturnValue 無
  63.     */
  64. uint8_t KEY_Numble(void)
  65. {
  66.     uint8_t i=0;
  67.     if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)==0) { i=1; }
  68.     if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==0) { i=2; }
  69.     if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==0) { i=3; }
  70.     if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==0) { i=4; }
  71. //  TEST_i=i;
  72.     return i;
  73. }
  74. /****
  75.     *@brief 返回按鍵的值
  76.     *@parameter 無
  77.     *@ReturnValue 根據對應的按鍵返回i(1~4)
  78.     */
  79. uint8_t KEY_ValueReturn(void)
  80. {
  81.     uint8_t i;
  82.     i=KEY_Value;
  83.     KEY_Value=0;
  84.     return i;
  85. }
  86. /****
  87.     *@brief 返回計數器Counter_0的狀態
  88.     *@parameter 無
  89.     *@ReturnValue i:Counter_0計數滿則返回1,否則返回0
  90.     */
  91. uint8_t Counter_0_FullFlagReturn(void)
  92. {
  93.     uint8_t i;
  94.     i=Counter_0_FullFlag;
  95.     Counter_0_FullFlag=0;
  96.     return i;
  97. }
  98. /****
  99.     *@brief 每間隔一定時間返回敵軍前移標志位,控制敵軍前移一格
  100.     *@parameter無
  101.     *@ReturnValue i:計數器滿則返回1,否則返回0;
  102.     */
  103. uint8_t Counter_EnemyMovingFlag(void)
  104. {
  105.     uint8_t i;
  106.     i=Counter_EnemyMoving;
  107.     Counter_EnemyMoving=0;
  108.     return i;
  109. }
  110. /****
  111.     *@brief 返回計數器Counter_1的狀態
  112.     *@parameter 無
  113.     *@ReturnValue i:Counter_1計滿則為1,否則為0
  114.     */
  115. uint8_t Counter_1_FullFlagReturn(void)

  116. {
  117.     uint8_t i;
  118.     i=Counter_1_FullFlag;
  119.     Counter_1_FullFlag=0;
  120.     return i;
  121. }

  122. /****
  123.     *@brief //TIM2定時器中斷函數
  124.     *@parameter 無
  125.     *@ReturnValue 無
  126.     */
  127. void TIM2_IRQHandler(void)//TIM2定時器中斷函數
  128. {
  129.     KEY_LastState=KEY_NowState;//保存好按鍵上一次狀態
  130.     KEY_NowState=KEY_Numble();//刷新按鍵當前狀態
  131.    
  132.     Counter_0++;
  133.     Counter_2++;
  134.     if(Counter_0==25){Counter_0=0;Counter_0_FullFlag=1;Counter_1++;}

  135.     if(Counter_1==30){Counter_1=0;Counter_1_FullFlag=1;}
  136.     if(Counter_2==2500){Counter_EnemyMoving=1;Counter_2=0;}

  137.    
  138.     if(KEY_LastState ==1 && KEY_NowState ==0)//根據前后兩次狀態來決定返回值

  139.     {
  140.         KEY_Value=1;
  141.     }
  142.     if(KEY_LastState ==2 && KEY_NowState ==0)

  143.     {
  144.         KEY_Value=2;
  145.     }
  146.     if(KEY_LastState ==3 && KEY_NowState ==0)

  147.     {
  148.         KEY_Value=3;
  149.     }
  150.     if(KEY_LastState ==4 && KEY_NowState ==0)

  151.     {
  152.         KEY_Value=4;
  153.     }
  154.     TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
  155. }
復制代碼

Keil代碼下載: 23-打磚塊游戲.7z (180.88 KB, 下載次數: 29)

評分

參與人數 1黑幣 +90 收起 理由
admin + 90 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:1082094 發表于 2023-6-5 14:31 來自觸屏版 | 顯示全部樓層
為什么不能左右移動
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日韩精品丝袜在线| 午夜国产福利在线观看| 久久国产色av| 色老汉av一区二区三区| 成人禁用看黄a在线| 国产精品福利在线观看播放| 日韩一级二级| 成在在线免费视频| 国产成人羞羞电影网站在线观看 | 2021国产精品久久精品| 午夜日韩电影| 国产精品对白久久久久粗| a级片在线免费看| 亚洲香蕉中文网| 久久综合久久网| 国产精品手机视频| 2020国产精品视频| 日韩电影在线观看中文字幕| 亚洲成在线观看| 97久久超碰精品国产| 天堂蜜桃91精品| 日韩精品看片| 91精品尤物| 日韩免费va| 二区在线播放| 在线观看av片| 成人拍拍拍在线观看| 中文在线官网天堂| 在线观看中文字幕2021| 日韩高清dvd碟片| 日韩av手机在线播放| 激情婷婷综合网| 亚洲一区免费看| 国产精品久久亚洲| 国产精品福利在线观看| 欧美精品做受xxx性少妇| 亚洲精品456在线播放狼人| 日韩欧美在线视频观看| 亚洲免费资源在线播放| 久久无码av三级| 成人综合婷婷国产精品久久免费| 玖玖玖国产精品| 精久久久久久| 黄色亚洲免费| 亚洲综合激情在线| 国产videos久久| 国偷自产av一区二区三区| 精品176极品一区| 亚洲插插视频| 久久男人天堂| 国产美女高潮在线观看| 草美女在线观看| 亚洲资源一区| 视频在线这里都是精品| 成人区精品一区二区不卡| 北岛玲日韩精品一区二区三区| 在线中文字幕观看| 中文字幕av在线播放| 日本特黄a级高清免费大片| 成人毛片高清视频观看| 妞干网在线观看| 91xxxxx| 高清成人av| 天天看天天操| 国产对白国语对白| 成人免费视频77777| 成人影院在线观看视频| 成视频免费在线看| av高清资源| 国产最顶级的黄色片在线免费观看| 国产91福利| 三上悠亚一区二区三区| 影音先锋亚洲天堂| 日本最新中文字幕| 亚洲第一网站在线观看| 伊人免费在线观看高清版| 一区精品在线观看| 亚洲AV无码成人片在线观看 | abab456成人免费网址| jizz内谢中国亚洲jizz| 欧美福利在线播放| 亚洲人体在线| 国内精品麻豆美女在线播放视频| 国产91精品对白在线播放| 日韩免费看片| 欧美日韩精品一本二本三本| 久久成人亚洲| 狠狠色综合播放一区二区| 成人手机在线视频| 国产精品美女久久久久久久久 | 日韩激情久久| 特大黑人娇小亚洲女mp4| 奇米精品一区二区三区| 久久久久久久久久久久久久久国产| 欧美高清精品一区二区| 91丨porny丨对白| 国产人与禽zoz0性伦| 亚洲天堂日韩av| 国产乱码久久久| palipali轻量版永久网页入口| 欧美三级成人观看| 免费网站看电影大片| 男人午夜天堂| 日本在线观看网站| 亚洲成人激情社区| 粉嫩精品导航导航| 欧美一区网站| 国产精品自拍在线| 亚洲四区在线观看| 欧美日韩国产一区| 国产亚洲精品久久久久动| 久久久久久亚洲精品不卡| 成人性生交大片免费看小说 | 国产欧美一级片| 久草免费福利视频| 99爱免费视频| 黄色在线视频网站| 狠狠躁夜夜躁人人爽视频| 一区二区乱子伦在线播放| 综合区小说区图片区在线一区| 国产成人福利| 亚洲精品男人| 俺来也官网欧美久久精品| 欧美不卡在线观看| 国产一区日韩一区| 成人午夜私人影院| 欧美日韩国产页| 亚洲精品视频在线观看视频| 日本韩国在线不卡| 日韩久久精品一区二区三区| 免费看涩涩视频| 午夜成人亚洲理伦片在线观看| 91女人18毛片水多国产| 91嫩草香蕉| 国产一级在线| 日韩一区二区三区精品视频第3页| 综合视频在线| www.视频一区| 欧美体内she精视频| 久久综合久久88| 国外成人在线视频网站| 少妇黄色一级片| jizz亚洲少妇| 小说区图片区综合久久亚洲| h短视频大全在线观看| 欧美色网一区| 欧美/亚洲一区| 久久九九久久九九| 欧美大片日本大片免费观看| 国产91精品青草社区| 亚洲人成网站在线播放2019| 制服.丝袜.亚洲.中文.综合懂| 日韩欧美a级片| 天堂网在线中文| 91网页版在线登录入口| 国产一区二区主播在线| 欧美精品啪啪| 亚洲国产成人私人影院tom| 影音先锋亚洲电影| 久久久久久影视| 欧美一区二区三区四区视频| 国内精品久久久久影院优| 亚洲一区二区精品在线| 亚洲男女在线观看| 一区二区三区黄色片| 2色视频网站| 九色porny在线| 欧洲杯足球赛直播| 久久久激情视频| 亚洲精品国产成人| 91精品综合久久| 999精品网站| 国产精品自拍99| 天天av天天爱| 国产精品黄色片| 美日韩一区二区| 7777女厕盗摄久久久| 国产一区二区香蕉| 一级做a爱视频| 国产叼嘿视频在线观看| 日本成人一区二区三区| 国产成人精品一区二区免费看京| 成人免费视频视频| 亚洲精品视频网上网址在线观看| 国产亚洲欧美一区二区| 偷拍女澡堂一区二区三区| 中文字幕久热| 牛牛精品视频在线| 久久av一区| 欧美日韩成人高清| 99在线影院| 亚洲av无码成人精品国产| 久久全国免费久久青青小草| 午夜影院免费在线| 国产精品婷婷| 欧美日韩一级二级| 国产精品yjizz| 国产精品久久久久无码av色戒| 亚洲第一欧美| 色老太综合网| 国产精品综合一区二区三区| 亚洲精品一区二区三区精华液 | 欧美一区 二区| 中文字幕免费一区| 欧美国产在线电影| www.99av.com| 欧美一区二不卡视频| 久久五月精品中文字幕| 日韩在线卡一卡二| 欧美成人国产一区二区| 日韩免费av一区二区三区| 免费国产羞羞网站美图| 国产精品久久久久久精| 精品国产一区二区三区香蕉沈先生| 亚洲图片激情小说| 日本在线观看天堂男亚洲| 91精产国品一二三| 性一交一乱一色一免费无遮挡| 国产精品午夜剧场| 美女网站视频一区| 91麻豆123| 超碰91人人草人人干| 国模无码视频一区二区三区| 国产伦精品一区二区三区四区| 日本高清在线观看wwwww色| 国产精品久久国产愉拍| 欧美videos大乳护士334| 中文字幕一区二区三区四区五区六区| 青青青国产在线| 亚洲1卡2卡3卡4卡乱码精品| 日本视频一区二区| 国产亚洲一区二区在线| 宅男噜噜噜66国产免费观看| 影音先锋中文字幕在线| 成人污版视频| 亚洲视频一二三区| 亚洲a在线观看| 好吊色视频在线观看| 四虎影视在线播放| 麻豆九一精品爱看视频在线观看免费| 亚洲国产精品电影| 精品视频一区二区在线| 最近免费中文字幕大全免费第三页| 成人国产精品一区二区免费麻豆| 日本一区二区三区在线观看| 国产美女搞久久| 少妇久久久久久被弄高潮| 狠狠色狠狠色综合| 欧美色图亚洲天堂| 亚洲AV无码成人精品区明星换面| 好吊妞视频一区二区三区| 黄色网址在线播放| 老牛嫩草一区二区三区日本| 永久555www成人免费| 亚洲激情在线观看视频| 中文字幕91| 欧美成人激情| 亚洲电影成人av99爱色| 国产女女做受ⅹxx高潮| 又黄又湿又爽又免费又色| gogogo高清在线观看一区二区| 欧美日韩一区二区在线观看| 精品一二三四五区| 中文字幕久热在线精品| 青青操综合网| 欧美一区二区三区小说| 日韩一级片播放| 日本免费网站| 欧美视频不卡| 中文字幕日韩电影| 成年女人免费视频| 日本免费看黄色| 日韩不卡免费视频| 国内免费精品永久在线视频| 中文字幕免费在线看线人动作大片| 中出福利视频| 免费欧美在线视频| 91精品国产高清久久久久久久久 | 国产丶欧美丶日本不卡视频| 欧美有码在线视频| 中国xxxx性xxxx产国| 天堂社区日本电影超碰| 免费的国产精品| 26uuu久久噜噜噜噜| 看片网站在线观看| 国产污视频在线播放| 亚洲自拍偷拍综合| 警花观音坐莲激情销魂小说| 在线天堂中文www官网| 精品国产欧美日韩| 亚洲男人av在线| 久久久久无码国产精品一区李宗瑞| 中文字幕一区二区三区域| 国产精品亚洲一区二区三区在线| 国产精品av免费在线观看| 日韩一区二区视频在线| 成人深夜福利| 欧美色图第一页| 在线看的黄色网址| 日本免费看黄色| 97久久精品人人澡人人爽| 久久久久se| 日韩亚洲天堂| 欧美激情在线| 欧美一区二区三区免费视| 日本午夜视频在线观看| 国产精久久一区二区| 精品国产露脸精彩对白| 野战少妇38p| 在线观看黄av| 一区二区激情视频| 亚洲乱码中文字幕久久孕妇黑人| 97视频免费| 国产成人av一区二区三区在线| 精品国产一区二区三区四区精华| 一区二区三区小视频| 欧美三级不卡| 热99精品里视频精品| 在线观看免费中文字幕| 亚洲人成精品久久久| 一个色综合导航| 免费无遮挡无码永久在线观看视频| 欧美精选视频一区二区| 日韩亚洲欧美中文三级| 国产男女猛烈无遮挡a片漫画| 在线观看a级片| 色伊人久久综合中文字幕| 精品少妇无遮挡毛片| 欧美一区二区少妇| 一区二区三区免费看视频| 国产精品99久久免费黑人人妻| 中出福利视频| 成人欧美一区二区三区小说| 阿v天堂2017| 日韩精品福利| 亚洲高清在线精品| wwwwwxxxx日本| 日本在线看片免费人成视1000| 黄色成人在线免费| 国产精品偷伦视频免费观看了| 香蕉成人app免费看片| 欧美一区在线视频| 99久久99久久精品免费| 色999久久久精品人人澡69 | 在线免费黄色网| 搞黄网站在线观看| 7777精品伊人久久久大香线蕉完整版 | 国产精品天美传媒入口| 国产在线播放一区三区四| 亚洲精品国产精品久久| av毛片免费看| 中文字幕一区在线观看| 超碰在线播放91| 色帝国亚洲欧美在线| 91精品国产免费| 国产精品成人69xxx免费视频| 日韩在线视频一区二区三区| 九九久久综合网站| 亚洲乱码在线观看| 免费在线一区观看| 欧美日韩亚洲另类| 久久久精品少妇| 久久丝袜视频| 日本精品视频在线观看| 日韩视频www| 91在线视频在线| 国产福利影院在线观看| 大桥未久在线播放| 国产亚洲美女久久| 99久久久国产精品无码免费| 久久国产一二区| 亚洲美女自拍偷拍| 在线观看二区| 亚洲国产精品va在线看黑人| 人人爽人人爽人人片av| 欧美激情综合| 日本午夜一区二区三区| 中文字幕在线视频网| 在线一区二区观看| 国产精品999久久久| 亚洲天天综合| 欧美乱偷一区二区三区在线| 宅男午夜在线| 欧美日韩日本视频| 国产无人区码熟妇毛片多| 国精品一区二区| 在线播放 亚洲| 黄色成人影院| 亚洲精品视频二区| 欧美 日韩 国产 精品| 成人午夜看片网址| 日本国产一级片| 久久天堂久久| 国产精品久久久久久久7电影| www.天天射| 色综合久久久久网| 国内精品福利视频| 久久精品首页| 日韩激情免费视频| av免费在线一区|