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

首頁 > 編程 > C > 正文

MATLAB實現五子棋游戲(雙人對戰、可悔棋)

2020-01-26 13:26:31
字體:
來源:轉載
供稿:網友

本文實例為大家分享了MATLAB實現五子棋游戲的具體代碼,供大家參考,具體內容如下

程序介紹:

1、此游戲只可用于雙人對戰。

2、棋盤顏色、棋盤格數、棋子顏色等參數均可自由設置

3、鼠標點擊非棋盤區域可悔棋。

一、游戲界面

二、主程序及函數

1、主程序

%Author:LeiZhen%Date:2018-03-12%此程序只下五子棋,并判斷勝負關系clear all;clc%定義顏色Color_QiPanBack=[135,206,255];Color_ChessLine=[100,100,100];%獲勝連子數Num_Victory=5;Dpixel=33;NumCell=14;%棋盤格的行或列數Wid_edge=18;[M_QiPan,xcol_ChessLine,yrow_ChessLine]=QiPan(NumCell,Dpixel,Wid_edge,Color_QiPanBack,Color_ChessLine);imshow(M_QiPan);set (gcf,'Position',[600,45,625,625]);set (gca,'Position',[0,0,1,1]);hold on,%棋半徑radius_Chess=15;M_LuoZi=zeros(NumCell+1,NumCell+1,2);VictoryB=0;VictoryW=0;StateB=1;StateW=2;NumChess=0;for i=1:(NumCell+1)^2  [x_col_Chess, y_row_Chess]=ginput_pointer(1);  %獲得距離鼠標點擊點最近的下棋點的坐標,并保證點擊的下棋點在棋盤內  if x_col_Chess<max(xcol_ChessLine)+Dpixel/2&&x_col_Chess>min(xcol_ChessLine)-Dpixel/2&&y_row_Chess<max(yrow_ChessLine)+Dpixel/2&&y_row_Chess>min(yrow_ChessLine)-Dpixel/2    for x_i=xcol_ChessLine      if abs(x_col_Chess-x_i)<Dpixel/2;        x_col_Chess=x_i;      end    end    for y_i=yrow_ChessLine      if abs(y_row_Chess-y_i)<Dpixel/2;        y_row_Chess=y_i;      end    end  %點擊悔棋區(棋盤外的區域)悔棋  else    [x_col_LuoZi_old,y_row_LuoZi_old]=find(M_LuoZi(:,:,2)==max(max(M_LuoZi(:,:,2))));    x_col_Chess_old=(x_col_LuoZi_old-1)*Dpixel+Wid_edge+1;    y_row_Chess_old=(y_row_LuoZi_old-1)*Dpixel+Wid_edge+1;    if NumChess>=1      M_QiPan=Chess(M_QiPan,x_col_Chess_old,y_row_Chess_old,radius_Chess,3,Wid_edge,Dpixel,Color_QiPanBack,Color_ChessLine);      imshow(M_QiPan);      NumChess=NumChess-1;      M_LuoZi(x_col_LuoZi_old,y_row_LuoZi_old,1)=0;      M_LuoZi(x_col_LuoZi_old,y_row_LuoZi_old,2)=0;    end    continue;  end  %落子并防止重復在同一個下棋點落子  x_col_LuoZi=(x_col_Chess-Wid_edge-1)/Dpixel+1;  y_row_LuoZi=(y_row_Chess-Wid_edge-1)/Dpixel+1;  if M_LuoZi(x_col_LuoZi,y_row_LuoZi,1)==0    NumChess=NumChess+1;    M_LuoZi(x_col_LuoZi,y_row_LuoZi,2)=NumChess;    if mod(NumChess,2)==1      M_QiPan=Chess(M_QiPan,x_col_Chess,y_row_Chess,radius_Chess,1,Wid_edge,Dpixel,Color_QiPanBack,Color_ChessLine);      imshow(M_QiPan);      M_LuoZi(x_col_LuoZi,y_row_LuoZi,1)=StateB; %落子為黑棋      VictoryB=Victory_Judge(M_LuoZi,x_col_LuoZi,y_row_LuoZi,StateB);    elseif mod(NumChess,2)==0      M_QiPan=Chess(M_QiPan,x_col_Chess,y_row_Chess,radius_Chess,2,Wid_edge,Dpixel,Color_QiPanBack,Color_ChessLine);      imshow(M_QiPan);      M_LuoZi(x_col_LuoZi,y_row_LuoZi,1)=StateW; %落子為白棋      VictoryW=Victory_Judge(M_LuoZi,x_col_LuoZi,y_row_LuoZi,StateW);    end  end  %顯示獲勝信息  if VictoryB==1    %普通對話框    h=dialog('name','對局結束','position',[500 350 250 100]);    uicontrol('parent',h,'style','text','string','黑棋獲勝!','position',[35 35 200 50],'fontsize',30);    uicontrol('parent',h,'style','pushbutton','position',[150 5 80 30],'fontsize',20,'string','確定','callback','delete(gcbf)');    break;  elseif VictoryW==1    %普通對話框    h=dialog('name','對局結束','position',[500 350 250 100]);    uicontrol('parent',h,'style','text','string','白棋獲勝!','position',[35 35 200 50],'fontsize',30);    uicontrol('parent',h,'style','pushbutton','position',[150 5 80 30],'fontsize',20,'string','確定','callback','delete(gcbf)');    break;  endend

