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

立即注冊 登錄
返回首頁

uid:150126的個人空間

日志

STM32 F103開發(fā)的貪吃蛇游戲(帶觸摸功能)

已有 999 次閱讀2017-6-1 13:16 |個人分類:程序| 貪吃蛇, 觸摸, 開發(fā), 游戲

include "gui.h"

#ifdef USE_FONT_UPDATE
#include "ff.h"
#include "diskio.h"
#endif

#ifdef USE_FLASH_CHAR
#include "flash.h"
#else
#include "asciicode.h"
#include "chfont.h"
#endif

#ifdef USE_FONT_UPDATE
#include "malloc.h"
#endif

//---èç1ûòaÏÔê¾í¼Æ¬¾íìí¼óÕa¸öí·Îļt---//
#ifdef PICTURE_SHOW

#include "picture.h"

#endif



/****************************************************************************
* Function Name  : GUI_Dot
* Description    : Ôú2êÆáéÏÃæ»-ò»μã
* Input          : x£oμãμÄX×ø±ê
*                * y£oμãμÄY×ø±ê
*                * color£oμãμÄÑÕé«
* Output         : None
* Return         : None
****************************************************************************/

void GUI_Dot(uint16_t x, uint16_t y, uint16_t color)
{  
TFT_SetWindow(x, y, x, y);  //éèÖÃμãμÄλÖÃ
TFT_WriteData_Color(color);       //»-μã
}


/****************************************************************************
*oˉêyÃû£oGUI_Line 
*êä  èë£oxStart£oÖ±ÏßμÄÆeê¼X×ø±ê
*      * yStart£oÖ±ÏßμÄÆäêμY×ø±ê
*      * xEnd£oÖ±ÏßμĽáêøX×ø±ê
*      * yEnd£oÖ±ÏßμĽáêøY×ø±ê
*      * color£oÖ±ÏßμÄÑÕé«
*êä  3ö£o
*1|  Äü£o»-ò»ìõÖ±Ïß
****************************************************************************/  

void GUI_Line(u16 xStart, u16 yStart, u16 xEnd, u16 yEnd, u16 color)
{
u16 t;  
int xerr = 0, yerr = 0, delta_x, delta_y, distance;  
int incx, incy;  
u16 row, col;  
delta_x = xEnd - xStart;//¼ÆËã×ø±êÔöá¿  
delta_y = yEnd - yStart;  
col = xStart;  
row = yStart;  
if (delta_x > 0)
{
incx=1;//éèÖÃμ¥2½·½Ïò
}  
else    
{  
   if (delta_x == 0)
{
incx = 0;//′1Ö±Ïß 
}  
   else 
{
incx = -1;
delta_x = -delta_x;
}  
}  
if (delta_y > 0)
{
incy = 1;
}  
else  
{  
   if (delta_y == 0)
{
incy = 0;//ˮƽÏß  
   else 
{
incy = -1;
delta_y = -delta_y;
}  
}  
if (delta_x > delta_y)
distance = delta_x;//ѡ衻ù±¾Ôöá¿×ø±êÖá  
}
else
{
distance = delta_y; 
}
for (t=0; t<=distance+1; t++)  
{                                     //»-Ïßêä3ö  
   GUI_Dot(col, row, color);
   xerr += delta_x;  
   yerr += delta_y;  
  if(xerr > distance)  
   {  
       xerr -= distance;  
       col += incx;  
   }  
   if(yerr > distance)  
   {  
       yerr -= distance;  
       row += incy;  
   }  
}  
}

//»-¾ØDÎ  
//(x1,y1),(x2,y2):¾ØDÎμĶԽÇ×ø±ê
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2,u16 color)
{
GUI_Line(x1,y1,x2,y1,color);
GUI_Line(x1,y1,x1,y2,color);
GUI_Line(x1,y2,x2,y2,color);
GUI_Line(x2,y1,x2,y2,color);
}


