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

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

?? rusblockview.cpp

?? 程序中只用了七種基本圖形來實現總共的28種形狀,因其采用了一種算法
?? CPP
字號:
// RusBlockView.cpp : implementation of the CRusBlockView class
//

#include "stdafx.h"
#include "RusBlock.h"

#include "RusBlockDoc.h"
#include "RusBlockView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRusBlockView

IMPLEMENT_DYNCREATE(CRusBlockView, CView)

BEGIN_MESSAGE_MAP(CRusBlockView, CView)
	//{{AFX_MSG_MAP(CRusBlockView)
	ON_WM_KEYDOWN()
	ON_WM_TIMER()
	ON_COMMAND(ID_GAME_START, OnGameStart)
	ON_COMMAND(ID_GAME_END, OnGameEnd)
	ON_COMMAND(ID_LEVEL_NORMAL, OnLevelNormal)
	ON_COMMAND(ID_LEVEL_HARD, OnLevelHard)
	ON_COMMAND(ID_LEVEL_EASY, OnLevelEasy)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CRusBlockView construction/destruction

CRusBlockView::CRusBlockView()
{
	// TODO: add construction code here
	for(int i=0;i<HIGH;i++)
	{
		for(int j=0;j<WIDE;j++)
		{
			m_intState[i][j]=0;
		}
	}

	m_intLevel=NORMAL;
	srand((unsigned)time(NULL));
	m_intScore=0;
	m_CurrentCom.intComID=-1;
	m_CurrentCom.intDimension=0;
	m_CurrentCom.pintArray=NULL;

	//0
	m_Componets[0].intComID=0;
	m_Componets[0].intDimension=2;
	m_Componets[0].pintArray=new int[4];
	for(i=0;i<4;i++)
	{
		m_Componets[0].pintArray[i]=1;
	}

	//1
	m_Componets[1].intComID=1;
	m_Componets[1].intDimension=3;
	m_Componets[1].pintArray=new int[9];
	m_Componets[1].pintArray[0]=0;
	m_Componets[1].pintArray[1]=1;
	m_Componets[1].pintArray[2]=0;
	m_Componets[1].pintArray[3]=1;
	m_Componets[1].pintArray[4]=1;
	m_Componets[1].pintArray[5]=1;
	m_Componets[1].pintArray[6]=0;
	m_Componets[1].pintArray[7]=0;
	m_Componets[1].pintArray[8]=0;

	//2
	m_Componets[2].intComID=2;
	m_Componets[2].intDimension=3;
	m_Componets[2].pintArray=new int[9];
	m_Componets[2].pintArray[0]=1;
	m_Componets[2].pintArray[1]=0;
	m_Componets[2].pintArray[2]=0;
	m_Componets[2].pintArray[3]=1;
	m_Componets[2].pintArray[4]=1;
	m_Componets[2].pintArray[5]=0;
	m_Componets[2].pintArray[6]=0;
	m_Componets[2].pintArray[7]=1;
	m_Componets[2].pintArray[8]=0;

	//3
	m_Componets[3].intComID=3;
	m_Componets[3].intDimension=3;
	m_Componets[3].pintArray=new int[9];
	m_Componets[3].pintArray[0]=0;
	m_Componets[3].pintArray[1]=0;
	m_Componets[3].pintArray[2]=1;
	m_Componets[3].pintArray[3]=0;
	m_Componets[3].pintArray[4]=1;
	m_Componets[3].pintArray[5]=1;
	m_Componets[3].pintArray[6]=0;
	m_Componets[3].pintArray[7]=1;
	m_Componets[3].pintArray[8]=0;

	//4
	m_Componets[4].intComID=4;
	m_Componets[4].intDimension=3;
	m_Componets[4].pintArray=new int[9];
	m_Componets[4].pintArray[0]=1;
	m_Componets[4].pintArray[1]=0;
	m_Componets[4].pintArray[2]=0;
	m_Componets[4].pintArray[3]=1;
	m_Componets[4].pintArray[4]=1;
	m_Componets[4].pintArray[5]=1;
	m_Componets[4].pintArray[6]=0;
	m_Componets[4].pintArray[7]=0;
	m_Componets[4].pintArray[8]=0;

	//5
	m_Componets[5].intComID=5;
	m_Componets[5].intDimension=3;
	m_Componets[5].pintArray=new int[9];
	m_Componets[5].pintArray[0]=0;
	m_Componets[5].pintArray[1]=0;
	m_Componets[5].pintArray[2]=1;
	m_Componets[5].pintArray[3]=1;
	m_Componets[5].pintArray[4]=1;
	m_Componets[5].pintArray[5]=1;
	m_Componets[5].pintArray[6]=0;
	m_Componets[5].pintArray[7]=0;
	m_Componets[5].pintArray[8]=0;

	//6
	m_Componets[6].intComID=6;
	m_Componets[6].intDimension=4;
	m_Componets[6].pintArray=new int[16];
	m_Componets[6].pintArray[0]=0;
	m_Componets[6].pintArray[1]=1;
	m_Componets[6].pintArray[2]=0;
	m_Componets[6].pintArray[3]=0;
	m_Componets[6].pintArray[4]=0;
	m_Componets[6].pintArray[5]=1;
	m_Componets[6].pintArray[6]=0;
	m_Componets[6].pintArray[7]=0;
	m_Componets[6].pintArray[8]=0;
	m_Componets[6].pintArray[9]=1;
	m_Componets[6].pintArray[10]=0;
	m_Componets[6].pintArray[11]=0;
	m_Componets[6].pintArray[12]=0;
	m_Componets[6].pintArray[13]=1;
	m_Componets[6].pintArray[14]=0;
	m_Componets[6].pintArray[15]=0;
	
}

