亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? snakessubsonicview.cpp

?? 用opengl編寫的簡單貪吃蛇游戲
?? CPP
字號:
// SnakesSubsonicView.cpp : implementation of the CSnakesSubsonicView class
//

#include "stdafx.h"
#include "SnakesSubsonic.h"

#include "SnakesSubsonicDoc.h"
#include "SnakesSubsonicView.h"
#include <math.h>
#include "bitmap.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSnakesSubsonicView
#define interval 100
#define pi 3.1416

IMPLEMENT_DYNCREATE(CSnakesSubsonicView, CView)

BEGIN_MESSAGE_MAP(CSnakesSubsonicView, CView)
	//{{AFX_MSG_MAP(CSnakesSubsonicView)
	ON_WM_DESTROY()
	ON_WM_SIZE()
	ON_WM_KEYDOWN()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSnakesSubsonicView construction/destruction

CSnakesSubsonicView::CSnakesSubsonicView()
{
	// TODO: add construction code here

}

CSnakesSubsonicView::~CSnakesSubsonicView()
{

}

/////////////////////////////////////////////////////////////////////////////
// CSnakesSubsonicView printing

BOOL CSnakesSubsonicView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CSnakesSubsonicView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CSnakesSubsonicView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CSnakesSubsonicView diagnostics

#ifdef _DEBUG
void CSnakesSubsonicView::AssertValid() const
{
	CView::AssertValid();
}

void CSnakesSubsonicView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CSnakesSubsonicDoc* CSnakesSubsonicView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSnakesSubsonicDoc)));
	return (CSnakesSubsonicDoc*)m_pDocument;
}
#endif //_DEBUG

BOOL CSnakesSubsonicView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	//設置窗口類型:
	cs.style |= WS_CLIPSIBLINGS|WS_CLIPCHILDREN;

	return CView::PreCreateWindow(cs);
}

void CSnakesSubsonicView::OnInitialUpdate(){
	CView::OnInitialUpdate();
	PIXELFORMATDESCRIPTOR pfd;
	int n;
	HGLRC hrc;
	m_pDC=new CClientDC(this);
	ASSERT(m_pDC!=NULL);
	if(!bSetupPixelFormat())
		return;
	n=::GetPixelFormat(m_pDC->GetSafeHdc());
	::DescribePixelFormat(m_pDC->GetSafeHdc(),n,sizeof(pfd),&pfd);
	// CreateRGBPalette();
	hrc=wglCreateContext(m_pDC->GetSafeHdc());
	wglMakeCurrent(m_pDC->GetSafeHdc(),hrc);
	glEnable(GL_LINE_SMOOTH);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
	glLineWidth(5.0);
	glShadeModel(GL_FLAT);
	glClearColor(0.0,0.0,0.0,0.0);
	glDepthFunc(GL_LESS);
	glEnable(GL_DEPTH_TEST);

	LoadBMP("pic/bg4.bmp",TextureImage[0]);
	LoadT16("pic/tree.bmp",TextureImage[1]);

	LoadT16("pic/snakehead.bmp",headimage);

	LoadT16("pic/apple.bmp",fruit[0]);
	LoadT16("pic/banana.bmp",fruit[1]);
	LoadT16("pic/blueberry.bmp",fruit[2]);
	LoadT16("pic/lemon.bmp",fruit[3]);
	LoadT16("pic/orange.bmp",fruit[4]);
	LoadT16("pic/pineapple.bmp",fruit[5]);
	LoadT16("pic/pear.bmp",fruit[6]);

	Font = new CGLFont();
	hFont = CreateFont(-108,0,0,0,400,0,0,0,GB2312_CHARSET,0,0,0,FF_MODERN,"Arial");
//	SetTimer(1,interval,NULL);
//	timer = 1;
	GameOver = 0;
}

