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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

開源Proteus仿真全民貪吃蛇 附LPC2124 ARM7程序分析與設(shè)計(jì)報告

  [復(fù)制鏈接]
ID:437819 發(fā)表于 2018-12-2 18:48 | 顯示全部樓層 |閱讀模式
這是我以前做的一個貪吃蛇課程設(shè)計(jì)。
此次的ARM7最小系統(tǒng)的課程設(shè)計(jì)是基于LPC2124以及LCD-CSTN20GG0906N7CUN6和按鍵電路。采用ISIS7 Professional軟件自行搭建電路。里面帶有實(shí)驗(yàn)報告,里面都是干貨,希望對大家有用。
0.png

目錄
1.              課程設(shè)計(jì)內(nèi)容
2.              課程設(shè)計(jì)目的
3.              背景知識
4.              工具/準(zhǔn)備工作              4
5.              設(shè)計(jì)步驟與方法              4
5.1.              步驟1:在Proteus仿真軟件上設(shè)計(jì)電路圖              4
5.2.              步驟2:畫蛇              5
5.2.1.              步驟1.1:蛇的產(chǎn)生              5
5.3.              步驟3:食物的產(chǎn)生              6
5.4.              步驟4:蛇的移動              7
5.4.1.              步驟1.1:按鍵的掃描              8
5.5.              步驟5:蛇節(jié)的增長              8
5.5.1.              步驟1.1:判斷蛇是否吃到食物              9
5.5.2.              步驟1.2:速度的增長              10
5.6.              步驟6:游戲是否結(jié)束              10
5.7.              步驟7:LCDHDG12864L-6的顯示              11
5.8.              步驟8:重新開始與暫停按鍵              11
6.              設(shè)計(jì)結(jié)果及分析              12
7.              設(shè)計(jì)結(jié)論              13
8.              問題及心得體會              13
9.              對本設(shè)計(jì)過程及方法、手段的改進(jìn)建議              14
10.             參考文獻(xiàn)              14
11.              課程設(shè)計(jì)評價(教師)              14

全民貪吃蛇


1.
     課程設(shè)計(jì)內(nèi)容

此次ARM7最小系統(tǒng)的課程設(shè)計(jì)是基于LPC2124以及LCD-CSTN20GG0906N7CUN6和按鍵電路。采用ISIS 7 Professional軟件自行搭建電路。本系統(tǒng)的特點(diǎn)是性能高、成本低并且耗能小等特點(diǎn)。

2.     課程設(shè)計(jì)目的

此次課程設(shè)計(jì)的主要目的是讓我們提高代碼的熟練度,以及發(fā)揮自主創(chuàng)新,將平時上課學(xué)到的理論知識與實(shí)驗(yàn)知識相結(jié)合。讓我們對arm7芯片以及ISIS 7 Professional仿真模擬器更為了解。

  • 熟練掌握向量中斷IRQ的初始化和對中斷的處理過程。
  • 熟練掌握定時器的控制和使用方法。
  • 熟練掌握C語言的使用原理及編程方法。
  • 熟練掌握仿真電路圖的連接方法。
  • 熟練掌握兩個不同的液晶顯示器的顯示控制原理及編程方法。

3.     背景知識
ARM處理器的三大特點(diǎn)是:耗電少功能強(qiáng)、16位/32位雙指令集和合作伙伴眾多。
1、體積小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令執(zhí)行速度更快;
4、大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
5、尋址方式靈活簡單,執(zhí)行效率高;
6、指令長度固定。

設(shè)計(jì)原理:貪吃蛇游戲是一款經(jīng)典的游戲,既簡單又耐玩。通過控制蛇頭方向吃蛋,使得蛇變長,從而獲取積分。用游戲把子上下左右控制蛇的方向,尋找吃的東西,每吃一口就能得到一定的積分,而且蛇的身子會越吃越長,身子越長玩的難度就越大,不能碰墻,不能咬到自己的身體,更不能咬自己的尾巴,等到了一定的分?jǐn)?shù),就能過關(guān),然后繼續(xù)玩下一關(guān)。


4.     工具/準(zhǔn)備工作
  • CodeWarrior project file軟件。
  • ISIS 7 Professional軟件。
  • 了解Proteus仿真軟件和ARM編程軟件的使用方法。
  • 了解ARM7芯片的編程方法。
5.   設(shè)計(jì)步驟與方法

5.1.步驟1:在Proteus仿真軟件上設(shè)計(jì)電路圖