CRusBlockView::~CRusBlockView()
{
	for(int i=0;i<MAXCOM;i++)
		delete [] m_Componets[i].pintArray;

	delete [] m_CurrentCom.pintArray;
}

BOOL CRusBlockView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CRusBlockView drawing

void CRusBlockView::OnDraw(CDC* pDC)
{
	CRusBlockDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

	CBrush brushBK(RGB(135,197,255));
	CBrush * pbrushOld=pDC->SelectObject(&brushBK);
	pDC->Rectangle(LEFT-1,TOP-1,LEFT+WIDE*SIZE+1,
		            TOP+HIGH*SIZE+1);

	CBrush brushStick(RGB(127,127,127));
	pDC->SelectObject(&brushStick);
	for(int i=0;i<HIGH;i++)
		for(int j=0;j<WIDE;j++)
			if(m_intState[i][j]==1)
			pDC->Rectangle(LEFT+SIZE*j,TOP+SIZE*i,LEFT+SIZE*(j+1),
			         TOP+SIZE*(i+1));

	if(m_CurrentCom.intComID>=0)
	{
		CBrush brushCom(RGB(0,255,0));
		pDC->SelectObject(&brushCom);
		int intDimension = m_CurrentCom.intDimension;
		for(int i=0;i<intDimension*intDimension;i++)
		{
			if(m_CurrentCom.pintArray[i]==1)
			{
				int m=ptIndex.x+i/intDimension;
				int n=ptIndex.y+(i%intDimension);
				pDC->Rectangle(LEFT+SIZE*n,TOP+SIZE*m,LEFT+SIZE*(n+1),
					          TOP+SIZE*(m+1));
			}
		}
	}

	CString strOut;
	strOut.Format("得分 %d",m_intScore);
	pDC->TextOut(LEFT+WIDE*SIZE+50,TOP+100,strOut);
}

/////////////////////////////////////////////////////////////////////////////
// CRusBlockView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CRusBlockView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CRusBlockView message handlers