BOOL CSnakesSubsonicView::bSetupPixelFormat()	//設置像素格式
{
	PIXELFORMATDESCRIPTOR pfd = {
			sizeof(PIXELFORMATDESCRIPTOR),	// pfd結構的大小 
			1,                                // 版本號 
			PFD_DRAW_TO_WINDOW |              // 支持在窗口中繪圖 
			PFD_SUPPORT_OPENGL |              // 支持 OpenGL 
			PFD_DOUBLEBUFFER,                 // 雙緩存模式 
			PFD_TYPE_RGBA,                    // RGBA 顏色模式 
			24,                               // 24 位顏色深度 
			0, 0, 0, 0, 0, 0,                 // 忽略顏色位 
			0,                                // 沒有非透明度緩存 
			0,                                // 忽略移位位 
			0,                                // 無累加緩存 
			0, 0, 0, 0,                       // 忽略累加位 
			32,                               // 32 位深度緩存     
			0,                                // 無模板緩存 
			0,                                // 無輔助緩存 
			PFD_MAIN_PLANE,                   // 主層 
			0,                                // 保留 
			0, 0, 0                           // 忽略層,可見性和損毀掩模 
	};
	int pixelformat;
	if((pixelformat=ChoosePixelFormat(m_pDC->GetSafeHdc(),&pfd))==0)
	{
		MessageBox("choosepixelformated failed");
		return false;
	}
	if(SetPixelFormat(m_pDC->GetSafeHdc(),pixelformat,&pfd)==FALSE)
	{
		MessageBox("SetPixelFormat failed");
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////
// CSnakesSubsonicView drawing

void CSnakesSubsonicView::OnDraw(CDC* pDC)
{
	KillTimer(1);
	timer = 0;

	CSnakesSubsonicDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

 	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);				// 設置刷新背景色
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);	// 刷新背景
	
	if(GameOver){
		glTranslatef(0,0,-4);	// 背景圖片位置
		CString gover = "Game Over";
		Font->entext(-1.5, 0, gover, hFont, 1.0f, 0.0f, 1.0f);
	}
	else{
		snk.DrawHead(headimage);
		snk.DrawSnake();
		
//	LoadT16("pic/apple.bmp",fruit[0]);
// 	LoadT16("pic/banana.bmp",fruit[1]);
// 	LoadT16("pic/apple1.bmp",fruit[2]);
// 	LoadT16("pic/lemon.bmp",fruit[3]);
// 	LoadT16("pic/orange.bmp",fruit[4]);
// 	LoadT16("pic/pineapple.bmp",fruit[5]);
// 	LoadT16("pic/pear.bmp",fruit[6]);

		switch(snk.foodkind){
			case 0:
				snk.DrawFood(fruit[0],0.6,0.6);
				break;
			case 1:
				snk.DrawFood(fruit[1],0.7,0.42);
				break;
			case 2:
				snk.DrawFood(fruit[2],0.6,0.4);
				break;
			case 3:
				snk.DrawFood(fruit[3],0.6,0.6);
				break;
			case 4:
				snk.DrawFood(fruit[4],0.6,0.65);
				break;
			case 5:
				snk.DrawFood(fruit[5],0.6,0.6);
				break;
			case 6:
				snk.DrawFood(fruit[6],0.6,0.6);
				break;
		}

	}

	glLoadIdentity();									// 重置當前的模型觀察矩陣

	float height = 7.68;	// 背景圖片尺寸
	float width = 10.24;
	
//	LoadBMP("pic/bg4.bmp",TextureImage[0]);

	glPushMatrix();
		glColor4f(1,1,1,1);		// 設置背景貼圖底色為白色
	
		glTranslatef(0,0,-5);	// 背景圖片位置
	
		glBindTexture(GL_TEXTURE_2D, TextureImage[0]);	// This Will Select The BG Maps...

		glEnable(GL_TEXTURE_2D);
//		glPushMatrix();
			glBegin(GL_QUADS);
//				glNormal3f( 0.0f, 0.0f, 1.0f);	//設置傳遞參數的當前法線
				glTexCoord2f(0.0f, 0.0f); glVertex2f( -width/2,  -height/2);		
				glTexCoord2f(1.0f, 0.0f); glVertex2f(  width/2,  -height/2);
				glTexCoord2f(1.0f, 1.0f); glVertex2f(  width/2,   height/2);
				glTexCoord2f(0.0f, 1.0f); glVertex2f( -width/2,   height/2);
			glEnd();

		glDisable(GL_TEXTURE_2D);
	glPopMatrix();

	DrawBorderTree();

	glFinish();									// 更新窗口

	DrawIcon(pDC->m_hDC,0,0,(HICON)IDI_Acorn);
//	glDisable(GL_LIGHT0);
//	glDisable(GL_LIGHTING);



//	snk.SnakeRun();
 
	SwapBuffers(wglGetCurrentDC());				// 切換緩沖區 只能在最后一次

	if(!timer){
		SetTimer(1,interval,NULL);
		timer = 1;
	}
}