//ÔúLCDéÏμÄ£¨x£¬y£©′|»-μã
//color£oμãμÄÑÕé«
void LCD_Draw_Point(u16 x,u16 y,u16 color)
{
    GUI_Dot(x,y,color);
}
//ÔúÖ¸¶¨Î»Öà ÏÔê¾1¸ö16*16μÄoo×Ö
//(x,y):oo×ÖÏÔê¾μÄλÖÃ
//index:tfontêy×éàïÃæμÄμú¼¸¸öoo×Ö
//color:Õa¸öoo×ÖμÄÑÕé«
void Test_Show_CH_Font16(u16 x,u16 y,u8 index,u16 color)
{      
u8 temp,t,t1;
u16 y0=y;   
    for(t=0;t<32;t++)//ÿ¸ö16*16μÄoo×ÖμãÕó óD32¸ö×Ö½ú
    {   
if(t<16)temp=tfont16[index*2][t];      //ǰ16¸ö×Ö½ú
else temp=tfont16[index*2+1][t-16];    //oó16¸ö×Ö½ú                          
        for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//»-êμDÄμã
else LCD_Draw_Point(x,y,GRAY);   //»-¿Õ°×μ㣨ê1óñ3¾°é«£©
temp<<=1;
y++;
if((y-y0)==16)
{
y=y0;
x++;
break;
}
}    
    }          
}
//ÔúÖ¸¶¨Î»Öà ÏÔê¾1¸ö24*24μÄoo×Ö
//(x,y):oo×ÖÏÔê¾μÄλÖÃ
//index:tfontêy×éàïÃæμÄμú¼¸¸öoo×Ö
//color:Õa¸öoo×ÖμÄÑÕé«
void Test_Show_CH_Font24(u16 x,u16 y,u8 index,u16 color)
{      
u8 temp,t,t1;
u16 y0=y;   
    for(t=0;t<72;t++)//ÿ¸ö24*24μÄoo×ÖμãÕó óD72¸ö×Ö½ú
    {   
if(t<24)temp=tfont24[index*3][t];           //ǰ24¸ö×Ö½ú
else if(t<48)temp=tfont24[index*3+1][t-24]; //ÖD24¸ö×Ö½ú                          
        else temp=tfont24[index*3+2][t-48];         //oó24¸ö×Ö½ú
   for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//»-êμDÄμã
else LCD_Draw_Point(x,y,GRAY);   //»-¿Õ°×μ㣨ê1óñ3¾°é«£©
temp<<=1;
y++;
if((y-y0)==24)
{
y=y0;
x++;
break;
}
}    
    }          
}
//2aêÔ2¸öoo×ÖÏÔê¾oˉêy
void TEST_FONT(void)
{
u8 t;
u8 x,x1;
x=x1=50;
for(t=0;t<7;t++)//6¸öoo×Ö
{
Test_Show_CH_Font16(x ,50,t,RED);
Test_Show_CH_Font24(x1,70,t,RED);
x+=16;
x1+=24;
}
}






/****************************************************************************
* Function Name  : GUI_Box
* Description    : ¸øò»¸öÇøóòí¿éÏÑÕé«
* Input          : sx£oÆeê¼X×ø±ê, sy£oÆäêμY×ø±ê, 
*                * ex£oÖÕÖ1X×ø±ê, ey£oÖÕÖ1Y×ø±ê,
*                * color£o·½¿òμÄÑÕé«
* Output         : None
* Return         : None
****************************************************************************/

void GUI_Box(uint16_t xState, uint16_t yState, uint16_t xEnd, uint16_t yEnd, uint16_t color)
uint16_t temp;

    if((xState > xEnd) || (yState > yEnd))
    {
        return;
    }   
TFT_SetWindow(xState, yState, xEnd, yEnd); 
    xState = xEnd - xState + 1;
yState = yEnd - yState + 1;

while(xState--)
{
temp = yState;
while (temp--)
{
TFT_WriteData_Color(color);
}
}
}

/****************************************************************************
* Function Name  : GUI_DrowSign
* Description    : »-ò»¸öê®×Öμıê¼Ç
* Input          : x£o±ê¼ÇμÄX×ø±ê£»
*                * y£o±ê¼ÇμÄY×ø±ê
*                * color£o±ê¼ÇμÄÑÕé«
* Output         : None
* Return         : None
****************************************************************************/

void GUI_DrowSign(uint16_t x, uint16_t y, uint16_t color)
{
    uint8_t i;

    /* »-μã */
    TFT_SetWindow(x-1, y-1, x+1, y+1);
    for(i=0; i<9; i++)
    {
        TFT_WriteData_Color(color);    
    }

    /* »-êú */
    TFT_SetWindow(x-4, y, x+4, y);
    for(i=0; i<9; i++)
    {
        TFT_WriteData_Color(color);    
    }

    /* »-oá */
    TFT_SetWindow(x, y-4, x, y+4);
    for(i=0; i<9; i++)
    {
        TFT_WriteData_Color(color);    
    }
}