void CRusBlockView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	int intDimension=m_CurrentCom.intDimension;
	switch(nChar)
	{
	case 37:
		if(CanLeft())
		{
			MyInvalidateRect(ptIndex,intDimension);
			ptIndex.y--;
			MyInvalidateRect(ptIndex,intDimension);
		}
		break;
	case 39:
		if(CanRight())
		{
			MyInvalidateRect(ptIndex,intDimension);
			ptIndex.y++;
			MyInvalidateRect(ptIndex,intDimension);
		}
		break;
	case 38:
		if(CanRotate())
		{
			MyInvalidateRect(ptIndex,intDimension);
			int * pintNewCom=new int[intDimension*intDimension];
			for(int i=0;i<intDimension*intDimension;i++)
			{
				int intR=intDimension*(intDimension-(i%intDimension)-1)+(i/intDimension);
				pintNewCom[i]=m_CurrentCom.pintArray[intR];
			}
			for(i=0;i<intDimension*intDimension;i++)
			{
				m_CurrentCom.pintArray[i]=pintNewCom[i];
			}
			delete [] pintNewCom;
			MyInvalidateRect(ptIndex,intDimension);
		}
		break;
	case VK_DOWN:
		if(CanDown())
		{
			MyInvalidateRect(ptIndex,intDimension);
			ptIndex.x++;
			MyInvalidateRect(ptIndex,intDimension);
		}
		break;
	}
	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CRusBlockView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	int intDimension = m_CurrentCom.intDimension;
	if(CanDown())
	{
		MyInvalidateRect(ptIndex,intDimension);
		ptIndex.x++;
		MyInvalidateRect(ptIndex,intDimension);
		
	}
	else
	{
		for(int i=0;i<intDimension*intDimension;i++)
		{
			if(m_CurrentCom.pintArray[i]==1)
			{
				int m=ptIndex.x+i/intDimension;
				int n=ptIndex.y+(i%intDimension);
				m_intState[m][n]=1;
			}
		}
	    MyInvalidateRect(ptIndex,intDimension);
		Disappear();
		if(CheckFail())
		{
			m_CurrentCom.intComID=-1;
			KillTimer(1);
			MessageBox("Game Over!");
		}
		else
		{
			NewComponet();
		}
	}
	
	CView::OnTimer(nIDEvent);
}

bool CRusBlockView::CanDown(void)
{
	bool boolDown=true;
	POINT intNewIndex=ptIndex;
	intNewIndex.x++;
	int intDimension=m_CurrentCom.intDimension;
	for(int i=0;i<intDimension*intDimension;i++)
	{
		if(m_CurrentCom.pintArray[i]==1)
		{
			int m=intNewIndex.x+i/intDimension;
			int n=intNewIndex.y+(i%intDimension);
			if(m>=HIGH || m_intState[m][n]==1)
				boolDown=false;
		}
	}
	return boolDown;
}

bool CRusBlockView::CanLeft(void)
{
	bool boolLeft=true;
	int intDimension=m_CurrentCom.intDimension;
	POINT ptNewIndex=ptIndex;
	ptNewIndex.y--;

	for(int i=0;i<intDimension*intDimension;i++)
	{
		if(m_CurrentCom.pintArray[i]==1)
		{
			int m=ptNewIndex.x+i/intDimension;
			int n=ptNewIndex.y+(i%intDimension);
			if(n<0 || m_intState[m][n]==1)
				boolLeft=false;
		}
	}
	return boolLeft;
}

bool CRusBlockView::CanRight(void)
{
	bool boolRight=true;
	int intDimension=m_CurrentCom.intDimension;
	POINT ptNewIndex=ptIndex;
	ptNewIndex.y++;

	for(int i=0;i<intDimension*intDimension;i++)
	{
		if(m_CurrentCom.pintArray[i]==1)
		{
			int m=ptNewIndex.x+i/intDimension;
			int n=ptNewIndex.y+(i%intDimension);
			if(n>=WIDE || m_intState[m][n]==1)
				boolRight=false;
		}
	}
	return boolRight;
}