5.2.步驟2畫蛇

由于采用的是LCD-CSTN20GG0906N7CUN6,首先根據(jù)其數(shù)據(jù)手冊對該LCD進(jìn)行繪畫,先寫入命令對其進(jìn)行寫操作WR_CMD(0xBC);WR_DATA(0); WR_DATA(00);       WR_DATA(00); 然后寫入命令WR_CMD(0x75);意為寫入x軸,后接x軸的具體數(shù)據(jù)以及x軸的最大值。緊接著寫入WR_CMD(0x15);意為寫入y軸,后接y軸的具體數(shù)據(jù)以及y軸的最大值。

void snake_display(int x,int y)

{

              int i,j;      

      WR_CMD(0xBC); WR_DATA(0); WR_DATA(00);  WR_DATA(00);         

     WR_CMD(0x75);   

     WR_DATA(x);    WR_DATA(63);

     WR_CMD(0x15);

     WR_DATA(y);    WR_DATA(95);   

     WR_CMD(0x5c);            

        for(j=0;j<1;j++)  {

                      for(i=0;i<1;i++){

                          WR_DATA(0xf8);//0xff   

                          WR_DATA(0x00); }}

}

5.2.1步驟1.1蛇的產(chǎn)生

首先創(chuàng)建一個蛇的結(jié)構(gòu)體Point,該結(jié)構(gòu)體內(nèi)存儲了蛇的x、y坐標(biāo),以及蛇的長度和蛇的方向,然后通過rand函數(shù)產(chǎn)生隨機(jī)數(shù)存在Snake的x、y中,即蛇的初始位置是隨機(jī)的,然后再通過snake_init()函數(shù)中對蛇進(jìn)行初始化,然后通過循環(huán)在snake_display(int x,int y)函數(shù)中把蛇畫出來。

  1. void snake_init()
  2. {
  3.               int i;
  4.               snake_state();
  5.     Snake.x[0] = rand()%62;
  6.     Snake.y[0] = rand()%95;   
  7.    Snake.x[1] = Snake.x[0]+1;
  8.     Snake.y[1] = Snake.y[0];   
  9.     Snake.x[2] = Snake.x[1] +1;
  10.     Snake.y[2] = Snake.y[0] ;
  11.        Snake.num = 3;   
  12.     for(i=0;i<Snake.num;i++)
  13.                   snake_display(Snake.x[i],Snake.y[i]);
  14.     }
復(fù)制代碼

5.3.步驟3食物的產(chǎn)生

首先創(chuàng)建一個食物的結(jié)構(gòu)體point,在該結(jié)構(gòu)體的基礎(chǔ)上定義一個數(shù)組food_map,通過這個結(jié)構(gòu)體對地圖進(jìn)行修改。該結(jié)構(gòu)體內(nèi)存儲了食物的x、y坐標(biāo),以及食物的長度,然后通過rand函數(shù)產(chǎn)生隨機(jī)數(shù)保存在food_map中,即食物的出現(xiàn)位置是隨機(jī)的,然后再通過food_init()函數(shù)中對食物進(jìn)行初始化,然后通過循環(huán)在food_display(int x,int y)函數(shù)中把食物畫出來(食物的畫法與步驟一中蛇的畫法是一樣的,只不過食物的顏色是黃色,蛇的顏色是紅色,便于確認(rèn))。

當(dāng)蛇吃了一定數(shù)量的食物時,通過調(diào)用食物產(chǎn)生函數(shù),重新產(chǎn)生新的食物,以保證食物的存在性。


  1. void food()
  2. {
  3.               int i;
  4.               if(create_food==1)
  5.               {
  6.                             for(i=food_long;i<food_long+8;i++)
  7.                             {
  8.                                           food_map[i].x=rand()%62;
  9.                                           food_map[i].y=rand()%93;
  10.                             }
  11.                             food_long+=8;
  12.                             create_food=0;
  13.               }
  14. }
  15. void food_map_init()
  16. {
  17.               int i;
  18.               food();
  19.               for(i=0;i<food_long;i++)
  20.                             food_display(food_map[i].x,food_map[i].y);            
  21. }
復(fù)制代碼


5.4.步驟4蛇的移動