2、畫棋盤函數

%Author:LeiZhen%Date:2018-03-12function [M_QiPan, xcol_ChessLine,yrow_ChessLine]=QiPan(NumCell, Dpixel, Wid_edge,Color_QiPanBack,Color_ChessLine)%此程序為畫五子棋盤的程序%NumCell為棋盤格數%Dpixel為相鄰棋盤線間的像素間隔%Wid_edge為棋盤邊緣的像素寬度%Color_QiPanBack為棋盤背景顏色%Color_ChessLine為棋盤線的顏色%M_QiPan為棋盤矩陣%xcol_ChessLine為棋盤列線%yrow_ChessLine為棋盤行線NumSum=1+Dpixel*NumCell+Wid_edge*2;xcol_ChessLine=Wid_edge+1:Dpixel:NumSum-Wid_edge;%列yrow_ChessLine=Wid_edge+1:Dpixel:NumSum-Wid_edge;%行M_QiPan=uint8(ones(NumSum,NumSum,3));M_QiPan(:,:,1)=M_QiPan(:,:,1)*Color_QiPanBack(1);M_QiPan(:,:,2)=M_QiPan(:,:,2)*Color_QiPanBack(2);M_QiPan(:,:,3)=M_QiPan(:,:,3)*Color_QiPanBack(3);%畫棋盤線for i=xcol_ChessLine  M_QiPan(i,Wid_edge+1:NumSum-Wid_edge,:)=ones(NumSum-2*Wid_edge,1)*Color_ChessLine;endfor j=yrow_ChessLine  M_QiPan(Wid_edge+1:NumSum-Wid_edge,j,:)=ones(NumSum-2*Wid_edge,1)*Color_ChessLine;end%畫9個小圓點radius_Dot=5;P1=Wid_edge+1+Dpixel*3:Dpixel*(NumCell/2-3):Wid_edge+1+Dpixel*(NumCell-3);for ti=P1  for tj=P1    for Num=ti-radius_Dot:ti+radius_Dot;      for j=tj-radius_Dot:tj+radius_Dot;        if (Num-ti)^2+(j-tj)^2<radius_Dot^2          M_QiPan(Num,j,:)=Color_ChessLine;        end      end    end  endendend

3、下棋或悔棋函數

