亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

基于VC 6.0使用C語言實現俄羅斯方塊

2020-05-23 13:27:22
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言實現俄羅斯方塊的具體代碼,供大家參考,具體內容如下

裸寫的俄羅斯方塊的代碼,有意見或者想征用,直接評論留言即可。

效果如下:

VC,C語言,俄羅斯方塊

代碼:

/***************************************************************/ /*俄羅斯方塊的實現 * 基于VC 6.0 編譯鏈接即可運行 * 已實現的功能: * 1、初步的規劃及背景圖案的顯示 * 2、四種方塊實現左右移動、下鍵加速、上鍵變形(兩種變形)功能 * 3、下落方塊碰壁及觸碰到其它方塊的檢測 * 4、方塊積滿一行的消除并加分的功能 * 5、預測方塊的功能 * 6、引入set_windows_pos函數解決閃屏問題 * 未解決的缺陷或者代碼存在的問題 * 1、預測方塊處莫名其妙的出現背景塊 * 2、代碼耦合性太高,接口封裝還是不夠好 * 2017.3.22 * 版權:通渭縣西關小學四年級一班田剛 */ /***************************************************************/ #include<stdio.h> #include<windows.h> #include<conio.h> #include<string.h>  #define BACK        176//背景圖案 #define BACK_INT      -80//背景的整數表示 #define FRAME        178//分割框圖案 #define NODE        219//方塊圖案 #define NODE_INT      -37//方塊的整數表示       #define ERROR        -1 #define OK         0  int score = 0;//計分 static int time = 500;//時間,初始為500毫秒 char back[20][30] = {0};//豎直為x軸,橫軸為y軸,原點在右上角 int block_type = 0;//方塊類型  void backgroud_init(void);//畫面背景的初始化 void set_windows_pos(int i, int j);//指定光標位置 void block_display(int block_type, int dir_type, int coor_x, int coor_y, int color_type);//顯示或者消除方塊 void time_add(void);//加速函數 void block_type_change(void);//方塊類型變化 int block_move_check_x(int block_type, int dir_type, int coor_x, int coor_y);//檢測方塊是否觸到下面已經停止的方塊 int block_move_check_y(int block_type, int dir_type, int coor_x, int coor_y, int dir_block);//檢測方塊是否觸碰到左右的方塊 int new_back_y_check(int block_type, int dir_type, int coor_y);//檢測方塊是否觸碰到墻壁  int block_clear_sort(void);//檢測是否滿一行,需要消除得分 void block_clear_x(int row);//消除一個滿行(都是方塊)  int main(void) {   int c = 0;   int new_dir_type = 0;//新的方塊方向   int befor_dir_type = 0;//舊的方塊方向   int new_back_x = 0;//新的方塊頭坐標x   int new_back_y = 0;//新的方塊頭坐標y   int befor_back_x = 0;//舊的方塊頭坐標x   int befor_back_y = -1;//舊的方塊頭坐標y   int block_dir = -1;//方塊的移動方向    backgroud_init();//背景的顯示    while(1)   {        block_type_change();//方塊類型變化     new_back_y = 8;//每次方塊從最頂端出現時,其y坐標都為8     time = 500;          //怎樣在這里清除鍵盤輸入,flush不起作用      for(new_back_x = 0; new_back_x < 20; new_back_x++)     {       befor_dir_type = new_dir_type;       befor_back_x = new_back_x - 1;       befor_back_y = new_back_y;       block_dir = -1;//方塊的方向變量初始為-1              block_display(block_type, 0, 17, 26, NODE);//畫上預測區域的方塊        if(kbhit())//檢測有輸入       {         c = getch();         if(c > 0)         {                 switch(c)           {             case 119://上                 if(0 == new_dir_type)                 {                   new_dir_type = 1;//豎向                 }                 else                 {                   new_dir_type = 0;//橫向                 }                 break;             case 97://左                 new_back_y--;                 block_dir = 0;                 break;             case 100://右                 new_back_y++;                 block_dir = 1;                 break;             case 115://下                 time_add();//加速                 break;             default://ESC                 break;           }         }       }        new_back_y = new_back_y_check(block_type, new_dir_type, new_back_y);//檢查是否觸碰到左右壁               block_display(block_type, befor_dir_type, befor_back_x, befor_back_y, BACK);//原來的方塊位置清除掉        if(-1 != block_dir)//左右移動了方塊       {         if(ERROR == block_move_check_y(block_type, new_dir_type, new_back_x, new_back_y, block_dir))//檢查移動的方塊是觸碰到左右的方塊         {           new_back_y = befor_back_y;         }       }              block_display(block_type, new_dir_type, new_back_x, new_back_y, NODE);//畫下一個方塊位置        if(ERROR == block_move_check_x(block_type, new_dir_type, new_back_x, new_back_y))//檢查移動的方塊是否觸發到下面的方塊       {         break;       }              Sleep(time);     }      block_display(block_type, 0, 17, 26, BACK);//清楚預測區域的方塊           if(OK == block_clear_sort())//檢查下面方塊是否等夠得分,能得分則消除得分     {       set_windows_pos(8, 22);//更新得分       printf("%d", score);     }   }    return 0; }  /***************************************************************/ /***        畫面背景的初始化             ***/ /***其中原點在右上角,豎軸為x軸,橫軸為y軸。y(0 - 19)為方塊區***/ /***域,20 - 30 為計分區域及方塊預測提示區域         ***/ /***************************************************************/ void backgroud_init(void) {   int x = 0, y = 0;    for(x = 0; x < 20; x++)   {     for(y = 0; y < 20; y++)     {       back[x][y] = BACK;     }   }    for(x = 0; x < 20; x++)   {     for(y = 20; y < 30; y++)     {       if((0 == x) || (4 == x) || (10 == x) || (19 == x))       {         back[x][y] = FRAME;       }        if((20 == y) || (29 == y))       {         back[x][y] = FRAME;       }     }   }    //背景圖案的顯示   for(x = 0; x < 20; x++)   {     for(y = 0; y < 30; y++)     {       printf("%c", back[x][y]);     }          printf("/n");   }    //顯示TETRIS   set_windows_pos(2, 22);//移動windows的光標   printf("TETRIS/n");    //顯示積分   set_windows_pos(6, 22);//移動windows的光標   printf("SORT/n");   set_windows_pos(8, 22);   printf("%d/n", score);    //顯示下一個要出現的方塊   set_windows_pos(12, 22);//移動windows的光標   printf("EXPECT/n"); }  /***************************************************************/ /***    設置windows光標,類似于TC中的gotoxy       ***/ /***i,j 為要傳入的x,y坐標                  ***/ /***************************************************************/ void set_windows_pos(int i, int j)//設置windows光標,類似于TC中的gotoxy {    /*if((0 > i) || (0 > j))   {     return ERROR;   }*/    /*windows的橫軸是x軸,而本程序設計的是豎軸是X軸    這里做個轉換*/   COORD pos={j,i};   HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);   SetConsoleCursorPosition(hOut,pos); }    /***************************************************************/ /***********************消除/填上方塊***************************/ /***輸入:block_type 方塊類型 1:長條 2:2型 3:7型 4:田型***/ /***輸入:dir_type 方向類型 0:橫向 1:豎向         ***/ /***輸入:coor_x coor_y  方塊當前頭的坐標          ***/ /***輸入:color_type  圖標類型  BACK 背景色 NODE 方塊色  ***/ /***初始coor_x,coor_y為一個方塊的最右下的一個方塊的坐標   ***/ /***************************************************************/ void block_display(int block_type, int dir_type, int coor_x, int coor_y, int color_type) {   int x = 0, y = 0;    switch (block_type)   {     case 1://長條       if(0 == dir_type)//橫向       {         for(y = coor_y; y >= (coor_y - 3); y--)         {           back[coor_x][y] = color_type;//方塊色           set_windows_pos(coor_x, y);//移動windows的光標           printf("%c", back[coor_x][y]);         }       }       else if(1 == dir_type)//豎向       {         for(x = coor_x; (x >= (coor_x - 3)) && (x >= 0); x--)         {           back[x][coor_y] = color_type;//方塊色           set_windows_pos(x, coor_y);//移動windows的光標           printf("%c", back[x][coor_y]);         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 2://2型       if(0 == dir_type)//橫向       {         for(y = coor_y; y >= coor_y - 1; y--)         {           back[coor_x][y] = color_type;//方塊色           set_windows_pos(coor_x, y);//移動windows的光標           printf("%c", back[coor_x][y]);         }                  coor_x--;         coor_y--;          if(coor_x < 0)         {           return;         }                  for(y = coor_y; y >= coor_y - 1; y--)         {           back[coor_x][y] = color_type;//方塊色           set_windows_pos(coor_x, y);//移動windows的光標           printf("%c", back[coor_x][y]);         }       }       else if(1 == dir_type)//豎向       {         for(x = coor_x; (x >= coor_x - 1) && (x >= 0); x--)         {           back[x][coor_y] = color_type;//方塊色           set_windows_pos(x, coor_y);//移動windows的光標           printf("%c", back[x][coor_y]);          }                  coor_x--;         coor_y--;          if(coor_x < 0)         {           return;         }                  for(x = coor_x; x >= coor_x - 1; x--)         {           back[x][coor_y] = color_type;//方塊色           set_windows_pos(x, coor_y);//移動windows的光標           printf("%c", back[x][coor_y]);          }       }       else       {         printf("dir_type is error!/n");       }       break;     case 3://7型       if(0 == dir_type)//橫向       {         for(y = coor_y; y >= coor_y - 2; y--)         {           back[coor_x][y] = color_type;//方塊色           set_windows_pos(coor_x, y);//移動windows的光標           printf("%c", back[coor_x][y]);         }                  coor_x--;         coor_y = coor_y - 2;          if(coor_x < 0)         {           return;         }                  back[coor_x][coor_y] = color_type;//方塊色         set_windows_pos(coor_x, coor_y);//移動windows的光標         printf("%c", back[coor_x][coor_y]);       }       else if(1 == dir_type)//豎向       {         for(x = coor_x; (x >= coor_x - 2) && (x >= 0); x--)         {           back[x][coor_y] = color_type;//方塊色           set_windows_pos(x, coor_y);//移動windows的光標           printf("%c", back[x][coor_y]);         }                  coor_x = coor_x - 2;         coor_y--;                  if(coor_x < 0)         {           return;         }          back[coor_x][coor_y] = color_type;//方塊色         set_windows_pos(coor_x, coor_y);//移動windows的光標         printf("%c", back[coor_x][coor_y]);                }       else       {         printf("dir_type is error!/n");       }       break;     case 4://田型       if((0 == dir_type) || (1 == dir_type))//橫向       {         for(y = coor_y; y >= coor_y - 1; y--)         {           back[coor_x][y] = color_type;//方塊色           set_windows_pos(coor_x, y);//移動windows的光標           printf("%c", back[coor_x][y]);         }                  coor_x--;          if(coor_x < 0)         {           return;         }                  for(y = coor_y; y >= coor_y - 1; y--)         {           back[coor_x][y] = color_type;//方塊色           set_windows_pos(coor_x, y);//移動windows的光標           printf("%c", back[coor_x][y]);         }       }       else       {         printf("dir_type is error!/n");       }       break;     default:       printf("block_type is error!/n");       break;   } }  void time_add(void)//加速函數 {   if(500 == time)   {     time = 100;//減少的100毫秒   }   else if(100 == time)   {     time = 500;   }   else   {     ;//暫時留空   } }  void block_type_change(void)//方塊類型變化 {   block_type++;      if(block_type > 4)   {     block_type = 1;   } }  /***************************************************************/ /*******************方塊y坐標撞墻檢測***************************/ /***輸入:block_type 方塊類型 1:長條 2:2型 3:7型 4:田型***/ /***輸入:dir_type 方向類型 0:橫向 1:豎向         ***/ /***輸入:coor_y  方塊當前頭(右下角第一個方塊)的坐標     ***/ /***************************************************************/ int new_back_y_check(int block_type, int dir_type, int coor_y) {   if(coor_y > 19)   {     coor_y = 19;   }      switch (block_type)   {     case 1://長條       if(0 == dir_type)//橫向       {           if(coor_y - 3 < 0)         {           coor_y = 3;         }       }       else if(1 == dir_type)//豎向       {         if(coor_y < 0)         {           coor_y = 0;         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 2://2型       if(0 == dir_type)//橫向       {         if(coor_y - 2 < 0)         {           coor_y = 2;         }       }       else if(1 == dir_type)//豎向       {         if(coor_y - 1 < 0)         {           coor_y = 1;         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 3://7型       if(0 == dir_type)//橫向       {         if(coor_y - 2 < 0)         {           coor_y = 2;         }       }       else if(1 == dir_type)//豎向       {         if(coor_y - 1 < 0)         {           coor_y = 1;         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 4://田型       if((0 == dir_type) || (1 == dir_type))//橫向       {         if(coor_y - 1 < 0)         {           coor_y = 1;         }       }       else       {         printf("dir_type is error!/n");       }       break;     default:       printf("block_type is error!/n");       break;   }      return coor_y; }  /* 檢查方塊是否觸到下面已經停止的方塊,觸碰到就返回ERROR */ /***************************************************************/ /****檢查方塊是否觸到下面已經停止的方塊,觸碰到就返回ERROR  ***/ /***輸入:block_type 方塊類型 1:長條 2:2型 3:7型 4:田型***/ /***輸入:dir_type 方向類型 0:橫向 1:豎向         ***/ /***輸入:coor_x coor_y  方塊當前頭的坐標          ***/ /***初始coor_x,coor_y為一個方塊的最右下的一個方塊的坐標   ***/ /***************************************************************/ int block_move_check_x(int block_type, int dir_type, int coor_x, int coor_y) {   int ret = OK;   int x = 0, y = 0;      switch (block_type)   {     case 1://長條       if(0 == dir_type)//橫向       {           for(y = coor_y; y >= coor_y - 3; y--)         {           if(NODE_INT == back[coor_x + 1][y])           {             ret = ERROR;             break;           }         }       }       else if(1 == dir_type)//豎向       {         if(NODE_INT == back[coor_x + 1][coor_y])         {           ret = ERROR;         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 2://2型       if(0 == dir_type)//橫向       {         for(y = coor_y; y >= coor_y - 1; y--)         {           if(NODE_INT == back[coor_x + 1][coor_y])           {             ret = ERROR;             break;           }         }                  coor_x--;         coor_y =coor_y - 2 ;                  if(NODE_INT == back[coor_x + 1][coor_y])         {           ret = ERROR;         }       }       else if(1 == dir_type)//豎向       {         if(NODE_INT == back[coor_x + 1][coor_y])         {           ret = ERROR;         }                  coor_x--;         coor_y--;                  if(NODE_INT == back[coor_x + 1][coor_y])         {           ret = ERROR;         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 3://7型       if(0 == dir_type)//橫向       {         for(y = coor_y; y >= coor_y - 2; y--)         {           if(NODE_INT == back[coor_x + 1][y])           {             ret = ERROR;             break;           }         }       }       else if(1 == dir_type)//豎向       {         if(NODE_INT == back[coor_x + 1][coor_y])         {           ret = ERROR;         }                  coor_x = coor_x - 2;         coor_y--;                  if(NODE_INT == back[coor_x + 1][coor_y])         {           ret = ERROR;         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 4://田型       if((0 == dir_type) || (1 == dir_type))//橫向       {         for(y = coor_y; y >= coor_y - 1; y--)         {           if(NODE_INT == back[coor_x + 1][y])           {             ret = ERROR;             break;           }         }       }       else       {         printf("dir_type is error!/n");       }       break;     default:       printf("block_type is error!/n");       break;   }          return ret; }  /***************************************************************/ /****檢查方塊在向下移動的過程中是否觸到左右的方塊      ***/ /***輸入:block_type 方塊類型 1:長條 2:2型 3:7型 4:田型***/ /***輸入:dir_type 方向類型 0:橫向 1:豎向         ***/ /***輸入:coor_x coor_y  方塊當前頭(右下)的坐標      ***/ /***輸入:dir_block  當前方塊的移動方向(左右)        ***/ /***************************************************************/ int block_move_check_y(int block_type, int dir_type, int coor_x, int coor_y, int dir_block) {   int x = 0, y = 0;   int ret = OK;    switch (block_type)   {     case 1://長條       if(0 == dir_type)//橫向       {           if(1 == dir_block)//右移         {             if(NODE_INT == back[coor_x][coor_y])           {             ret = ERROR;           }         }         else if(0 == dir_block)//左移         {           if(NODE_INT == back[coor_x][coor_y - 3])           {             ret = ERROR;           }         }         else         {           printf("dir_block is error!");         }       }       else if(1 == dir_type)//豎向       {         //當長條為豎向時,不用判斷長條是往左移還是往右移         for(x = coor_x; x >= coor_x - 3; x--)         {           if(NODE_INT == back[x][coor_y])           {             ret = ERROR;             break;           }         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 2://2型       if(0 == dir_type)//橫向       {           if(1 == dir_block)//右移         {             if(NODE_INT == back[coor_x][coor_y])           {             ret = ERROR;             break;           }                      if(NODE_INT == back[coor_x - 1][coor_y - 1])           {             ret = ERROR;           }         }         else if(0 == dir_block)//左移         {           if(NODE_INT == back[coor_x][coor_y - 1])           {             ret = ERROR;             break;           }                      if(NODE_INT == back[coor_x - 1][coor_y - 2])           {             ret = ERROR;           }         }         else         {           printf("dir_block is error!");         }       }       else if(1 == dir_type)//豎向       {         if(1 == dir_block)//右移         {             for(x = coor_x; x >= coor_x - 1; x--)           {             if(NODE_INT == back[x][coor_y])             {               ret = ERROR;               break;             }             }                      if(NODE_INT == back[coor_x - 2][coor_y - 1])           {             ret = ERROR;           }         }         else if(0 == dir_block)//左移         {           if(NODE_INT == back[coor_x][coor_y])           {             ret = ERROR;             break;           }                      coor_x--;           coor_y--;                      for(x = coor_x; x >= coor_x - 1; x--)           {             if(NODE_INT == back[x][coor_y])             {               ret = ERROR;               break;             }           }         }         else         {           printf("dir_block is error!");         }         }       else       {         printf("dir_type is error!/n");       }       break;     case 3://7型       if(0 == dir_type)//橫向       {         if(1 == dir_block)//右移         {             if(NODE_INT == back[coor_x][coor_y])           {             ret = ERROR;             break;           }                      if(NODE_INT == back[coor_x - 1][coor_y - 2])           {             ret = ERROR;           }         }         else if(0 == dir_block)//左移         {           if(NODE_INT == back[coor_x][coor_y - 2])           {             ret = ERROR;             break;           }                      if(NODE_INT == back[coor_x - 1][coor_y - 2])           {             ret = ERROR;           }         }         else         {           printf("dir_block is error!");         }       }       else if(1 == dir_type)//豎向       {         if(1 == dir_block)//右移         {             for(x = coor_x; (x >= coor_x - 2) && (x >= 0); x--)           {             if(NODE_INT == back[x][coor_y])             {               ret = ERROR;               break;             }           }         }         else if(0 == dir_block)//左移         {           for(x = coor_x - 1; (x >= coor_x - 2) && (x >= 0); x--)           {             if(NODE_INT == back[x][coor_y])             {               ret = ERROR;               break;             }           }                    coor_x = coor_x - 2;           coor_y--;            if(NODE_INT == back[coor_x][coor_y])           {             ret = ERROR;           }         }         else         {           printf("dir_block is error!");         }       }       else       {         printf("dir_type is error!/n");       }       break;     case 4://田型       if((0 == dir_type) || (1 == dir_type))//橫向       {         if(1 == dir_block)//右移         {             for(x = coor_x; x >= coor_x - 1; x--)           {             if(NODE_INT == back[x][coor_y])             {               ret = ERROR;               break;             }           }         }         else if(0 == dir_block)//左移         {           for(x = coor_x; x >= coor_x - 1; x--)           {             if(NODE_INT == back[x][coor_y - 1])             {               ret = ERROR;               break;             }           }         }         else         {           printf("dir_block is error!");         }       }       else       {         printf("dir_type is error!/n");       }       break;     default:       printf("block_type is error!/n");       break;   }          return ret; }  void block_clear_x(int row)//消除某一行 {   int x = 0, y = 0;      char back_replace[20][30] = {0};//替代back      memcpy(back_replace, back, sizeof(back));//將back暫存到back_replace中      for(x = 0; x <= row; x++)   {     for(y = 0; y < 20; y++)     {       back[x][y] = BACK;//初始化未背景色     }   }    for(x = row; x >= 1; x--)   {     for(y = 0; y < 20; y++)     {         back[x][y] = back_replace[x - 1][y];//消除一行,方塊下沉     }   }    set_windows_pos(0, 0);//移動windows的光標    for(x = 0; x < 20; x++)   {     for(y = 0; y < 20; y++)     {       printf("%c", back[x][y]);     }          printf("/n");   } }  /* 檢查是否消行并且進行計分 */ int block_clear_sort(void) {   int x = 0, y = 0;   int ret = ERROR;   int flag = 0;      for(x = 19; x >= 0; x--)//行   {     flag = 0;          for(y = 0; y < 20; y++)     {       if(NODE_INT == back[x][y])       {           flag++;//一行的塊計數       }              if(20 == flag)//表示一行有20個方塊       {         block_clear_x(x);//消行         score++;//加分         ret = OK;       }     }   }      return ret; } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲v日韩v综合v精品v| 日日狠狠久久偷偷四色综合免费| 精品久久久一区二区| 91精品国产综合久久久久久久久| 亚洲影院色在线观看免费| 成人精品一区二区三区| 国产成人精品日本亚洲专区61| 国产免费成人av| 亚洲精品美女网站| 色综合久久88色综合天天看泰| 日韩av中文字幕在线播放| 91久久国产婷婷一区二区| 久久久在线观看| 国产在线不卡精品| 国产高清视频一区三区| 国产精品极品美女粉嫩高清在线| 亚洲欧美国产高清va在线播| 成人免费观看网址| 日韩精品在线观看一区二区| 成人夜晚看av| 中文字幕亚洲综合| 欧美第一页在线| 狠狠躁18三区二区一区| 国产精品久久久久久久久久免费| 亚州欧美日韩中文视频| 国产亚洲精品高潮| 欧美日本在线视频中文字字幕| 国产深夜精品福利| 欧美限制级电影在线观看| 国产婷婷成人久久av免费高清| 久久好看免费视频| 欧美一级片在线播放| 日韩电影免费观看中文字幕| 国产精品综合久久久| 欧美在线免费视频| 亚洲在线www| 日韩av片免费在线观看| 亚洲成人免费网站| 激情久久av一区av二区av三区| 中文字幕精品—区二区| 成人精品视频久久久久| 成人免费黄色网| 国内精品在线一区| 91香蕉嫩草神马影院在线观看| 91久久精品视频| 91chinesevideo永久地址| 爽爽爽爽爽爽爽成人免费观看| 国产精品久久久久久久久久三级| 久久精品国产久精国产一老狼| 亚洲影视九九影院在线观看| 乱亲女秽乱长久久久| 亚洲免费视频一区二区| 国产亚洲欧洲黄色| 91成人天堂久久成人| 国产欧美日韩中文| 欧美日韩亚洲激情| 亚洲精品一区二区久| 亚洲精品乱码久久久久久按摩观| 最好看的2019年中文视频| 亚洲色图日韩av| 日本精品中文字幕| 国产ts一区二区| 国内精品免费午夜毛片| 国产精品99久久久久久白浆小说| www.欧美三级电影.com| 亚洲一区二区久久久| 人妖精品videosex性欧美| 自拍偷拍免费精品| 国产亚洲精品久久久久动| 国产午夜精品美女视频明星a级| 992tv在线成人免费观看| 日本精品视频在线观看| 91精品久久久久| 国产精品成人播放| 91久久久久久久一区二区| 久久99热精品这里久久精品| 欧美一区二区大胆人体摄影专业网站| 亚洲国产精品字幕| 欧美日韩国产中文精品字幕自在自线| 日韩国产高清污视频在线观看| 欧美理论电影在线观看| 亚洲国产精品va在线看黑人| 亚洲视频电影图片偷拍一区| 精品高清一区二区三区| 欧美一级bbbbb性bbbb喷潮片| 97精品在线视频| 精品成人乱色一区二区| 夜夜嗨av色综合久久久综合网| 亚洲天堂一区二区三区| 国产精品毛片a∨一区二区三区|国| 亚洲男人av在线| 成年人精品视频| 欧美国产亚洲视频| 姬川优奈aav一区二区| 国产精自产拍久久久久久蜜| 亚洲欧美激情一区| 中文字幕久久久av一区| 欧美大片免费观看在线观看网站推荐| 性日韩欧美在线视频| 精品日本高清在线播放| 亚洲欧美日韩国产中文专区| 一本大道亚洲视频| 正在播放亚洲1区| 日韩精品在线看| 亚洲大胆人体视频| 日韩成人小视频| 日韩电影中文字幕av| 欧美日韩亚洲成人| 91av在线免费观看| 国产亚洲精品va在线观看| 中文字幕一精品亚洲无线一区| 亚洲小视频在线| 成人福利在线视频| 久久久国产视频91| 欧美精品一区二区三区国产精品| 一区二区三区黄色| 国产福利视频一区| 日韩成人在线视频观看| 日韩av综合中文字幕| 亚洲成在人线av| 国产这里只有精品| 国产欧美一区二区白浆黑人| 久久久久久国产免费| 亚洲综合在线小说| 亚洲一级一级97网| 日韩欧中文字幕| 97国产suv精品一区二区62| 91精品国产91久久久久久吃药| 欧美极品欧美精品欧美视频| 色噜噜久久综合伊人一本| 欧美综合在线第二页| 日韩在线观看免费av| 精品久久久久国产| 日韩中文有码在线视频| 日本一区二三区好的精华液| 91精品国产自产在线老师啪| 7777精品视频| 国产欧美一区二区三区久久| 91精品国产综合久久男男| 欧美贵妇videos办公室| 亚洲日韩欧美视频一区| 欧美激情亚洲自拍| 欧美成人精品影院| 国产精品69av| 粗暴蹂躏中文一区二区三区| 国产狼人综合免费视频| 国产日韩欧美成人| 亚洲精品mp4| 国产精品视频地址| 国产区精品视频| 欧美激情视频三区| 国产美女精彩久久| 国产精品高清网站| 欧美日韩美女在线| 久久视频这里只有精品| 久久久亚洲国产| 国产精品人成电影| 国产日韩欧美视频在线| 欧美野外猛男的大粗鳮| 亚洲美女av在线播放| 日韩精品有码在线观看| 国产69精品久久久| 韩国v欧美v日本v亚洲| 亚洲成人精品在线|