void CSnakesSubsonicView::DrawBorderTree(){
// 	RECT border;
// 	GetWindowRect(&border);
// 	long left = border.left;
// 	long top = border.top;

	double height = 0.33;	// 圖片尺寸
	double width = 0.28;

	float inc = 0.2;
	if (isOnSize)
	{	
		if(AfxGetMainWnd()->IsZoomed()){
			glw += 1.6;
			glh += 1.1;
		}
		else{
			glw += 1.9;
			glh += 1.2;
		}
		isOnSize = 0;
	}


	glPushMatrix();

	glColor4f(1,1,1,1);		// 設置背景貼圖底色為白色

	glTranslatef(-glw-inc,glh,-4.9);	// 起始位置 (-3.1, 2)
	
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_ALPHA_TEST);
	glAlphaFunc(GL_GREATER, 0);
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, TextureImage[1]);	// This Will Select The BG Maps...
	
	glEnable(GL_TEXTURE_2D);

	for (int i=0;i<2*glw/inc;i++)
	{		
		glTranslatef(inc,0,0);	// 相對位移
			glBegin(GL_QUADS);
				glTexCoord2d(0.0f, 0.0f); glVertex2d( -width/2,  -height/2);		
				glTexCoord2d(1.0f, 0.0f); glVertex2d(  width/2,  -height/2);
				glTexCoord2d(1.0f, 1.0f); glVertex2d(  width/2,   height/2);
				glTexCoord2d(0.0f, 1.0f); glVertex2d( -width/2,   height/2);
			glEnd();
		glTranslatef(0,-2*glh,0);	// 相對位移
			glBegin(GL_QUADS);
				glTexCoord2d(0.0f, 0.0f); glVertex2d( -width/2,  -height/2);		
				glTexCoord2d(1.0f, 0.0f); glVertex2d(  width/2,  -height/2);
				glTexCoord2d(1.0f, 1.0f); glVertex2d(  width/2,   height/2);
				glTexCoord2d(0.0f, 1.0f); glVertex2d( -width/2,   height/2);
			glEnd();
		glTranslatef(0,2*glh,0);	// 相對位移

	}
	
// 	if (AfxGetMainWnd()->IsZoomed())
// 	{
// 		glTranslatef(-0.5,0,0);	// 相對位移
// 	}

	for (i=0;i<2*glh/inc-1;i++)
	{
		glTranslatef(0,-inc,0);	// 相對位移
			glBegin(GL_QUADS);
				glTexCoord2d(0.0f, 0.0f); glVertex2d( -width/2,  -height/2);		
				glTexCoord2d(1.0f, 0.0f); glVertex2d(  width/2,  -height/2);
				glTexCoord2d(1.0f, 1.0f); glVertex2d(  width/2,   height/2);
				glTexCoord2d(0.0f, 1.0f); glVertex2d( -width/2,   height/2);
			glEnd();
		glTranslatef(-2*glw,0,0);	// 相對位移
			glBegin(GL_QUADS);
				glTexCoord2d(0.0f, 0.0f); glVertex2d( -width/2,  -height/2);		
				glTexCoord2d(1.0f, 0.0f); glVertex2d(  width/2,  -height/2);
				glTexCoord2d(1.0f, 1.0f); glVertex2d(  width/2,   height/2);
				glTexCoord2d(0.0f, 1.0f); glVertex2d( -width/2,   height/2);
			glEnd();
		glTranslatef(2*glw,0,0);	// 相對位移
	}

	glDisable(GL_TEXTURE_2D);
	glDisable(GL_ALPHA_TEST);
	glDisable(GL_BLEND);

	glPopMatrix();
}