%Author:LeiZhen%Date:2018-03-12function M_QiPan=Chess(M_QiPan,x_col_Chess,y_row_Chess,radius_Chess,BorW,Wid_edge,Dpixel,Color_QiPanBack,Color_ChessLine)%此程序下棋或者悔棋%M_QiPan為棋盤矩陣%xcol_ChessLine為棋盤列線%yrow_ChessLine為棋盤行線%radius_Chess為棋的像素半徑%BorW為下棋選擇,1黑棋,2白棋,3悔棋%Wid_edge為棋盤矩陣中的棋盤邊緣的像素寬度%Dpixel為棋盤矩陣中的相鄰棋盤線間的像素間隔%Color_QiPanBack為棋盤背景顏色%Color_ChessLine為棋盤線的顏色Color_BChess=[54,54,54];Color_WChess=[255,240,245];[Wid,Hei,Deep]=size(M_QiPan);for i=x_col_Chess-radius_Chess:x_col_Chess+radius_Chess  for j=y_row_Chess-radius_Chess:y_row_Chess+radius_Chess    if (i-x_col_Chess)^2+(j-y_row_Chess)^2<=radius_Chess^2      if BorW==1%黑棋        M_QiPan(j,i,:)=Color_BChess;      elseif BorW==2%白棋        M_QiPan(j,i,:)=Color_WChess;      elseif BorW==3%悔棋        M_QiPan(j,i,:)=Color_QiPanBack;        %對于不是棋盤邊緣的棋子        if i==x_col_Chess||j==y_row_Chess          M_QiPan(j,i,:)=Color_ChessLine;        end        %悔棋點是否為小圓點        if ((i-x_col_Chess)^2+(j-y_row_Chess)^2<5^2)&&...          (x_col_Chess==Wid_edge+1+Dpixel*3||x_col_Chess==floor(Wid/2)+1||x_col_Chess==Wid-Wid_edge-Dpixel*3)&&...          (y_row_Chess==Wid_edge+1+Dpixel*3||y_row_Chess==floor(Wid/2)+1||y_row_Chess==Wid-Wid_edge-Dpixel*3)                M_QiPan(j,i,:)=Color_ChessLine;        end        %對于棋盤邊緣的棋子        if x_col_Chess==Wid_edge+1&&i<x_col_Chess          M_QiPan(j,i,:)=Color_QiPanBack;        elseif x_col_Chess==Wid-Wid_edge&&i>x_col_Chess          M_QiPan(j,i,:)=Color_QiPanBack;        end        if y_row_Chess==Wid_edge+1&&j<y_row_Chess          M_QiPan(j,i,:)=Color_QiPanBack;        elseif y_row_Chess==Wid-Wid_edge&&j>y_row_Chess          M_QiPan(j,i,:)=Color_QiPanBack;        end      end    end  endendend

4、勝負判斷函數