若相應(yīng)方向的按鍵被按下,則蛇就會往相應(yīng)的方向移動。首先要把蛇之前走過的痕跡擦掉(擦掉的函數(shù)如同畫蛇,把顏色數(shù)據(jù)改為背景色即可),然后將蛇從最后個節(jié)點(diǎn)向前一個節(jié)點(diǎn)移動,這是蛇的最核心算法。最后通過switch case判斷哪一個按鍵被按下,然后對蛇頭的方向,即Snake.direction進(jìn)行修改。蛇的移動函數(shù)放在中斷中,每次發(fā)生中斷都會重新畫蛇(蛇的移動即把原來的蛇尾巴擦掉,然后根據(jù)新的坐標(biāo)重新畫蛇)。當(dāng)按鍵沒有被按下時,蛇會按照上一次按下按鍵的方向去移動(初始化時默認(rèn)向右)。


  1. void snake_move()
  2. {            
  3.               char i;
  4.               int j;
  5.               if(flag==1)
  6.               {
  7.                             Snake.num++;            
  8.                             flag=0;
  9.               }
  10.                             for(i=0;i<food_long;i++)
  11.                             food_display(food_map[i].x,food_map[i].y);
  12. clear_snake(Snake.x[Snake.num-1],Snake.y[Snake.num-1]);
  13.    for(i = Snake.num - 1; i > 0; i--) // 將蛇從最后個節(jié)點(diǎn)向前一個節(jié)點(diǎn)移動
  14.    {
  15.                             Snake.x[i] = Snake.x[i - 1];
  16.         Snake.y[i] = Snake.y[i - 1];
  17.    }
  18.        snake_state();         
  19.     switch(Snake.direction)
  20.     {                     
  21.         case 1:
  22.              Snake.x[0] -=1 ;
  23.             break;
  24.         case -1:
  25.                                    Snake.x[0] +=1 ;
  26.             break;
  27.         case 2:
  28.             Snake.y[0] -=1 ;
  29.             break;
  30.         case -2:
  31.             Snake.y[0] +=1 ;
  32.             break;
  33.     }
  34.       for(i=0;i<Snake.num;i++)
  35.                   snake_display(Snake.x[i],Snake.y[i]);
  36. }
復(fù)制代碼


5.4.1. 步驟1.1:按鍵的掃描

通過IOxPIN來確定按鍵是否按下,由于按鍵接在P1.20-P1.23,因此是I01PIN。通過讀取各個按鍵的狀態(tài)封裝在snake_state函數(shù)里。如果上鍵按下,Snake.directio則相應(yīng)為上(Snake.direction是蛇的結(jié)構(gòu)體Point里的成員用于確定蛇的方向)。其余方向的設(shè)置同上。

void snake_state()

{

              if(!(IO1PIN&key_w))Snake.direction=1;//上

              else if(!(IO1PIN&key_s))Snake.direction= -1;//下

              else if(!(IO1PIN&key_a))Snake.direction= 2;//左

              else if(!(IO1PIN&key_d))Snake.direction= -2;//右

}


5.5.步驟5:蛇節(jié)的增長

如果蛇吃到了食物,此時的蛇應(yīng)該變長,即Snake.num++,在蛇尾的部分添加一個點(diǎn)即可,新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置。先把這條蛇擦掉,然后重新畫蛇。

if(flag==1)

              {

                            Snake.num++;            

                            flag=0;

              }


5.5.1. 步驟1.1:判斷蛇是否吃到食物

如果蛇頭的x、y坐標(biāo)與food_map中的任一x、y坐標(biāo)均相等,則說明蛇已經(jīng)吃了食物,此時要對食物進(jìn)行擦除(食物的擦除與食物的繪畫是一樣的,只需要把顏色改為跟背景色一樣即可)。


  1. void checkeat()
  2. {
  3.               int i,time;
  4.               for(i=0;i<food_long;i++)
  5.               {              if((Snake.y[0]==food_map[i].y)&&(Snake.x[0]==food_map[i].x)||(Snake.y[Snake.num-1]==food_map[i].y)&&(Snake.x[Snake.num-1]==food_map[i].x))
  6.                             {            
  7.                                                         flag=1;            
  8.                                                         NUMBER++;//
  9.                                                         if(NUMBER>9)NUMBER=0;
  10.                                                         print_score();//
  11.                                                         eat++;
  12.                                                         if(eat%4==0)create_food=1;
  13.                                                         if(eat%1==0)
  14.                                                         {
  15.                                                                       LEVEL++;
  16.                                                                       speed-=50;
  17.                                                                       if(LEVEL>9)LEVEL=0;
  18.                                                                       print_level();
  19.                                                         }                                         
  20.                                                         clear_food(food_map[i].x,food_map[i].y);
  21.                                                         food_map[i].x=NULL;
  22.                                                         food_map[i].y=NULL;
  23.                                                         break;                           
  24.                             }
  25.               }
  26. }