bool CRusBlockView::CanRotate(void)
{
	bool boolRotate=true;
	int intDimension=m_CurrentCom.intDimension;
	POINT ptNewIndex=ptIndex;

	int *pintNewCom=new int[intDimension*intDimension];

	for(int i=0;i<intDimension*intDimension;i++)
	{
		int intR=intDimension*(intDimension-(i%intDimension)-1)+(i/intDimension);
		pintNewCom[i]=m_CurrentCom.pintArray[intR];
		if(pintNewCom[i]==1)
		{
			int m=ptNewIndex.x+i/intDimension;
			int n=ptNewIndex.y+(i%intDimension);
			if(n<0 || m_intState[m][n]==1 || n>=WIDE || m>=HIGH)
				boolRotate=false;
		}
	}
	delete [] pintNewCom;
	return boolRotate;
}

bool CRusBlockView::CanNew(void)
{
	bool boolNew=true;
	int intDimension=m_CurrentCom.intDimension;
	POINT ptNewIndex=ptIndex;
	for(int i=0;i<intDimension*intDimension;i++)
	{
		if(m_CurrentCom.pintArray[i]==1)
		{
			int m=ptNewIndex.x+i/intDimension;
			int n=ptNewIndex.y+(i%intDimension);
			if(m_intState[m][n]==1)
				boolNew=false;
		}
	}
	return boolNew;
}

bool CRusBlockView::CheckFail(void)
{
	bool boolEnd=false;
	for(int j=0;j<WIDE;j++)
		if(m_intState[0][j]==1)
			boolEnd=true;
	return boolEnd;
}

void CRusBlockView::Disappear(void)
{
	int intLine=0;
	for(int i=HIGH-1;i>=0;i--)
	{
		bool boolLine=true;
		for(int j=0;j<WIDE;j++)
			if(m_intState[i][j]==0)
				boolLine=false;


		if(boolLine)
		{
			intLine++;
			for(int m=i;m>0;m--)
				for(int n=0;n<WIDE;n++)
					m_intState[m][n]=m_intState[m-1][n];
				for(int n=0;n<WIDE;n++)
					m_intState[0][n]=0;
				i++;
		}
	}
	if(intLine>0)
	{
		m_intScore+=(intLine-1)*200+100;
		InvalidateRect(CRect(LEFT+WIDE*SIZE+50,
			           TOP+100,LEFT+WIDE*SIZE+200,TOP+200));

	}
	InvalidateRect(CRect(LEFT,TOP,LEFT+WIDE*SIZE,TOP+HIGH*SIZE));
}

void CRusBlockView::OnGameStart() 
{
	// TODO: Add your command handler code here
	for(int i=0;i<HIGH;i++)
		for(int j=0;j<WIDE;j++)
			m_intState[i][j]=0;
	m_intScore=0;
	Invalidate();
	NewComponet();
	SetTimer(1,m_intLevel,NULL);
}


void CRusBlockView::OnGameEnd() 
{
	// TODO: Add your command handler code here
	KillTimer(1);
}

void CRusBlockView::OnLevelNormal() 
{
	// TODO: Add your command handler code here
	m_intLevel=NORMAL;
}

void CRusBlockView::OnLevelHard() 
{
	// TODO: Add your command handler code here
	m_intLevel=HARD;
}

void CRusBlockView::OnLevelEasy() 
{
	// TODO: Add your command handler code here
	m_intLevel=EASY;
}

void CRusBlockView::MyInvalidateRect(POINT ptStart, int intDimension)
{
	int x1=LEFT+ptStart.y*SIZE;
	x1=x1>LEFT?x1:LEFT;
	int y1=TOP +ptStart.x*SIZE;
	y1=y1>TOP?y1:TOP;
	int x2=LEFT+(ptStart.y+intDimension)*SIZE;
	x2=x2>LEFT+WIDE*SIZE?LEFT+WIDE*SIZE:x2;
	int y2=TOP+(ptStart.x+intDimension)*SIZE;
	y2=y2>TOP+HIGH*SIZE?TOP+HIGH*SIZE:y2;
	InvalidateRect(CRect(x1,y1,x2,y2));
}