#ifndef USE_FLASH_CHAR
/****************************************************************************
* Function Name  : GUI_Show12ASCII
* Description    : D′12oÅASCIIÂë
* Input          : x£oÆeê¼X×ø±ê
*                * y£oÆeê¼Y×ø±ê
*                * p£o×Ö·û′®ê×μØÖ·
*                * wordColor£o×ÖìåÑÕé«
*                * backColor£o±3¾°ÑÕé«
* Output         : None
* Return         : None
****************************************************************************/

void GUI_Show12ASCII(uint16_t x, uint16_t y, uint8_t *p, 
                     uint16_t wordColor, uint16_t backColor)
{
uint8_t i, wordByte, wordNum;
uint16_t color;

while(*p != '\0')   //¼ì2aêÇ·ñêÇ×îoóò»¸ö×Ö
{
        /* Ôú×Ö¿aÖDμÄASCIIÂëêÇ′ó¿Õ¸ñ¿aê¼μÄò2¾íêÇ32¿aê¼μÄ£¬ËùòÔ¼õè¥32 */
wordNum = *p - 32;
        TFT_SetWindow(x, y, x+7, y+15);           //×Ö¿í*¸ßÎa£o8*16
for (wordByte=0; wordByte<16; wordByte++) //ÿ¸ö×ÖÄ£ò»12óD16¸ö×Ö½ú
{
color = ASCII8x16[wordNum][wordByte];
for (i=0; i<8; i++) 
{
if ((color&0x80) == 0x80)
{
TFT_WriteData_Color(wordColor);
}
else
{
TFT_WriteData_Color(backColor);
}
color <<= 1;
}
}

p++;    //Ö¸ÕëÖ¸ÏòÏÂò»¸ö×Ö
        /* ÆáÄ»×ø±ê′|àí */
        x += 8;
        if(x > 233)   //TFT_XMAX -8
        {
            x = 0;
            y += 16;    
        }
}
}

#else

/****************************************************************************
* Function Name  : GUI_Show12Char
* Description    : í¨1yFLASH×Ö¿aÏÔê¾12oÅ×Öĸoíoo×Ö£¨ê1óÃGBK£©
* Input          : x£oÆeê¼X×ø±ê
*                * y£oÆeê¼Y×ø±ê
*                * ch£o×Ö·û′®ê×μØÖ·
*                * wordColor£o×ÖìåÑÕé«
*                * backColor£o±3¾°ÑÕé«
* Output         : None
* Return         : None
****************************************************************************/