復(fù)制代碼


5.5.2. 步驟1.2:速度的增長

當(dāng)蛇吃到一定數(shù)量的食物時,游戲的等級會增加,此時蛇的速度就會變快,通過改變定時器的定時時長可以實(shí)現(xiàn),即改變T0TR,首先設(shè)定一個speed變量值,當(dāng)游戲中的LEVEL++時,speed的值減小,此時定時器的定時時長會縮短,會,從而導(dǎo)致蛇的移動掃描變快,因而實(shí)現(xiàn)了蛇的速度的變化。

void speed_change()

{

              T0PR = speed;

}



5.6.步驟6:游戲是否結(jié)束

如果蛇跑出了LCD所能表示的范圍,即蛇頭小于0或者大于63,蛇尾小于0或者大于95,則視為死亡,游戲結(jié)束,顯示結(jié)束圖片。如果需要繼續(xù)游戲則按下重新開始按鈕。

如果蛇頭撞上了身體的任意環(huán)節(jié)(通過循環(huán)來一節(jié)節(jié)地進(jìn)行判斷),則視為死亡,游戲結(jié)束,顯示結(jié)束圖片。如果需要繼續(xù)游戲則按下重新開始按鈕。

反之,游戲繼續(xù)。

如果最終的等級大于9級,則游戲勝利,顯示勝利圖片。如果需要繼續(xù)游戲則按下重新開始按鈕。


  1. void snake_life()
  2. {
  3.               int i;
  4.               if(Snake.x[0] < 0 || Snake.x[0] > 63 || Snake.y[0] < 0 || Snake.y[0] >95)               die=1;
  5.               for(i=3;i<Snake.num;i++)
  6.                 {
  7.      if(Snake.x[i]==Snake.x[0]&&Snake.y[i]==Snake.y[0])
  8.      {
  9.                    die=1;
  10.                    break;
  11.     }  
  12.   }
  13. }
復(fù)制代碼


5.7.步驟7:LCDHDG12864L-6的顯示

該LCD用來顯示游戲的名稱、制作人、等級以及分?jǐn)?shù)。根據(jù)該LCD的數(shù)據(jù)手冊首先寫入的是y的值,然后寫入x的值,來確定所寫的字的位置,先寫字的上半部分,然后重新寫入y的值,x的值不變,再寫字的下半部分。

每次蛇吃到食物時,分?jǐn)?shù)就會增加。分?jǐn)?shù)的字模放在一個數(shù)組里,通過下標(biāo)調(diào)用顯示。當(dāng)蛇吃到了一定數(shù)量的食物之后,等級就會隨之增加,等級的字模也是放在一個數(shù)據(jù)里,通過下標(biāo)調(diào)用顯示。

void print_level()

{

              int j;

   WR_CMD1(0xb0+4);

   WR_CMD1(0x10);

   WR_CMD1(0x00+51);

  for(j=0;j<8;j++)

  {

   WR_DATA1(number[LEVEL][0][j]);

  }

              WR_CMD1(0xb0+5);

              WR_CMD1(0x10);

              WR_CMD1(0x00+51);

  for(j=0;j<8;j++)

  {

   WR_DATA1(number[LEVEL][1][j]);

  }            

}


5.8.步驟8:重新開始與暫停按鍵

設(shè)置兩個按鍵用于重新開始游戲以及暫停游戲。

重新開始游戲時,先把顯示蛇的LCD的屏幕清屏。把成績與等級初始化為0,然后對游戲的所有參數(shù)重新進(jìn)行初始化。

暫停按鈕的實(shí)現(xiàn)十分簡單,只需要把蛇的移動方向設(shè)為空即可。此時,蛇不會再移動。若要繼續(xù)游戲,則按任意方向鍵繼續(xù)。

void button()

{

              if(!(IO1PIN&restart))

              {

                            LCD_clear();

                            die=0;

                            LEVEL=0;

                            NUMBER=0;

                            flag=0;

                            eat=0;

                            speed=1000;

                            Snake.direction=NULL;

                            food_map_init();

                            create_food=0;

                            score_init();

                            print_score();

                            print_level();

                            snake_init();

                            food_map_init();              

              }

              if(!(IO1PIN&stop))

              {

                            Snake.direction=NULL;

              }

}