%Author:LeiZhen%Date:2018-03-12function Victory_flag=Victory_Judge(M_LuoZi,x_col_LuoZi,y_row_LuoZi,State)%對一方是否獲勝的判斷函數%M_LuoZi為下棋點的矩陣%x_col_LuoZi為下棋列數%y_row_LuoZi下棋行數%State為M_LuoZi矩陣某點的下棋狀態,黑棋(1)或白棋(2)或無棋(0),以及每步棋的序號%NumCell為棋盤格數%Victory_flag為勝利標志NumCell=length(M_LuoZi)-1;Victory_flag=0;for i=1:NumCell-3  if M_LuoZi(i,y_row_LuoZi,1)==State&&M_LuoZi(i+1,y_row_LuoZi,1)==State&&M_LuoZi(i+2,y_row_LuoZi,1)==State&&M_LuoZi(i+3,y_row_LuoZi,1)==State&&M_LuoZi(i+4,y_row_LuoZi,1)==State    Victory_flag=1;    break;  end  if M_LuoZi(x_col_LuoZi,i,1)==State&&M_LuoZi(x_col_LuoZi,i+1,1)==State&&M_LuoZi(x_col_LuoZi,i+2,1)==State&&M_LuoZi(x_col_LuoZi,i+3,1)==State&&M_LuoZi(x_col_LuoZi,i+4,1)==State    Victory_flag=1;    break;  end  if abs(x_col_LuoZi-y_row_LuoZi)+i<=NumCell-3    if x_col_LuoZi>=y_row_LuoZi      if M_LuoZi(abs(x_col_LuoZi-y_row_LuoZi)+i,i,1)==State&&M_LuoZi(abs(x_col_LuoZi-y_row_LuoZi)+i+1,i+1,1)==State&&M_LuoZi(abs(x_col_LuoZi-y_row_LuoZi)+i+2,i+2,1)==State&&M_LuoZi(abs(x_col_LuoZi-y_row_LuoZi)+i+3,i+3,1)==State&&M_LuoZi(abs(x_col_LuoZi-y_row_LuoZi)+i+4,i+4,1)==State        Victory_flag=1;        break;      end    elseif x_col_LuoZi<y_row_LuoZi      if M_LuoZi(i,abs(x_col_LuoZi-y_row_LuoZi)+i,1)==State&&M_LuoZi(i+1,abs(x_col_LuoZi-y_row_LuoZi)+i+1,1)==State&&M_LuoZi(i+2,abs(x_col_LuoZi-y_row_LuoZi)+i+2,1)==State&&M_LuoZi(i+3,abs(x_col_LuoZi-y_row_LuoZi)+i+3,1)==State&&M_LuoZi(i+4,abs(x_col_LuoZi-y_row_LuoZi)+i+4,1)==State        Victory_flag=1;        break;      end    end  end  if y_row_LuoZi+x_col_LuoZi<=NumCell+2&&y_row_LuoZi+x_col_LuoZi-i>=5    if M_LuoZi(y_row_LuoZi+x_col_LuoZi-i,i,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-i-1,i+1,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-i-2,i+2,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-i-3,i+3,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-i-4,i+4,1)==State      Victory_flag=1;      break;    end  elseif y_row_LuoZi+x_col_LuoZi>NumCell+2&&y_row_LuoZi+x_col_LuoZi+i<=NumCell*2-1    offset=NumCell+2;    if M_LuoZi(y_row_LuoZi+x_col_LuoZi-offset+i,offset-i,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-offset+i+1,offset-i-1,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-offset+i+2,offset-i-2,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-offset+i+3,offset-i-3,1)==State&&M_LuoZi(y_row_LuoZi+x_col_LuoZi-offset+i+4,offset-i-4,1)==State      Victory_flag=1;      break;    end  endendend

5、光標函數(由庫函數改動而來)