void CRusBlockView::NewComponet(void)
{
	int intComID=rand()%7;
	m_CurrentCom.intComID=intComID;
	int intDimension=m_Componets[intComID].intDimension;
	m_CurrentCom.intDimension=intDimension;
	delete [] m_CurrentCom.pintArray;
	m_CurrentCom.pintArray=new int[intDimension*intDimension];

	for(int i=0;i<intDimension*intDimension;i++)
		m_CurrentCom.pintArray[i]=m_Componets[intComID].pintArray[i];

	ptIndex.x=0;
	ptIndex.y=5;

	if(CanNew())
	{
		MyInvalidateRect(ptIndex,intDimension);
	}
	else
	{
		m_CurrentCom.intComID=-1;
		KillTimer(1);
		MessageBox("Game Over!");
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩嫩av羞羞动漫久久久| 成人av网站在线| 国产欧美1区2区3区| 日韩欧美激情四射| 国产亚洲综合性久久久影院| 中文字幕不卡在线观看| 国产精品高潮久久久久无| 亚洲午夜久久久久| 色先锋资源久久综合| 亚洲色图视频网| 日本韩国一区二区| 亚洲午夜久久久久| 日韩视频一区二区在线观看| 久久精品国产一区二区三 | 日韩女优制服丝袜电影| 久久精品久久久精品美女| 日韩一二三四区| 国内精品伊人久久久久av一坑| 国产亚洲人成网站| 在线精品视频一区二区三四| 爽好多水快深点欧美视频| 精品国产麻豆免费人成网站| 高清不卡一二三区| 亚洲最色的网站| 欧美一级淫片007| 国产成人啪午夜精品网站男同| 亚洲国产精品激情在线观看| 欧美视频一区二区三区在线观看| 奇米色777欧美一区二区| 国产精品久久福利| 欧美日本视频在线| 风间由美性色一区二区三区| 一区二区日韩电影| 久久久噜噜噜久久人人看| 色综合中文字幕| 樱桃视频在线观看一区| 欧美一级在线视频| 国产成人精品免费视频网站| 亚洲日本欧美天堂| 91精品久久久久久久91蜜桃 | 日韩欧美在线一区二区三区| 另类中文字幕网| 亚洲精品日韩一| 91精品视频网| 国产成人精品一区二区三区网站观看| 国产精品色在线观看| 在线免费观看一区| 男女男精品视频网| 国产精品视频观看| 亚洲欧美一区二区在线观看| 成人免费高清视频在线观看| 亚洲一区在线观看免费| 国产乱人伦偷精品视频不卡 | 国产精品久久三| 欧美视频在线观看一区二区| 精品一区二区三区香蕉蜜桃| 国产精品乱人伦| 欧美午夜理伦三级在线观看| 激情综合网天天干| 一级中文字幕一区二区| 久久先锋资源网| 欧美亚洲动漫制服丝袜| 国产一区二区三区四区五区入口 | 日韩一区二区电影| 国产伦理精品不卡| 亚洲一区二三区| 国产日产欧美一区二区三区| 欧美老人xxxx18| av中文字幕亚洲| 人人超碰91尤物精品国产| 日韩一区在线播放| 亚洲精品一区二区在线观看| 欧美性生交片4| 成人黄色电影在线 | 无码av中文一区二区三区桃花岛| 国产欧美中文在线| 日韩欧美在线一区二区三区| 色嗨嗨av一区二区三区| 成人妖精视频yjsp地址| 精品一区二区三区在线播放视频| 一区二区欧美精品| 日韩伦理av电影| 精品国免费一区二区三区| 日韩女优电影在线观看| 欧美在线小视频| 99热99精品| 成人精品视频一区二区三区| 经典一区二区三区| 麻豆一区二区三区| 日日夜夜免费精品视频| 亚洲一卡二卡三卡四卡| 亚洲欧洲制服丝袜| 国产精品午夜免费| 国产亚洲福利社区一区| 久久蜜桃av一区二区天堂| 日韩欧美一区中文| 日韩一卡二卡三卡四卡| 欧美一区二区在线观看| 91精选在线观看| 不卡一区二区中文字幕| 九色|91porny| 国产精品资源在线观看| 国产一区二区三区四区五区美女| 久久97超碰色| 国产一区二区三区免费观看 | 麻豆成人久久精品二区三区小说| 亚洲成人av福利| 午夜av区久久| 日韩成人av影视| 久久国产精品第一页| 久久爱另类一区二区小说| 久久国产麻豆精品| 国内精品免费**视频| 国产精品白丝jk黑袜喷水| 国产suv精品一区二区6| av在线一区二区三区| 日本道精品一区二区三区 | 国产高清精品网站| 国产aⅴ综合色| 色综合咪咪久久| 欧美吞精做爰啪啪高潮| 51久久夜色精品国产麻豆| 欧美一区二区三区色| 精品999久久久| 精品蜜桃在线看| 91精品免费在线观看| 日韩欧美中文字幕制服| 中文字幕av一区 二区| 一区二区三区美女| 蜜桃精品在线观看| 成人一级黄色片| 欧美日韩三级一区二区| 日韩精品影音先锋| 国产精品美女久久久久久2018| 亚洲伦理在线精品| 国内外成人在线| 91亚洲精品乱码久久久久久蜜桃| 欧美日韩免费一区二区三区| 2020国产精品| 亚洲人成网站精品片在线观看 | 色噜噜狠狠色综合中国| 91精品欧美一区二区三区综合在| 国产日韩欧美综合在线| 亚洲国产视频网站| 国产一区视频导航| 91免费国产在线| 91黄视频在线| 欧美一区二区三区视频在线观看| 久久久激情视频| 午夜精品久久久久久久久久| 国产福利一区二区| 欧美日韩不卡一区| 中文字幕在线不卡| 麻豆免费精品视频| 91国内精品野花午夜精品| 日韩亚洲欧美综合| 中文字幕一区二区三区在线观看| 日本午夜一本久久久综合| av在线播放不卡| 精品少妇一区二区三区在线播放| 国产精品福利在线播放| 国内精品不卡在线| 欧美日本在线播放| 亚洲精品精品亚洲| 丰满放荡岳乱妇91ww| 日韩亚洲欧美中文三级| 亚洲一区二区三区激情| 成人午夜免费视频| 欧美高清一级片在线| 欧美激情一区二区三区不卡| 9191久久久久久久久久久| 国产麻豆9l精品三级站| 丁香激情综合五月| 亚洲一卡二卡三卡四卡五卡| 欧美中文字幕亚洲一区二区va在线| 国产精品的网站| 91精品国产综合久久久蜜臀粉嫩| 亚洲成人黄色小说| 亚洲色图一区二区三区| 99re亚洲国产精品| av不卡在线播放| 国产成人免费在线视频| 国产剧情在线观看一区二区| 福利视频网站一区二区三区| 日本欧美久久久久免费播放网| 欧美日韩mp4| 91蜜桃在线免费视频| 紧缚捆绑精品一区二区| 亚洲国产精品av| 国产日韩欧美a| 亚洲同性同志一二三专区| 欧美在线看片a免费观看| 欧美天堂一区二区三区| 欧美精品自拍偷拍| 2024国产精品| 精品sm捆绑视频| 欧美性受xxxx黑人xyx性爽| 欧美激情一区二区三区四区 | 色呦呦一区二区三区| 精品日韩在线观看|