6.     設(shè)計(jì)結(jié)果及分析

設(shè)計(jì)結(jié)果:蛇的出現(xiàn)位置與食物的出現(xiàn)位置都是隨機(jī)的。當(dāng)按下相對應(yīng)的按鍵時,蛇會往那個方向走,當(dāng)蛇吃到食物時,分?jǐn)?shù)會增加。當(dāng)蛇吃到一定數(shù)量的食物時,等級和速度也會隨之增加,當(dāng)食物少于一定數(shù)量時,會出現(xiàn)新的食物。當(dāng)?shù)燃夁_(dá)到9時,游戲結(jié)束,玩家勝出,播放勝利圖片。如果蛇吃到自身,或者撞到墻,則游戲結(jié)束,玩家失敗,播放失敗圖片。

設(shè)計(jì)分析:這個程序的關(guān)鍵是表示蛇的圖形以及蛇的移動。用一個小矩形表示蛇的一節(jié)身體,身體每長一節(jié),增加一個矩形塊。如果不按任何鍵,蛇自行在當(dāng)前方向上前移,當(dāng)游戲者按了有效的方向鍵后,蛇頭朝著指定的方向移動,一步移動一節(jié)身體,所以當(dāng)按了有效的方向鍵后,先確定蛇頭的位置,然后蛇身體隨著蛇頭移動,圖形的實(shí)現(xiàn)是從蛇頭的新位置開始畫出蛇,這時原來蛇的位置和新蛇的位置差一個單位,所以看起來蛇會多一節(jié)身體,所以將蛇的最后一節(jié)用背景色覆蓋。食物的出現(xiàn)和消失也是畫矩形塊和覆蓋矩形塊。


7.     設(shè)計(jì)結(jié)論

經(jīng)過奮戰(zhàn)我的課程設(shè)計(jì)終于完成了。在沒有做課程設(shè)計(jì)以前覺得課程設(shè)計(jì)只是對嵌入式最小系統(tǒng)這門課程所學(xué)知識的單純總結(jié),但是通過這次做課程設(shè)計(jì)發(fā)現(xiàn)自己的看法有點(diǎn)太片面。課程設(shè)計(jì)不僅是對前面所學(xué)知識的一種檢驗(yàn),而且也是對自己能力的一種提高。通過這次課程設(shè)計(jì)使我明白了自己原來知識還比較欠缺。自己要學(xué)習(xí)的東西還太多,以前老是覺得自己什么東西都會,什么東西都懂,有點(diǎn)眼高手低。通過這次課程設(shè)計(jì),我才明白學(xué)習(xí)是一個長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),提高自己的知識和綜合素質(zhì)。

8.   問題及心得體會

通過這次的課程設(shè)計(jì)讓我學(xué)到了許多編程知識,提高運(yùn)用C語言解決實(shí)際問題的能力,鞏固了C語言的語法規(guī)則、掌握和理解,還提高了自學(xué)以及查閱資料的能力。我發(fā)現(xiàn)只有理論知識是不夠的,僅僅運(yùn)用課上所學(xué)無法編實(shí)際問題,實(shí)際執(zhí)行過程與預(yù)想不一致,經(jīng)常會出現(xiàn)bug。還因?yàn)樵诜抡孳浖杏缅e了一個LCD顯示器,導(dǎo)致程序卡在那里好幾天,當(dāng)時用的是12864-6,一直卡在蛇的顯示,非常考驗(yàn)我的邏輯與耐心。后來一怒之下?lián)Q了一個實(shí)驗(yàn)中講過的LCD顯示器。必須把所學(xué)的理論知識和自身的實(shí)踐相結(jié)合,在編程中我學(xué)到了許多編程知識,還學(xué)會了如何去看器件的數(shù)據(jù)手冊,在實(shí)際編程中,我遇到許多困難,例如:蛇的頭部與食物的檢測問題,蛇的移動與顯示問題,蛇的轉(zhuǎn)向問題,食物的隨機(jī)生成問題等等,我通過在網(wǎng)上搜集資料與自己的分析。最后,終于完成了這個游戲。

9.     對本設(shè)計(jì)過程及方法、手段的改進(jìn)建議

在食物的設(shè)計(jì)的方面,可以放上帶道具的食物,使蛇吃完后具有保護(hù),穿墻等特種功能,而且難度逐漸變難。還有設(shè)計(jì)一些障礙物,當(dāng)蛇撞到障礙物時死亡。