void CSnakesSubsonicView::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here

	//cx,cy是client尺寸
	sw = cx;						//屏幕寬度
	sh = cy;						//屏幕高度

	if(sh==0) sh=1;
	glViewport(0,0,sw,sh);			// 設置OpenGL視口大小。	
	glMatrixMode(GL_PROJECTION);	// 設置當前矩陣為投影矩陣。
	glLoadIdentity();				// 重置當前指定的矩陣為單位矩陣
	gluPerspective(					// 設置透視圖
		60,							// 透視角設置為 60 度
		(GLfloat)sw/(GLfloat)sh,	// 窗口的寬與高比
		1.0,						// 視野透視深度:近點1.0f
		10							// 視野透視深度:始點1.0f遠點10.0f
		);
	// 這和照象機很類似,第一個參數設置鏡頭廣角度,第二個參數是長寬比,后面是遠近剪切。
	glMatrixMode(GL_MODELVIEW);		// 設置當前矩陣為模型視圖矩陣
	glLoadIdentity();				// 重置當前指定的矩陣為單位矩陣
	
	gluLookAt(0,0,0,0,0,1,0,1,0);
	
	glRect(4,60.0);

	isOnSize = 1;
//	glDrawBuffer (GL_BACK);			// 告訴OpenGL在后臺緩存中畫圖
}

void CSnakesSubsonicView::glRect(double l, double fovy){
	double ratio = sh/sw;
	double d = fovy/360*pi;
	glw = l*tan(d);
	glh = glw*ratio;
}

void CSnakesSubsonicView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	switch(nIDEvent){
	case 1 :
		snk.SnakeRun(glw,glh);

		if(snk.isDead()){
//			AfxMessageBox("你掛了!");
			KillTimer(1);
			GameOver = 1;
//			break;
		}
		
		Invalidate(FALSE);							// 刷新屏幕
		
		break;
	}
	CView::OnTimer(nIDEvent);
}

void CSnakesSubsonicView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
//	KillTimer(1);
	timer = 0;
	
	if(nChar ==VK_LEFT && (snk.snk_MD == snk.snk_up || snk.snk_MD == snk.snk_down))
		snk.snk_MD = snk.snk_left;      
	
	if(nChar == VK_RIGHT && (snk.snk_MD == snk.snk_up || snk.snk_MD == snk.snk_down))	
		snk.snk_MD = snk.snk_right;  
	
    if(nChar == VK_UP && (snk.snk_MD == snk.snk_left || snk.snk_MD == snk.snk_right))
		snk.snk_MD = snk.snk_up;
	
	if(nChar == VK_DOWN && (snk.snk_MD == snk.snk_left || snk.snk_MD == snk.snk_right))
		snk.snk_MD = snk.snk_down;

//	snk.SnakeRun();

//	Invalidate(FALSE);							// 刷新屏幕
}
/////////////////////////////////////////////////////////////////////////////
// CSnakesSubsonicView message handlers

BOOL CSnakesSubsonicView::LoadBMP(char *Filename, GLuint &texture)
{
	FILE *File=NULL;									// File Handle
	AUX_RGBImageRec *pImage = NULL;
	
	if (!Filename)										// Make Sure A Filename Was Given
	{
		return FALSE;									// If Not Return NULL
	}
	
	File=fopen(Filename,"r");							// Check To See If The File Exists
	
	if (File)											// Does The File Exist?
	{
		fclose(File);									// Close The Handle
		pImage = auxDIBImageLoad(Filename);				// Load The Bitmap And Return A Pointer
	}
	
	if(pImage == NULL)	
		return FALSE;
	
	glGenTextures(1, &texture);	
	glBindTexture    (GL_TEXTURE_2D,texture);
	gluBuild2DMipmaps(GL_TEXTURE_2D,4, pImage->sizeX, 
		pImage->sizeY,GL_RGB, GL_UNSIGNED_BYTE,pImage->data);
	
	free(pImage->data);
	free(pImage);	
	return TRUE;
}