%此函數為庫函數的修改,僅將十字光標改為箭頭光標,改動位置為第88行function [out1,out2,out3] = ginput_pointer(arg1)%GINPUT Graphical input from mouse.%  [X,Y] = GINPUT(N) gets N points from the current axes and returns%  the X- and Y-coordinates in length N vectors X and Y. The cursor%  can be positioned using a mouse. Data points are entered by pressing%  a mouse button or any key on the keyboard except carriage return,%  which terminates the input before N points are entered.%%  [X,Y] = GINPUT gathers an unlimited number of points until the%  return key is pressed.%%  [X,Y,BUTTON] = GINPUT(N) returns a third result, BUTTON, that%  contains a vector of integers specifying which mouse button was%  used (1,2,3 from left) or ASCII numbers if a key on the keyboard%  was used.%%  Examples:%    [x,y] = ginput;%%    [x,y] = ginput(5);%%    [x, y, button] = ginput(1);%%  See also GTEXT, WAITFORBUTTONPRESS. %  Copyright 1984-2011 The MathWorks, Inc.%  $Revision: 5.32.4.18 $ $Date: 2011/05/17 02:35:09 $ out1 = []; out2 = []; out3 = []; y = [];c = computer;if ~strcmp(c(1:2),'PC')  tp = get(0,'TerminalProtocol');else  tp = 'micro';end if ~strcmp(tp,'none') && ~strcmp(tp,'x') && ~strcmp(tp,'micro'),  if nargout == 1,    if nargin == 1,      out1 = trmginput(arg1);    else      out1 = trmginput;    end  elseif nargout == 2 || nargout == 0,    if nargin == 1,      [out1,out2] = trmginput(arg1);    else      [out1,out2] = trmginput;    end    if nargout == 0      out1 = [ out1 out2 ];    end  elseif nargout == 3,    if nargin == 1,      [out1,out2,out3] = trmginput(arg1);    else      [out1,out2,out3] = trmginput;    end  endelse    fig = gcf;  figure(gcf);    if nargin == 0    how_many = -1;    b = [];  else    how_many = arg1;    b = [];    if ischar(how_many) ...        || size(how_many,1) ~= 1 || size(how_many,2) ~= 1 ...        || ~(fix(how_many) == how_many) ...        || how_many < 0      error(message('MATLAB:ginput:NeedPositiveInt'))    end    if how_many == 0      % If input argument is equal to zero points,      % give a warning and return empty for the outputs.            warning (message('MATLAB:ginput:InputArgumentZero'));    end  end    % Setup the figure to disable interactive modes and activate pointers.   initialState = setupFcn(fig);  set(gcf, 'pointer', 'arrow');    % onCleanup object to restore everything to original state in event of  % completion, closing of figure errors or ctrl+c.   c = onCleanup(@() restoreFcn(initialState));        % We need to pump the event queue on unix  % before calling WAITFORBUTTONPRESS  drawnow  char = 0;    while how_many ~= 0    % Use no-side effect WAITFORBUTTONPRESS    waserr = 0;    try      keydown = wfbp;    catch %#ok<CTCH>      waserr = 1;    end    if(waserr == 1)      if(ishghandle(fig))        cleanup(c);        error(message('MATLAB:ginput:Interrupted'));      else        cleanup(c);        error(message('MATLAB:ginput:FigureDeletionPause'));      end    end    % g467403 - ginput failed to discern clicks/keypresses on the figure it was    % registered to operate on and any other open figures whose handle    % visibility were set to off    figchildren = allchild(0);    if ~isempty(figchildren)      ptr_fig = figchildren(1);    else      error(message('MATLAB:ginput:FigureUnavailable'));    end    %     old code -> ptr_fig = get(0,'CurrentFigure'); Fails when the    %     clicked figure has handlevisibility set to callback    if(ptr_fig == fig)      if keydown        char = get(fig, 'CurrentCharacter');        button = abs(get(fig, 'CurrentCharacter'));      else        button = get(fig, 'SelectionType');        if strcmp(button,'open')          button = 1;        elseif strcmp(button,'normal')          button = 1;        elseif strcmp(button,'extend')          button = 2;        elseif strcmp(button,'alt')          button = 3;        else          error(message('MATLAB:ginput:InvalidSelection'))        end      end      axes_handle = gca;      drawnow;      pt = get(axes_handle, 'CurrentPoint');            how_many = how_many - 1;            if(char == 13) % & how_many ~= 0)        % if the return key was pressed, char will == 13,        % and that's our signal to break out of here whether        % or not we have collected all the requested data        % points.        % If this was an early breakout, don't include        % the <Return> key info in the return arrays.        % We will no longer count it if it's the last input.        break;      end            out1 = [out1;pt(1,1)]; %#ok<AGROW>      y = [y;pt(1,2)]; %#ok<AGROW>      b = [b;button]; %#ok<AGROW>    end  end    % Cleanup and Restore   cleanup(c);    if nargout > 1    out2 = y;    if nargout > 2      out3 = b;    end  else    out1 = [out1 y];  end  endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function key = wfbp%WFBP  Replacement for WAITFORBUTTONPRESS that has no side effects. fig = gcf;current_char = []; %#ok<NASGU> % Now wait for that buttonpress, and check for error conditionswaserr = 0;try  h=findall(fig,'Type','uimenu','Accelerator','C');  % Disabling ^C for edit menu so the only ^C is for  set(h,'Accelerator','');              % interrupting the function.  keydown = waitforbuttonpress;  current_char = double(get(fig,'CurrentCharacter')); % Capturing the character.  if~isempty(current_char) && (keydown == 1)     % If the character was generated by the    if(current_char == 3)              % current keypress AND is ^C, set 'waserr'to 1      waserr = 1;                 % so that it errors out.    end  end    set(h,'Accelerator','C');              % Set back the accelerator for edit menu.catch %#ok<CTCH>  waserr = 1;enddrawnow;if(waserr == 1)  set(h,'Accelerator','C');             % Set back the accelerator if it errored out.  error(message('MATLAB:ginput:Interrupted'));endif nargout>0, key = keydown; end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%endfunction initialState = setupFcn(fig)% Store Figure Handle. initialState.figureHandle = fig; % Suspend figure functionsinitialState.uisuspendState = uisuspend(fig);% Disable Plottools ButtonsinitialState.toolbar = findobj(allchild(fig),'flat','Type','uitoolbar');if ~isempty(initialState.toolbar)  initialState.ptButtons = [uigettool(initialState.toolbar,'Plottools.PlottoolsOff'), ...    uigettool(initialState.toolbar,'Plottools.PlottoolsOn')];  initialState.ptState = get (initialState.ptButtons,'Enable');  set (initialState.ptButtons,'Enable','off');end% Setup FullCrosshair Pointer without warning. oldwarnstate = warning('off', 'MATLAB:hg:Figure:Pointer');set(fig,'Pointer','fullcrosshair');warning(oldwarnstate);% Adding this to enable automatic updating of currentpoint on the figure set(fig,'WindowButtonMotionFcn',@(o,e) dummy());% Get the initial Figure UnitsinitialState.fig_units = get(fig,'Units');endfunction restoreFcn(initialState)if ishghandle(initialState.figureHandle)  % Figure Units  set(initialState.figureHandle,'Units',initialState.fig_units);  set(initialState.figureHandle,'WindowButtonMotionFcn','');    % Plottools Icons  if ~isempty(initialState.toolbar) && ~isempty(initialState.ptButtons)    set (initialState.ptButtons(1),'Enable',initialState.ptState{1});    set (initialState.ptButtons(2),'Enable',initialState.ptState{2});  end    % UISUSPEND  uirestore(initialState.uisuspendState);endendfunction dummy()% do nothing, this is there to update the GINPUT WindowButtonMotionFcn. endfunction cleanup(c)if isvalid(c)  delete(c);endend

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线亚洲一区| 羞羞色国产精品| 中文字幕亚洲无线码a| 丝袜美腿亚洲一区二区| 亚洲美女精品成人在线视频| 国产精品成人免费电影| 国产精品久久久久久久久久ktv| 色无极影院亚洲| 国产精品三级久久久久久电影| 亚洲高清久久网| 亚洲男人天堂网站| 69影院欧美专区视频| 成人久久一区二区三区| 538国产精品一区二区在线| 中文字幕日韩欧美在线视频| 久久久久久久91| www日韩中文字幕在线看| 亚洲最大中文字幕| 国产精品免费小视频| 色多多国产成人永久免费网站| 亚洲一区二区久久| 久久久久久久一区二区三区| 69久久夜色精品国产69乱青草| 久久久久久久久久久国产| 国产精彩精品视频| 欧美日韩在线一区| 欧美极品少妇xxxxⅹ喷水| 欧洲亚洲在线视频| 国产精品日韩在线观看| 2019亚洲男人天堂| 中文字幕在线看视频国产欧美| 国语自产精品视频在线看| 亚洲视频在线免费看| 亚洲精品中文字幕女同| 91人人爽人人爽人人精88v| 欧美黄色成人网| 欧美二区乱c黑人| 精品亚洲一区二区三区在线播放| 欧美国产日韩一区二区| 欧美天堂在线观看| 国产玖玖精品视频| 国内揄拍国内精品| 久久精品国产欧美亚洲人人爽| 中文字幕在线成人| 亚洲一区亚洲二区亚洲三区| 久色乳综合思思在线视频| 色婷婷av一区二区三区在线观看| 热久久视久久精品18亚洲精品| 国产精品成人aaaaa网站| 国产成人在线一区| 久久久www成人免费精品张筱雨| 久久99热这里只有精品国产| 亚洲精品网站在线播放gif| 亚洲精品电影在线| 亚洲午夜性刺激影院| 日韩大陆欧美高清视频区| 亚洲成**性毛茸茸| 日本91av在线播放| 高清一区二区三区四区五区| 欧美午夜性色大片在线观看| 91av视频在线播放| 美女扒开尿口让男人操亚洲视频网站| 欧美电影在线观看网站| 亚洲第一视频网| 久久精品99无色码中文字幕| 萌白酱国产一区二区| 美女精品久久久| 日韩欧美中文免费| 丝袜美腿亚洲一区二区| 亚洲人成网站999久久久综合| 国产精品久久久av| 国内精品久久久久| 91伊人影院在线播放| 亚洲深夜福利视频| 国语自产精品视频在线看一大j8| 成人观看高清在线观看免费| 国产成人一区三区| 国产亚洲福利一区| 国产日韩欧美视频| 成人黄色激情网| 久久久久久久久久久久久久久久久久av| 国产精品免费久久久久久| 欧美日韩在线观看视频小说| 欧美日韩亚洲一区二| 欧美激情一区二区久久久| 国产91精品视频在线观看| 懂色aⅴ精品一区二区三区蜜月| 亚洲国产精品久久久久秋霞不卡| 亚洲精品国精品久久99热| 91亚洲va在线va天堂va国| 亚洲精品网站在线播放gif| 国产精品福利在线观看网址| 久久久国产精品x99av| 精品国产自在精品国产浪潮| 亚洲国产成人精品女人久久久| 精品亚洲一区二区三区四区五区| 国产精品69久久久久| 欧美另类老女人| 懂色aⅴ精品一区二区三区蜜月| 欧美国产日韩xxxxx| 国产精品久久久久久久久久久不卡| 黑人巨大精品欧美一区二区一视频| 欧美最猛性xxxxx免费| 亚洲精品成人久久| 久久久久久久久久国产| 亚洲女人被黑人巨大进入| 555www成人网| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲伊人久久大香线蕉av| 欧美日韩在线视频一区| 欧美超级乱淫片喷水| 欧美高清不卡在线| 国产精品久久久久久一区二区| 久久精品中文字幕电影| 亚洲欧美国产制服动漫| 欧美日韩激情美女| 中文字幕日韩欧美在线| 亚洲天堂色网站| 久久九九精品99国产精品| 91久久久精品| 久久综合伊人77777蜜臀| 成人网在线免费观看| 国产成人精品综合久久久| 日韩精品极品视频免费观看| 日韩精品视频观看| 亚洲欧美成人精品| 日韩在线资源网| 成人国产精品日本在线| 亚洲综合在线小说| 91亚洲va在线va天堂va国| 日韩成人xxxx| 欧美一级大片视频| 97精品在线观看| 亚洲一区二区三区视频| 成人xxxx视频| 日韩www在线| 成人精品久久一区二区三区| 国产第一区电影| 亚洲国产精品99久久| 另类专区欧美制服同性| 成人欧美一区二区三区在线湿哒哒| 成人福利在线观看| 日韩av理论片| 欧美黄色小视频| 欧美在线视频免费播放| 中文字幕日韩高清| 国产精品亚洲欧美导航| 色妞一区二区三区| 久久久国产精彩视频美女艺术照福利| 国产日韩精品视频| 97在线免费观看视频| 全球成人中文在线| 国产日韩中文字幕| 成人免费直播live| 久久国产精品99国产精| 色婷婷久久一区二区| 91香蕉国产在线观看| 激情久久av一区av二区av三区| 国产日韩精品在线观看| 亚洲成人xxx| 亚洲精品国产电影| 懂色av影视一区二区三区| 欧美日韩一区二区在线| 国产一区二区黑人欧美xxxx|