void GUI_Show12Char(uint16_t x, uint16_t y, uint8_t *ch, 
                    uint16_t wordColor, uint16_t backColor)
{
    uint8_t i, j, color, buf[32];
    uint16_t asc;
    uint32_t wordAddr = 0;

    while(*ch != '\0')
    {
        /*ÏÔê¾×Öĸ */
        if(*ch < 0x80)  //ASCIIÂë′ó0~127
        {
            /* Ôú×Ö¿aÖDμÄASCIIÂëêÇ′ó¿Õ¸ñ¿aê¼μÄò2¾íêÇ32¿aê¼μÄ£¬ËùòÔ¼õè¥32 */
    wordAddr = *ch - 32;
            wordAddr *= 16;
            wordAddr += GUI_FLASH_ASCII_ADDR;
            
            /* ¶áè¡FLASHÖD¸Ã×ÖμÄ×ÖÄ£ */
            FLASH_ReadData(buf, wordAddr, 16);
            
            /* ÏÔ꾸ÃÎÄ×Ö */
            TFT_SetWindow(x, y, x+7, y+15);           //×Ö¿í*¸ßÎa£o8*16
    for (j=0; j<16; j++) //ÿ¸ö×ÖÄ£ò»12óD16¸ö×Ö½ú
    {
    color = buf[j];
    for (i=0; i<8; i++) 
    {
    if ((color&0x80) == 0x80)
    {
    TFT_WriteData_Color(wordColor);
    }
    else
    {
    TFT_WriteData_Color(backColor);
    }
    color <<= 1;
    }
    }
    
    ch++;    //Ö¸ÕëÖ¸ÏòÏÂò»¸ö×Ö
   
            /* ÆáÄ»×ø±ê′|àí */
            x += 8;
            if(x > 233)   //TFT_XMAX -8
            {
                x = 0;
                y += 16;    
            }            
        }
        /* ÏÔê¾oo×Ö */
        else
        {
            /* ½«oo×Ö±àÂë×a»»3éÔúFLASHÖDμÄμØÖ· */
            asc = *ch - 0x81;     //¸ß×Ö½úêDZíê¾·ÖÇø£¬·ÖÇøêÇ′ó0x81μ½0xFE,ËùòÔ×a»»3éμØÖ·-0x80
            wordAddr = asc * 190; //ÿ¸ö·ÖÇøò»12óD190¸ö×Ö
    
            asc = *(ch + 1); //μí×Ö½ú′ú±íÿ¸ö×ÖÔúÿ¸ö·ÖÇøμÄλÖã¬ËüêÇ′ó0x40μ½0xFF
            if(asc < 0x7F)   //Ôú0x7FλÖÃóD¸ö¿Õ룬μ«êÇÎòÃÇè¡Ä£2»áô¿Õ£¬ËùòÔ′óóú0x7FÖ®oó¶à¼õò»
            {
                asc -= 0x40;
            }
            else
            {
                asc -= 0x41;
            }
            
            wordAddr += asc; //Çó3öÔúGBKÖDêÇμú¼¸¸ö×Ö
            wordAddr *= 32;  //½«×ÖλÖÃ×a»»Î»FLASHμØÖ·
            wordAddr += GUI_FLASH_12CHAR_ADDR; //¼óéÏê×μØÖ·
    
            /* ¶áè¡FLASHÖD¸Ã×ÖμÄ×ÖÄ£ */
            FLASH_ReadData(buf, wordAddr, 32);
    
            /* Ôú2êÆáéÏÃæÏÔê¾ */
            TFT_SetWindow(x, y, x+15, y+15);
            for(i=0; i<32; i++)
            {
                 
                color = buf[i];            
                for(j=0; j<8; j++) 
        {
        if((color & 0x80) == 0x80)
        {
        TFT_WriteData_Color(wordColor);
        }
        else
        {
        TFT_WriteData_Color(backColor);
       
        color <<= 1;
        }//for(j=0;j<8;j++)½áêø
            }
    
            /* ÆáÄ»×ø±ê′|àí */
            x += 16;
            if(x > 225)   //TFT_XMAX -15
            {
                x = 0;
                y += 16;    
            }
    
            /* D′ÏÂò»¸ö×Ö£¬Ã¿¸öoo×Öռὸö×Ö½úËùòÔ+2 */
            ch += 2;             
        }
    }    
}
/****************************************************************************
* Function Name  : GUI_Show12Chinese
* Description    : í¨1yFLASH×Ö¿aÏÔê¾12oÅoo×Ö£¨ê1óÃGBK£©
* Input          : x£oÆeê¼X×ø±ê
*                * y£oÆeê¼Y×ø±ê
*                * cn£o×Ö·û′®ê×μØÖ·
*                * wordColor£o×ÖìåÑÕé«
*                * backColor£o±3¾°ÑÕé«
* Output         : None
* Return         : None
****************************************************************************/

void GUI_Show16Chinese(uint16_t x, uint16_t y, uint8_t *cn, 
                       uint16_t wordColor, uint16_t backColor)
{   
    uint8_t i, j, color, buf[63];
    uint16_t asc;
    uint32_t wordAddr = 0;    
    while(*cn != '\0')
    {  
        /* ½«oo×Ö±àÂë×a»»3éÔúFLASHÖDμÄμØÖ· */
        asc = *cn - 0x81;     //¸ß×Ö½úêDZíê¾·ÖÇø£¬·ÖÇøêÇ′ó0x81μ½0xFE,ËùòÔ×a»»3éμØÖ·-0x80
        wordAddr = asc * 190; //ÿ¸ö·ÖÇøò»12óD190¸ö×Ö

        asc = *(cn + 1); //μí×Ö½ú′ú±íÿ¸ö×ÖÔúÿ¸ö·ÖÇøμÄλÖã¬ËüêÇ′ó0x40μ½0xFF
        if(asc < 0x7F)   //Ôú0x7FλÖÃóD¸ö¿Õ룬μ«êÇÎòÃÇè¡Ä£2»áô¿Õ£¬ËùòÔ′óóú0x7FÖ®oó¶à¼õò»
        {
            asc -= 0x40;
        }
        else
        {
            asc -= 0x41;
        }
        
        wordAddr += asc; //Çó3öÔúGBKÖDêÇμú¼¸¸ö×Ö
        wordAddr *= 63;  //½«×ÖλÖÃ×a»»Î»FLASHμØÖ·
        wordAddr += GUI_FLASH_16CHAR_ADDR; //¼óéÏê×μØÖ·

        /* ¶áè¡FLASHÖD¸Ã×ÖμÄ×ÖÄ£ */
        FLASH_ReadData(buf, wordAddr, 63);

        /* Ôú2êÆáéÏÃæÏÔê¾ */
        TFT_SetWindow(x, y, x+23, y+20);
        for(i=0; i<63; i++)
        {
            color = buf[i];            
            for(j=0; j<8; j++) 
    {
    if((color & 0x80) == 0x80)
    {
    TFT_WriteData_Color(wordColor);
    }
    else
    {
    TFT_WriteData_Color(backColor);
   
    color <<= 1;
    }//for(j=0;j<8;j++)½áêø
        }

        /* ÆáÄ»×ø±ê′|àí */
        x += 21;
        if(x > 218)   //TFT_XMAX -21
        {
            x = 0;
            y += 21;    
        }

        /* D′ÏÂò»¸ö×Ö£¬Ã¿¸öoo×Öռὸö×Ö½úËùòÔ+2 */
        cn += 2;      
    }    
}

#endif


#ifdef PICTURE_SHOW

void GUI_ShowPicture(uint x, uint y, uint wide, uint high)
{
uint temp = 0;
long tmp=0,num=0;
TFT_SetWindow(x, y, x+wide-1, y+high-1);
num = wide * high*2 ;
do
{  
temp = pic[tmp + 1];
temp = temp << 8;
temp = temp | pic[tmp];
TFT_WriteData_Color(temp);//ÖeμãÏÔê¾
tmp += 2;
}
while(tmp < num);
}

#endif


#ifdef USE_FONT_UPDATE

/****************************************************************************
* Function Name  : GUI_FontUpdate
* Description    : ¸üDÂ×Ö¿a
* Input          : updateState£oÑ¡Ôñ¸üDÂμÄ×Ö¿a
* Output         : None
* Return         : None
****************************************************************************/

void GUI_FontUpdate(uint8_t updateState)
{
    FRESULT res;
FIL fsrc;
UINT  br;
    uint32_t wordAddr, i, j;

#ifdef __MALLOC_H
    uint8_t *p;
    p = malloc(4096);                  //¿a±ùò»¸öÄú′æ¿é
    if(p == 0)
    {
        return;
    }
#else
uint8_t buffer[512];
#endif    

    /* ¸üDÂASCII×Ö¿a */
    if((updateState & GUI_UPDATE_ASCII) == GUI_UPDATE_ASCII)
    {
        /* éèÖÃD′èëÆeê¼μØÖ· */
        wordAddr = GUI_FLASH_ASCII_ADDR;
        j = 0;

        /* ′ò¿a¶áè¡Îļt */
        res = f_open(&fsrc, GUI_ASCII_FILE, FA_READ);
    if(res == FR_OK)  //′ò¿a3é1|
        { 
          for (;;)      //¿aê¼¶áè¡êy¾Y
          {       
#ifdef __MALLOC_H
                res = f_read(&fsrc, p, 4096, &br);
    
                /* ½«¶áè¡μ½μÄêy¾YD′èëFLASH */
                FLASH_WriteData(p, wordAddr, br);
             wordAddr += br;   //D′èëμØÖ·Ôö¼ó

#else
                res = f_read(&fsrc, buffer, sizeof(buffer), &br);
    
                /* ½«¶áè¡μ½μÄêy¾YD′èëFLASH */
                FLASH_WriteData(buffer, wordAddr, br);
             wordAddr += br;   //D′èëμØÖ·Ôö¼ó
#endif
                j += br;
                i = j * 100 / 1456;
                GUI_Box(0, 80, i, 90, RED);    

                if (res || br == 0)
    {
    break;    // error or eof 
    }
            } 
        }
     
        f_close(&fsrc);  //2»ÂÛêÇ′ò¿a£¬»1êÇD½¨Îļt£¬ò»¶¨¼ÇμÃ1رÕ
    }

    /* ¸üDÂ12oÅoo×Ö¿a */
    if((updateState & GUI_UPDATE_12CHAR) == GUI_UPDATE_12CHAR)
    {
        wordAddr = GUI_FLASH_12CHAR_ADDR;
        j = 0;

        res = f_open(&fsrc, GUI_12CHAR_FILE, FA_READ);
   
    if(res == FR_OK) 
        {  
          for (;;)  
          {      
#ifdef __MALLOC_H
                res = f_read(&fsrc, p, 4096, &br);
    
                /* ½«¶áè¡μ½μÄêy¾YD′èëFLASH */
                FLASH_WriteData(p, wordAddr, br);
             wordAddr += br;   //D′èëμØÖ·Ôö¼ó
#else
                res = f_read(&fsrc, buffer, sizeof(buffer), &br);
    
                FLASH_WriteData(buffer, wordAddr, br);
             wordAddr += br;
#endif
                j += br;
                i = j * 100 / 766080;
                GUI_Box(0, 95, i, 105, RED);    

    
                if (res || br == 0)
    {
    break;    // error or eof 
    }
            } 
        }
        f_close(&fsrc);  //2»ÂÛêÇ′ò¿a£¬»1êÇD½¨Îļt£¬ò»¶¨¼ÇμÃ1رÕ
    }
    
    /* ¸üDÂ16oÅoo×Ö¿a */
    if((updateState & GUI_UPDATE_16CHAR) == GUI_UPDATE_16CHAR)
    {
        
        wordAddr = GUI_FLASH_16CHAR_ADDR;
        j = 0;

        res = f_open(&fsrc, GUI_16CHAR_FILE, FA_READ);
    if(res == FR_OK) 
        { 
          for (;;)  
          {       
#ifdef __MALLOC_H
                res = f_read(&fsrc, p, 4096, &br);
    
                /* ½«¶áè¡μ½μÄêy¾YD′èëFLASH */
                FLASH_WriteData(p, wordAddr, br);
             wordAddr += br;   //D′èëμØÖ·Ôö¼ó
#else
                res = f_read(&fsrc, buffer, sizeof(buffer), &br);
    
                FLASH_WriteData(buffer, wordAddr, br);
             wordAddr += br;
#endif
                j += br;
                i = j * 100 / 1508220;
                GUI_Box(0, 110, i, 120, RED);    

    
                if (res || br == 0)
    {
    break;    // error or eof 
    }
            } 
        }
     
        f_close(&fsrc);  //2»ÂÛêÇ′ò¿a£¬»1êÇD½¨Îļt£¬ò»¶¨¼ÇμÃ1رÕ
    }
#ifdef __MALLOC_H
    free(p);
#endif
 
#endif



路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

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

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

返回頂部
主站蜘蛛池模板: 国产精品久久久久久久免费大片 | 亚洲色欧美另类 | 中文字幕国产一区 | 九九热最新地址 | 日韩av在线中文字幕 | 国产成人短视频在线观看 | 亚洲一级二级三级 | 国产欧美一区二区三区在线看 | 中文字幕视频在线观看 | 久久精品青青大伊人av | 午夜精品一区二区三区在线视频 | 成人h免费观看视频 | 在线播放中文字幕 | 精品一区二区在线视频 | 精品中文在线 | 欧美三区| 日本久久精品视频 | 99精品免费久久久久久久久日本 | 国产精品高潮呻吟久久 | a级毛片免费高清视频 | 91精品一区二区三区久久久久久 | 一级黄大片 | 亚洲va在线va天堂va狼色在线 | 亚洲天堂成人在线视频 | 欧洲一区二区三区 | 亚州国产 | 亚洲区一区二区 | av毛片| 国产视频久 | 91精品国产一区二区三区香蕉 | 欧美日韩一区二区在线播放 | 久久精品国产清自在天天线 | 亚洲精品一区二区另类图片 | 日韩视频―中文字幕 | 91精品久久久久久久久 | 亚洲+变态+欧美+另类+精品 | 久久久久久99 | 国产丝袜一区二区三区免费视频 | 日日操av | 中文字幕在线精品 | 成人福利在线 |