全部資料51hei下載地址:

Snake.zip (281.7 KB, 下載次數(shù): 122)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2018-12-3 02:04 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

ID:350993 發(fā)表于 2019-4-23 19:52 來自觸屏版 | 顯示全部樓層
學(xué)習(xí)了
回復(fù)

使用道具 舉報

ID:776149 發(fā)表于 2020-6-11 22:39 | 顯示全部樓層
nice,nice,最近剛好在自學(xué)armplc2124,收獲到了
回復(fù)

使用道具 舉報

ID:768748 發(fā)表于 2020-6-17 20:29 | 顯示全部樓層
挺好的,謝謝大佬
回復(fù)

使用道具 舉報

ID:86450 發(fā)表于 2020-11-2 16:48 | 顯示全部樓層
nice,nice,最近剛好在自學(xué)armplc2124,收獲到了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
国产精品一区在线看| 男人在线视频资源| 精品少妇人妻一区二区黑料社区| 99精彩视频在线观看免费| 精品国产乱码久久久久久蜜臀| www欧美成人18+| 天天影视综合| 日韩三级成人| 川上优的av在线一区二区| 一个人看的www视频免费观看| 国产精品成人无码| 久久久久亚洲av无码专区桃色| 在线观看av的网址| 666精品在线| 欧美美女18p| 精品久久久久一区| 亚洲高清久久久| 丁香啪啪综合成人亚洲小说| 欧美激情麻豆| 另类春色校园亚洲| 午夜伦理福利在线| 国产福利电影在线| 国产精品久久久久永久免费看| www..69.hd| 波多野结衣人妻| www.日本高清视频| 人人爽人人爽av| 国产欧美精品aaaaaa片| 久草一区二区| 国产精品一区二区性色av| 色噜噜狠狠狠综合曰曰曰88av| 91精品欧美久久久久久动漫 | 中文字幕欧美日韩在线| 制服丝袜成人动漫| 欧美日韩免费在线观看| 中文字幕电影一区| 国产99精品国产| 日韩精品欧美精品| 狠狠色狠狠色综合日日tαg| 婷婷成人在线| 精品国产一级| 精品免费av一区二区三区| 欧美性爽视频| 91精品专区| 日韩精品视频无播放器在线看| 天天操人人干| 五福影院新址进入www1378| 成人午夜无人区一区二区| 国产美女主播在线观看| 无码人妻久久一区二区三区不卡| 欧美黑人精品一区二区不卡| 国精产品视频一二二区| 亚洲av无码一区二区三区人 | 免费国产亚洲视频| 99精品欧美| 欧美激情偷拍| 午夜精品久久99蜜桃的功能介绍| 日本在线电影一区二区三区| 最新国产一区| 九九亚洲视频| 久草成人在线| 狠狠综合久久av一区二区蜜桃 | 国内av一区二区三区| 久久香蕉精品视频| xxxwww国产| 久久久久无码国产精品一区李宗瑞| 精品久久久久久久无码| 99热成人精品热久久66| 日本www在线播放| 黄页网站大全在线观看| 91好吊色国产欧美日韩在线| 亚洲熟妇无码av在线播放| 国产精品av免费观看| 国产91沈先生在线播放| 青青青免费在线| 中文字幕无码精品亚洲35| 黄色一级在线视频| 2022亚洲天堂| 777视频在线| 久久久久久久久久一区二区| 国产精品嫩草影院8vv8| 亚洲av永久无码精品| 一本色道综合久久欧美日韩精品| xxxxx在线观看| 国产精品理论在线| 久久久久黄色片| 精品人妻无码一区二区性色| 国产一区二区三区三州| 蜜桃视频污在线观看| 一区三区三区不卡| 国产香蕉免费精品视频| 免费黄漫在线观看| 一级毛片免费在线| 都市激情在线视频| 9999精品成人免费毛片在线看| 日韩性xxx| 久久gogo国模啪啪裸体| 免费毛片在线不卡| 激情六月综合| 国产在线不卡一区| 亚洲国产电影在线观看| 亚洲福利电影网| 9191国产精品| 国产一区二区三区毛片| 久久人人爽国产| 国产精品aaa| 91观看网站| 亚洲最大色综合成人av| aa免费在线观看| 朝桐光av一区二区三区| 久久综合久久鬼| 91免费视频播放| 久热在线视频精品网站| 成人黄色电影网址| 成年人视频在线观看免费| 激情aⅴ欧美一区二区欲海潮| 日韩福利影视| 菠萝蜜一区二区| 日韩国产欧美一区二区三区| 久久综合久色欧美综合狠狠| 午夜精品久久久久久久蜜桃app| 欧美日韩亚州综合| www.日本久久久久com.| 国产精品一区电影| 先锋影音男人资源| 韩国一区二区三区四区| 免费网站看av| 午夜小视频免费| 亚洲四虎av| 日本动漫理论片在线观看网站 | 黄色av免费| 婷婷在线播放| 欧亚精品一区| 免费人成精品欧美精品 | 男人天堂网在线视频| 美女喷水白浆| 五月香视频在线观看| 亚洲一区二区三区久久久| 久久久久国产精品| 不卡视频在线观看| 在线免费亚洲电影| 欧美精品videofree1080p| 久久久久久久久一区二区| 久久综合久久色| 日韩va亚洲va欧美va清高| 黄色aaa大片| 理论片播放午夜国外| 日韩精品极品| 久久久久久久久丰满| 91在线观看下载| 欧美精品第一页| 91精品国产91久久久久久久久| 免费日韩av电影| 国产精品视频中文字幕| 中文字幕一区二区三区精品| 久久精品成人欧美大片免费| 激情小视频在线观看| 久久九九精品视频| 日本不卡一区二区三区| 亚洲成a人在线观看| xxx成人少妇69| 欧美视频观看一区| 大乳护士喂奶hd| 亚洲AV无码乱码国产精品牛牛 | 欧美精品网站| 亚洲视频图片小说| 国产一区二区激情| 韩国成人av| 性色av浪潮av| 国产精品久久久久久69| 91热爆在线观看| 日韩精品视频在线看| 精品一区二区三区的国产在线播放| 精品日韩中文字幕| 午夜精品福利电影| 香港三级韩国三级日本三级| 精品一区在线视频| 奇米影视狠狠狠| 九色porny丨入口在线| 黄色成人精品网站| 午夜精品福利久久久| 国自产精品手机在线观看视频| www成人免费| 免费一级全黄少妇性色生活片| 在线a视频网站| 国产一二三在线| 亚洲综合精品| 欧洲亚洲国产日韩| 91欧美精品成人综合在线观看| 在线免费观看av网| 欧美一区二区三区成人片在线| 黄色电影免费在线看| 欧美色就是色| 亚洲欧美成aⅴ人在线观看| 色综合视频一区中文字幕| 国产免费黄色小视频| 亚洲成人第一网站| 中文字幕大看焦在线看| 精品精品99| 亚洲主播在线观看| 国产91在线视频| 精品人妻一区二区三| 手机看片福利在线| 日本在线观看高清完整版| 久久精品在线| 日韩精品一区二区三区四区| 久久精品一区二区三区不卡免费视频| 中国美女乱淫免费看视频| 国产一二三四| 国产一区高清| 日韩精品第一| 蜜乳av一区二区| 亚洲国产精品久久精品怡红院| 日韩欧美在线电影| 日本一级淫片免费放| 一级免费视频| 久久久久久久久久久9不雅视频| 午夜亚洲国产au精品一区二区| 国产精品久久久久久久久久久新郎| 91福利免费观看| 色先锋av男人资源先锋影院| 女人高潮被爽到呻吟在线观看| 精品亚洲成a人| 精品五月天久久| 精品国产一区二区三区无码| 91美女精品网站| 超碰97免费在线| 国产精品亚洲一区二区三区妖精| 国产一区二区精品丝袜| 亚洲 欧美 日韩 国产综合 在线| 国产精品女同一区二区| 日日夜夜天天综合入口| 成人丝袜18视频在线观看| 久久久精品视频成人| 国产精品igao| 性欧美video另类hd3| 99综合久久| 亚洲欧美日本韩国| 亚洲综合中文字幕在线| 一区视频免费观看| 日韩a在线看| 日韩高清不卡在线| 在线视频欧美性高潮| 精品日韩久久久| 精品一区二区三区五区六区七区| 精品视频一二| 午夜精品久久久久久久99水蜜桃| 国产综合av一区二区三区| 日操夜操天天操| 日本视频不卡| 成人a免费在线看| 88xx成人精品| 一级在线观看视频| 在线看中文字幕| 视频在线在亚洲| 日韩最新av在线| 日本r级电影在线观看| 俺去啦在线观看| 国产精品地址| 亚洲欧美一区二区三区情侣bbw| 黄色一级免费大片| 日本性生活网站| 国产精品黑丝在线播放| 日韩精品一区国产麻豆| 日本新janpanese乱熟| 高清精品一区二区三区一区| 欧美一区二区三| 亚洲成人xxx| 美女一区二区三区视频| 轻轻草在线视频| 在线一区电影| 一本一本久久a久久精品牛牛影视| 日本黄色一级网站| 国产午夜电影| 日韩电影在线免费看| 欧美激情2020午夜免费观看| 亚洲精品一区二区三区影院忠贞| 亚洲综合视频在线播放| 九色porny丨国产首页在线| 亚洲欧美自拍偷拍| 欧美一区二区福利| 国精产品一品二品国精品69xx| 国产精品一区二区美女视频免费看| 黄色一区二区在线观看| www亚洲国产| 欧美性xxxxxbbbbbb精品| 欧美丝袜丝交足nylons172| 亚洲激情视频在线| 蜜桃色一区二区三区| 四虎影院在线播放| 不卡欧美aaaaa| 国产福利不卡| 黑人操亚洲女人| 国产一区二区三区电影在线观看 | 毛片网站免费| 久久久久久色| 国产精品久久久久高潮| 少妇久久久久久久| vam成人资源在线观看| 欧美高清www午色夜在线视频| 日本在线观看免费视频| 免费av网页| 成人小视频免费观看| 好看的日韩精品视频在线| 无码国产色欲xxxx视频| 欧美日韩伦理| 色综合伊人色综合网站| 操她视频在线观看| heyzo中文字幕在线| 亚洲成人7777| 亚洲少妇久久久| 伊人色综合久久| 亚洲国产精品精华液2区45| 亚洲精品在线免费| 星空无限传媒在线| 青青草91视频| av激情久久| 中文字幕av手机在线| 激情久久久久| 国产精品麻豆va在线播放| 999av视频| 久久激情电影| 78色国产精品| 国产又大又粗又长| 日韩激情在线| 3344国产精品免费看| 国产尤物视频在线观看| 欧美国产小视频| 51精品在线观看| 啊啊啊国产视频| 日本我和搜子同居的日子高清在线| 99热精品国产| 国产成人三级视频| 九色免费视频| 欧美国产一区视频在线观看| 日本手机在线视频| 成本人h片动漫网站在线观看| 国产日韩亚洲欧美综合| 国产玉足脚交久久欧美| 一级日本免费的| 亚洲欧美另类久久久精品2019| 成人性生生活性生交12| 国产高清在线观看| 婷婷开心久久网| 先锋资源在线视频| 精精国产xxx在线视频app| 日韩欧美久久久| 亚洲不卡在线播放| 日韩精品一区国产| 久久精品国产综合| 国产精品久久久久久免费免熟 | 欧美黑人欧美精品刺激| 色是在线视频| 日韩av中文字幕在线播放| 精品无码人妻一区二区三区品 | 亚洲免费视频一区二区三区| 色哟哟精品一区| 白白色免费视频| 欧美一级做a| 日韩在线观看高清| 亚洲精品国产91| 国产电影一区| 欧美日韩福利电影| 丰满人妻一区二区三区无码av | 欧美国产亚洲精品| 欧美激情影音先锋| 天堂中文网在线| 国产曰批免费观看久久久| 丰满人妻一区二区三区53号| 日本一卡二卡四卡精品| 91福利视频久久久久| 亚洲视频一二三四| 大黄网站在线观看| 日韩精品在线第一页| 69国产精品视频免费观看| 一区二区电影在线观看| 国产精品制服诱惑| 狠狠激情五月综合婷婷俺| 亚洲欧洲综合另类在线 | 草莓视频app18在线视频| 日本一区二区免费在线观看视频| 一本色道久久亚洲综合精品蜜桃| 在线观看爽视频| 国产丝袜欧美中文另类| 啊啊啊国产视频| 日本成人伦理电影| 欧美国产日韩二区| 亚洲欧美日韩一区成人| 久久综合成人精品亚洲另类欧美 | 91久久久久久久| 成人免费乱码大片a毛片软件| 亚洲一区视频在线| 国产福利在线导航| 精品一区二区三区在线| 国产精品国模大尺度私拍| 免费看成一片| 欧美群妇大交群中文字幕| 91视频免费网址| 狼人精品一区二区三区在线 | 中文字幕美女视频|