void CSnakesSubsonicView::LoadT16(char *filename, GLuint &texture)
{ 
	glGenTextures(1, &texture);  
	glBindTexture(GL_TEXTURE_2D, texture);
	BITMAPINFOHEADER bitHeader;
	unsigned char *buffer;  
	buffer=LoadBitmapFileWithAlpha(filename,&bitHeader);
	gluBuild2DMipmaps( 
		GL_TEXTURE_2D,  
		4,    
		bitHeader.biWidth, 
		bitHeader.biHeight,
		GL_RGBA, 
		GL_UNSIGNED_BYTE,
		buffer  
	); 
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
	free(buffer);  
}

void CSnakesSubsonicView::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
	HGLRC hrc;
	// KillTimer(1);
	hrc=::wglGetCurrentContext();
	::wglMakeCurrent(NULL,NULL);
	if(hrc)
		::wglDeleteContext(hrc);
	if(m_pDC)
	delete m_pDC;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品久| 国产一区二区在线免费观看| 石原莉奈在线亚洲二区| 97精品国产97久久久久久久久久久久| 色婷婷综合久久久久中文一区二区 | 91成人看片片| 26uuu精品一区二区在线观看| 亚洲精品美国一| 丰满亚洲少妇av| 精品欧美一区二区三区精品久久 | 在线观看日韩精品| 久久久久久久久久看片| 日韩1区2区3区| 日本福利一区二区| 91在线看国产| 美女一区二区久久| 亚洲欧美日韩中文播放| 欧美本精品男人aⅴ天堂| 亚洲综合色区另类av| 国产乱码一区二区三区| 日韩西西人体444www| 一区二区久久久| 91色porny蝌蚪| 国产精品视频第一区| 国产激情视频一区二区三区欧美| 欧美一卡2卡三卡4卡5免费| 一区二区三区四区乱视频| 成人高清免费观看| 中文无字幕一区二区三区| 国产精品1区2区3区| 久久影音资源网| 激情都市一区二区| 欧美大尺度电影在线| 美女网站色91| 精品久久久久久久久久久院品网 | 亚洲成人综合网站| 色综合视频一区二区三区高清| 日本一二三四高清不卡| 成人综合婷婷国产精品久久 | 欧美精品久久一区二区三区| 亚洲成a人v欧美综合天堂下载 | 欧美日韩一区不卡| 亚洲一区二区精品久久av| 色综合色综合色综合色综合色综合| 日本一区二区三区电影| 国产99精品视频| 中文字幕一区二区三区不卡| 91在线免费看| 亚洲综合色在线| 欧美一区二区在线免费观看| 久久er99热精品一区二区| 2023国产一二三区日本精品2022| 日韩在线观看一区二区| 成人黄色软件下载| 国产一区免费电影| 免费在线观看精品| 免费在线欧美视频| 91麻豆精品国产91久久久资源速度 | 成人禁用看黄a在线| 国产精品伦一区二区三级视频| 成人动漫视频在线| 亚洲成a人v欧美综合天堂下载 | 亚洲国产综合色| 91麻豆精品国产91久久久 | 亚洲在线免费播放| 欧美tk丨vk视频| 国产成人在线观看| 亚洲人成网站影音先锋播放| 欧美少妇一区二区| 紧缚奴在线一区二区三区| 亚洲欧洲性图库| 欧美一区二区三区四区视频| 成人性视频免费网站| 亚洲香蕉伊在人在线观| 久久蜜桃av一区精品变态类天堂 | 久久国产欧美日韩精品| 国产精品成人免费| 日韩一区二区三区免费看 | 日韩影院在线观看| 国产精品午夜久久| 91精品国产综合久久福利软件| 成人av第一页| 日韩一区二区三区电影在线观看 | 91精品婷婷国产综合久久竹菊| 久久99精品久久久| 亚洲免费三区一区二区| 日韩免费高清av| 色综合天天性综合| 国产一区二三区好的| 亚洲第一福利视频在线| 国产婷婷色一区二区三区| 欧美日韩大陆一区二区| 99精品视频在线观看免费| 美女脱光内衣内裤视频久久网站 | 欧美精品自拍偷拍动漫精品| 成人免费视频免费观看| 麻豆精品新av中文字幕| 亚洲激情男女视频| 国产精品电影院| 国产亚洲精品福利| 日韩欧美国产wwwww| 欧美日韩三级视频| 91丝袜国产在线播放| 高清不卡一二三区| 国产美女精品在线| 精品综合免费视频观看| 三级一区在线视频先锋 | 精品久久久影院| 欧美一级xxx| 6080午夜不卡| 欧美日韩精品系列| 欧美日韩国产中文| 欧美日本一道本在线视频| 欧美在线视频全部完| 91久久精品日日躁夜夜躁欧美| 成人性生交大合| 国产999精品久久| 成人黄色在线看| 亚洲精品欧美综合四区| 亚洲欧美日韩国产中文在线| 久久女同互慰一区二区三区| 在线观看日韩一区| 日本高清无吗v一区| 一区二区日韩av| 一区二区三区在线视频播放| 亚洲欧美视频在线观看视频| 中文字幕一区不卡| 亚洲免费电影在线| 伊人色综合久久天天| 亚洲国产wwwccc36天堂| 午夜精品久久久| 免费观看成人av| 久久se精品一区二区| 国产99精品在线观看| 99久久精品免费| 在线亚洲一区二区| 欧美一区二区在线不卡| 精品国产免费人成在线观看| 日本一区二区三级电影在线观看 | 欧美精品乱人伦久久久久久| 日韩电影在线免费观看| 日本sm残虐另类| 国产一区二区中文字幕| 不卡的电影网站| 在线视频国产一区| 欧美卡1卡2卡| 2020国产精品| 国产精品福利一区二区三区| 亚洲综合色成人| 麻豆一区二区三| 国产成人无遮挡在线视频| 99久久国产综合精品麻豆| 91高清视频免费看| 日韩欧美不卡在线观看视频| 日本一区二区三区视频视频| 一区二区三区高清| 九九热在线视频观看这里只有精品| 国产风韵犹存在线视精品| 色先锋久久av资源部| 精品三级在线看| 一区二区三区四区蜜桃| 免费在线观看精品| 一本一道波多野结衣一区二区| 日韩三级精品电影久久久| 国产精品美女一区二区在线观看| 亚洲午夜免费福利视频| 国产精品18久久久久久久久| 欧美日韩午夜在线| 中文幕一区二区三区久久蜜桃| 日韩福利视频导航| 成人av在线影院| 久久综合九色综合97婷婷女人 | 欧美性生活一区| 国产三级一区二区| 日本午夜一区二区| 色av一区二区| 日本一区二区成人| 美国十次综合导航| 欧美四级电影网| 日韩一区在线看| 国产乱一区二区| 91.xcao| 亚洲日本成人在线观看| 国产综合成人久久大片91| 欧美老女人在线| 一区二区三区欧美日韩| 欧美一区二区福利在线| 亚洲另类春色国产| 成人av午夜电影| 国产网红主播福利一区二区| 久久精品国产秦先生| 欧美老肥妇做.爰bbww| 亚洲国产日韩a在线播放| 色综合久久久网| 亚洲激情欧美激情| 在线免费观看日本欧美| 亚洲啪啪综合av一区二区三区| 成人高清在线视频| 国产精品人人做人人爽人人添| 国产精品夜夜嗨|