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

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

?? gameclasses.pas

?? 很好玩的一個DELPHI游戲
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************}
{                Magic Girl                             }
{         版權所有 (C) 2002, 2003 Rainstorey Studio     }
{         -----------------------------------------     }
{         CopyRight(?)Rainstorey Soft by 2006-2008      }
{         Power DelphiX for Delphi                      }
{         This Code License for GPL                     }
{         Magic Girl Classes Definition some Classes for}
{         GameSprite in Game.                           }
{         v0.40                                         }
{         Last Modification 2006-1-6 14:51:22           }
{         E-Mail:Rainstorey@163.com                     }
{         Blog:http://www.rainstorey.com/blog           }
{         WebSite:http://www.Rainstorey.com             }
{*******************************************************}
//TODO:魔法效果未實現,某些代碼有更優方案。
unit GameClasses;

interface
uses Windows,SysUtils,Classes,
  DXDraws,DXSprite,DXInput,DXSounds;

function SleepEx(const t:Cardinal):Boolean;

var
  TDebug:Double; //調試變量
  //
type
  TEnemyActivityLine = (TALLine,TALALine,TALCLine,TALC1Line,TALILine,TALJLine,TALLLine,TALL1Line,TALMLine,TALNLine,TALOLine,TALSLine,TALULine,TALVLine,TALV1Line,TALWLine,TALXLine,TALZLine,TALZ1Line,TALRandLine);
  TTransmitType = (TTRand,TTLine,TTCircle,TTRadian);
  TAccuracy = (ACLow,ACStandard,ACHigh);
  TBulletType = (BTStandard,BTFire,BTLaser,BTWave,BTMoon,BTCircle);
  TArticleType = (ArtNone,Artsupper,ArtMoon,ArtCircle,ArtWave,ArtFire,ARTLaser,ArtPointA,ArtPointB,DiamondA,DiamondB,DiamondC);
  TOnGetArticle = procedure(ArticleType:TArticleType;Sender:TObject) of object;
  TDeadSound = (BomNone,EnemyBom,PlayerBom,ArtBom,Fire,Drip,Gun,LaserGun,Bom8,Bom9);
  //  TDeadAnim = (Anim1,Anim2,Anim3,Anim4,Anim5,Anim6,Anim7,Anim8,Anim9);
  TDeadSprite = class;

  TGameSprite = class(TImageSpriteEx)
  protected
    FQuiescence:Boolean;
    FSpeed:Integer;
    FShowSound:string;
    FDeadSound:TDeadSound;
    FDeadAnimSpeed:Double;
    FDeadImage:string;
    FDeadOffRect:TPoint;
    FDeadTimes:Integer;
    procedure Hit; virtual;
    //
  public
    class procedure PalleteAnim(DX:TDXDraw;Col:TRGBQuad;Time:Integer);
    constructor Create(AParent:TSprite); override;
    destructor Destroy; override;
    procedure DoMove(MoveCount:Integer); override;
    property Speed:Integer read FSpeed write FSpeed;
    property ShowSound:string read FShowSound write FShowSound;
    property DeadSound:TDeadSound read FDeadSound write FDeadSound;
    property DeadImage:string read FDeadImage write FDeadImage;
    property DeadOffRect:TPoint read FDeadOffRect write FDeadOffRect;
    property DeadTimes:Integer read FDeadTimes write FDeadTimes;
    property Quiescence:Boolean read FQuiescence write FQuiescence;

  end;

  TDeadSprite = class(TGameSprite)
  private
    FDeadSpeed:Integer;
    FDeadTimeCount:Integer;
    FDeadTime:Double;
  public
    constructor Create(AParent:TSprite); override;
    property DeadSpeed:Integer read FDeadSpeed write FDeadSpeed;
    procedure DoMove(MoveCount:Integer); override;
  end;

  TBossDead = class(TDeadSprite)
  private
    tempx:Double;
  public
    procedure DoMove(MoveCount:Integer); override;
  end;

  TBackPlayer = class(TGameSprite)
  private
    FStop:Boolean;
  public
    property Stop:Boolean read FStop write FStop;
    procedure DoMove(MoveCount:Integer); override;
  end;

  TEnemy = class(TGameSprite)
  protected
    FHP:Integer;
    FBullet:string;
    FTransmitProbability:Integer; //百分比
    FBulletSpeed:Integer;
    FProbability:Integer; //0為最高精確度
    FBuildArt:TArticleType;
    FTransmitType:TTransmitType;
    FScore:Integer;
    FLineType:TEnemyActivityLine;
    tempx,tempy:Double;
    FisHit:Boolean;
    procedure Transmit; virtual;
    property isHit:Boolean read FisHit write FisHit;
  public
    property Bulletspeed:Integer read FBulletSpeed write FBulletSpeed;
    property TransmitProbability:Integer read FTransmitProbability write FTransmitProbability;
    property Bullet:string read FBullet write FBullet;
    procedure DoMove(MoveCount:Integer); override;
    procedure DoCollision(Sprite:TSprite;var Done:Boolean); override;
    property Hp:Integer read FHP write FHP;
    constructor Create(AParent:TSprite); override;
    destructor Destroy; override;
    property Probability:Integer read FProbability write FProbability;
    property BuildArt:TArticleType read FBuildArt write FBuildArt;
    property TransmitType:TTransmitType read FTransmitType write FTransmitType;
    property Score:Integer read FScore write FScore;
    property LineType:TEnemyActivityLine read FLineType write FLineType;
  end;

  { TBoss }

  TBoss = class(TEnemy)
  private
    FBossBomb:TDeadSound;
    tempcount:Cardinal;
    tempcount1:Cardinal;
    FShootSound:TDeadSound;
  protected
    procedure Transmit; override;
  public
    property ShootSound:TDeadSound read FShootSound write FShootSound;
    procedure DoMove(MoveCount:Integer); override;
    constructor Create(AParent:TSprite); override;
    destructor Destroy; override;

  end;

  TMainPlayer = class(TGameSprite)
  private
    FSupperTime,FSupperTotalTime:Cardinal;
    FSupper:Boolean;
    FBulletType:TBulletType;
    FBulletCounts:Integer;
    FNCanControl:Boolean;
    FShootSound:TDeadSound;
    procedure SetBulletType(const Value:TBulletType);
  protected
    procedure SetFSupper(const Value:Boolean);
  public
    property ShootSound:TDeadSound read FShootSound write FShootSound;
    property NCanControl:Boolean read FNCanControl write FNCanControl;
    property BulletType:TBulletType read FBulletType write SetBulletType;
    property SupperTotalTime:Cardinal read FSupperTotalTime write FSupperTotalTime;
    property Supper:Boolean read FSupper write SetFSupper;
    procedure DoMove(MoveCount:Integer); override;
    procedure DoCollision(Sprite:TSprite;var Done:Boolean); override;
    destructor Destroy; override;
    constructor Create(AParent:TSprite); override;
  end;

{$WARNINGS OFF}
  TBullet = class(TGameSprite)
  private
    FPower:Integer;
  public
    constructor Create(AParent:TSprite); override;
    destructor Destroy; override;
    property Power:Integer read FPower write FPower;
    procedure DoMove(MoveCount:Integer); override;
    procedure DoCollision(Sprite:TSprite;var Done:Boolean); override;
  end;

  
  TMagicBullet=class(TBullet);

  TEnemyBullet = class(TGameSprite)
  private
    FAccuracy:TAccuracy;
    FDirectionOff:Boolean;
    FPorY:Double;
    FTransmitType:TTransmitType;
  protected
    XX,YY:Shortint;
    FCircleAngle,FCircleCenter:Double;
  public
    // property MainX:Double read FMainX write FMainY;
    // property MainY:Double read FMainY write FMainY;
     //  property EnemyX:Double read FEnemyX write FEnemyX;
     //  property EnemyY:Double read FEnemyY write FEnemyY;
    property Accuracy:TAccuracy read FAccuracy write FAccuracy;
    procedure DoMove(MoveCount:Integer); override;
    procedure DoCollision(Sprite:TSprite;var Done:Boolean); override;
    constructor Create(AParent:TSprite;FEnemy:TEnemy); virtual;
  end;
{$WARNINGS ON}

  //-----------------------------------------------------------------------//
  TArticle = class(TGameSprite)
  private
    FOnGetArticle:TOnGetArticle;
    FArticleType:TArticleType;
    procedure SetArticleType(const Value:TArticleType);
  public
    property ArticleType:TArticleType read FArticleType write SetArticleType;
    property OnArticle:TOnGetArticle read FOnGetArticle write FOnGetArticle;
    procedure DoCollision(Sprite:TSprite;var Done:Boolean); override;
    procedure DoMove(MoveCount:Integer); override;
  end;
  //------------------------------------------------------------------------------
  TBackMap = class(TBackgroundSprite)
  private
    FInclined:Double;
    FSpeed:Double;
  public
    property Speed:Double read FSpeed write FSpeed;
    property Inclined:Double read FInclined write FInclined;
    procedure DoMove(MoveCount:Integer); override;

  end;
  //-------------------------------------------------------------------------//
implementation

uses Main,GameConst;
const
  BulletPower:array[0..5] of Integer = (1,5,8,4,3,2);
  BulletName:array[0..5] of string = ('Bullet', 'Bullet1', 'Bullet2', 'Bullet3', 'Bullet4', 'Bullet5');
  BulletCount:array[0..5] of Integer = (99,4,2,6,99,3);
  ArticleName:array[0..11] of string = ('', 'ArtSupper', 'ArtMoon', 'ArtCircle', 'ArtWave', 'ArtFire', 'ArtLaser', 'ArtPointA', 'ArtPointB', 'BlueDiamond', 'YellowDiamond', 'GreenDiamond');
  DeadSoundName:array[0..7] of string = ('', 'EnemyBom', 'PlayerDead', 'ArtHide', 'Fire', 'Drip', 'Gun', 'LaserGun');
  //BombTypeName
  RadianRange:Integer = 100;
var
  BulletCounts:Integer;
  GameTick1,GameTick2:Cardinal;
  { TMainPlayer }

function SleepEx(const t:Cardinal):Boolean;
begin
  GameTick2:=FMain.FCount;
  if GameTick2 - GameTick1 > t then
  begin
    GameTick1:=GameTick2;
    Result:=True;
    Exit;
  end
  else
    Result:=False;
end;

constructor TMainPlayer.Create(AParent:TSprite);
begin
  inherited Create(AParent);
  FShootSound:=Fire;

end;

destructor TMainPlayer.Destroy;
begin
  if not (FMain.GameStatus = GameExit) //Fixed GameApplication can't exit at 2006-1-10 20:33:03
  then FMain.CreateMainPlayer;
  inherited Destroy;
end;

procedure TMainPlayer.DoCollision(Sprite:TSprite;var Done:Boolean);
var
  tempx,tempy:Double;
begin
  //Magic Girl主動去撞其他精靈則發生該事件。
  Done:=False;
  if not (FSupper) then
  begin
    tempx:=Abs(Sprite.X - Self.X);
    tempy:=Abs(Sprite.Y - Self.Y);
    if (Sprite is TEnemy) or ((Sprite is TEnemyBullet) and (32 > tempx) and (tempx > 16) and (27 > tempy) and (tempy > 11)) then
      Hit;
  end;
  if (Sprite is TArticle) then
  begin
    // FMain.WaveList.Items.Find(DeadSoundName[Ord(TArticle(Sprite).DeadSound)]).Play(False);
    with Sprite as TArticle do
    begin
      if Assigned(FOnGetArticle) then
        FOnGetArticle(FArticleType,Self);
      Hit;
    end;
  end;
end;

procedure TMainPlayer.DoMove(MoveCount:Integer);
begin
  inherited DoMove(MoveCount);
  if not (FNCanControl) then
    with FMain.Input do
    begin
      Update;
      if isup in Keyboard.States then Y:=Y - FSpeed;
      if isdown in Keyboard.States then Y:=Y + FSpeed;
      if isleft in Keyboard.States then X:=X - FSpeed;
      if isright in Keyboard.States then X:=X + FSpeed;

      if (isButton1 in Keyboard.States) and (BulletCounts < FBulletCounts) and SleepEx(3) then
      begin
        with TBullet.Create(FMain.SpriteEngine.Engine) do
        begin
          Image:=FMain.Image.Items.Find(BulletName[Ord(FBulletType)]);
          Width:=Image.Width;
          Height:=Image.Height;
          Power:=BulletPower[Ord(FBulletType)];
          X:=Self.X + Self.Image.PatternWidth;
          Y:=Abs(Image.PatternHeight div 2 - Self.Y) + 15;
          DeadSound:=BomNone;
          AnimCount:=Image.PatternCount - 1;
          AnimSpeed:=0.1;
          DeadImage:= 'Hit';
          DeadTimes:=10;
          DeadOffRect:=FMain.BulletOffPoint;
          FMain.WaveList.Items.Find(DeadSoundName[Ord(FShootSound)]).Play(False);
        end;
      end;
      if (FSupper) and (FMain.FCount - FSupperTime = FSupperTotalTime) then
        Supper:=False;
      if X < 0 then X:=0;
      if X > FMain.DXDraw.Width - 48 then X:=FMain.DXDraw.Width - 48;
      if Y < 0 then Y:=0;
      if Y > FMain.DXDraw.Height - 48 then Y:=FMain.DXDraw.Height - 48;
    end;
end;

procedure TMainPlayer.SetBulletType(const Value:TBulletType);
begin
  FBulletType:=Value;
  FBulletCounts:=BulletCount[Ord(FBulletType)];
end;

procedure TMainPlayer.SetFSupper(const Value:Boolean);
begin
  FSupper:=Value;
  if FSupper then
  begin
    AnimCount:=AnimCount + 1;
    FSupperTime:=FMain.FCount;
    if FSupperTotalTime = 0 then FSupperTotalTime:=300;
  end
  else
    AnimCount:=Image.PatternCount - 1;
end;

{ TBackMap }

procedure TBackMap.DoMove(MoveCount:Integer);
begin
  inherited DoMove(MoveCount);
  X:=X - FSpeed;
  Y:=Y + FInclined;
end;

{ TBullet }

constructor TBullet.Create(AParent:TSprite);
begin
  inherited Create(AParent);
  Inc(BulletCounts);
end;

destructor TBullet.Destroy;
begin
  Dec(BulletCounts);
  inherited Destroy;
end;

procedure TBullet.DoCollision(Sprite:TSprite;var Done:Boolean);
begin
  Done:=False;
  if (Sprite is TEnemy) then
  begin
    if not (Self.Image.Name = 'Bullet2') then Hit;
    if (TEnemy(Sprite).Hp - FPower) <= 0 then
    begin
      TEnemy(Sprite).isHit:=True; //敵方被擊中時才計分
      TEnemy(Sprite).Hit;
    end
    else
    begin
      FMain.WaveList.Items.Find('Water').Play(False);
      TEnemy(Sprite).Hp:=TEnemy(Sprite).Hp - FPower; //減血
    end;
  end;

end;

procedure TBullet.DoMove(MoveCount:Integer);
begin
  inherited DoMove(MoveCount);
  X:=X + 24;
  if X >= FMain.DXDraw.Width then Dead;
end;

{ TEnemy }

constructor TEnemy.Create(AParent:TSprite);
begin
  inherited Create(AParent);
  //所有需要初始化的對象寫在這。
  FScore:=100;
  FBulletSpeed:=2;
  FBuildArt:=DiamondB;
end;

destructor TEnemy.Destroy;
begin
  if FMain.GameStatus <> GameExit then    //Bug is Fixed;
  begin
    if FisHit then
      Inc(FMain.TotalScore,FScore);
    if (Ord(BuildArt) <> 0) then
      with TArticle.Create(FMain.SpriteEngine.Engine) do
      begin
        ArticleType:=BuildArt;
        Speed:=1;
        X:=Self.X + Self.Image.PatternWidth div 2;
        Y:=Self.Y + Self.Image.PatternHeight div 2;
        OnArticle:=FMain.GetOnArticle;
        DeadImage:= '';
        DeadSound:=ArtBom;
      end;
  end;
  inherited Destroy;
end;

procedure TEnemy.DoCollision(Sprite:TSprite;var Done:Boolean);
begin
  if (Sprite is TMainPlayer) then
    TMainPlayer(Sprite).DoCollision(Sprite,Done);
  if Sprite is TBullet then TBullet(Sprite).DoCollision(Self,Done);

end;

procedure TEnemy.DoMove(MoveCount:Integer);
begin
  //mess design
  inherited DoMove(MoveCount);
  //對列,以左手坐標系為準。起點已右邊為起點,左邊為終點。
  case FLineType of
    //直線
    TALLine:
      X:=X - FSpeed;
    //C子型
    TALCLine:
      begin
        tempx:=tempx + 1;
        X:=X + Round(16 * Cos(tempx / 16 * Pi));
        Y:=Y + Round(16 * Sin(tempx / 16 * Pi));
        if tempx = 18 then tempx:=0;
        X:=X - FSpeed;
      end;
    TALC1Line:
      begin
        tempx:=tempx + 1;
        X:=X + Round(16 * Cos(tempx / 16 * Pi));
        Y:=Y - Round(16 * Sin(tempx / 16 * Pi));
        if tempx = 27 then tempx:=0;
        X:=X - FSpeed;
      end;
    //L型
    TALILine:Y:=Y + FSpeed;

    TALJLine:
      begin
        alpha:=Trunc(tempy);
        if (X >= FMain.DXDraw.Width - Image.Height * 6) then
        begin
          tempx:=tempx + 1;
          X:=X + Round(16 * Cos(tempx / 16 * Pi));
          Y:=Y + Round(16 * Sin(tempx / 16 * Pi));
          //  if tempx = 36 then FSpeed:= -FSpeed;
        end;
        X:=X - FSpeed;
        tempy:=tempy * 2 + 1;
        if tempy > 255 then tempy:=255;
      end;
    TALLLine:
      begin
        if Y >= FMain.DXDraw.Height - Image.Height then
          X:=X - FSpeed
        else
          Y:=Y + FSpeed;
      end;
    TALL1Line:
      begin
        if Y <= 0 then
          X:=X - FSpeed
        else
          Y:=Y - FSpeed;
      end;
    TALMLine:;
    TALNLine:;
    TALOLine:
      begin
        tempx:=tempx + 1;
        X:=X + Round(16 * Cos(tempx / 16 * Pi));
        Y:=Y + Round(16 * Sin(tempx / 16 * Pi));
      end;
    TALSLine:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合色天天鬼久久鬼色| 亚洲午夜免费电影| 亚洲一区二区3| 国产一区二区三区香蕉| 欧美视频完全免费看| 国产欧美一区二区三区在线老狼| 亚洲小说欧美激情另类| 国产精品一区二区男女羞羞无遮挡| 欧美午夜精品理论片a级按摩| 中文幕一区二区三区久久蜜桃| 亚洲bt欧美bt精品777| 99re66热这里只有精品3直播 | 日韩中文字幕不卡| 99国产麻豆精品| 久久久久久97三级| 麻豆精品在线播放| 91精品国产一区二区三区香蕉| 亚洲美女偷拍久久| 99re热视频这里只精品| 中文字幕欧美三区| 国产麻豆日韩欧美久久| 2024国产精品| 久久99久久久欧美国产| 日韩三级免费观看| 日韩av在线播放中文字幕| 在线视频中文字幕一区二区| 中文字幕亚洲一区二区va在线| 国产精品综合一区二区| 精品久久久久久久一区二区蜜臀| 日本欧美在线看| 日韩午夜在线播放| 美女视频网站黄色亚洲| 日韩一区二区在线观看视频 | 亚洲人成小说网站色在线| 国产精品系列在线播放| 国产三级精品在线| 成人美女在线视频| 亚洲少妇30p| 在线免费观看日本欧美| 亚洲小少妇裸体bbw| 欧美日本在线视频| 六月丁香综合在线视频| 精品国产99国产精品| 精品一区二区三区蜜桃| 国产偷国产偷精品高清尤物| 高清免费成人av| 亚洲欧洲日产国产综合网| 99精品热视频| 亚洲午夜激情网页| 欧美一级艳片视频免费观看| 久久国产剧场电影| 中文字幕成人网| 91免费观看视频| 亚洲成av人片一区二区三区| 日韩视频一区二区三区在线播放| 精品亚洲国产成人av制服丝袜| 久久伊人中文字幕| 色爱区综合激月婷婷| 人人狠狠综合久久亚洲| 久久久精品免费网站| 色综合天天综合色综合av | 久久精品国产精品亚洲精品| 久久综合视频网| 欧亚洲嫩模精品一区三区| 热久久国产精品| 国产精品水嫩水嫩| 欧美精品粉嫩高潮一区二区| 国产高清不卡一区| 亚洲一区二区三区四区五区黄 | 在线视频国内一区二区| 日韩不卡手机在线v区| 国产欧美一区二区三区在线老狼| 在线亚洲免费视频| 国产精品系列在线观看| 爽爽淫人综合网网站| 国产精品女同一区二区三区| 欧美一卡2卡三卡4卡5免费| 不卡视频免费播放| 久久电影网站中文字幕| 亚洲欧美成人一区二区三区| 精品伦理精品一区| 欧美日韩免费不卡视频一区二区三区| 精久久久久久久久久久| 亚洲妇熟xx妇色黄| 国产精品成人免费| 欧美xingq一区二区| 欧美三级电影网| 97成人超碰视| 国产成人精品一区二| 麻豆精品在线播放| 亚洲国产va精品久久久不卡综合| 中文字幕国产精品一区二区| 日韩欧美123| 制服丝袜激情欧洲亚洲| 欧美在线免费观看视频| 99久久精品99国产精品| 国产91高潮流白浆在线麻豆| 久久国产人妖系列| 裸体一区二区三区| 日韩精品每日更新| 亚洲女同一区二区| 欧美国产激情一区二区三区蜜月| 欧美videossexotv100| 欧美日韩在线播| 欧美视频一区二区在线观看| 99v久久综合狠狠综合久久| 国产成人日日夜夜| 国产很黄免费观看久久| 国产精品一卡二卡| 国产精品888| 东方aⅴ免费观看久久av| 国内外精品视频| 国产精品一区二区黑丝| 国产麻豆成人精品| 国产69精品久久99不卡| 成av人片一区二区| 91丨porny丨最新| 日本道精品一区二区三区| 99re这里只有精品首页| 欧美日韩视频专区在线播放| 色婷婷精品久久二区二区蜜臀av| 色天使色偷偷av一区二区| 色成人在线视频| 欧美精品18+| 久久综合网色—综合色88| 久久精品欧美日韩| 国产精品免费久久| 亚洲激情中文1区| 亚洲国产日韩一区二区| 蜜臀av一区二区三区| 久久99深爱久久99精品| 高清av一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 97精品视频在线观看自产线路二| jizz一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 这里只有精品视频在线观看| 欧美电影免费观看高清完整版在线 | 日韩avvvv在线播放| 久久国产精品99久久久久久老狼| 极品少妇一区二区三区精品视频 | 亚洲成人1区2区| 久色婷婷小香蕉久久| 成人精品小蝌蚪| 5858s免费视频成人| 2024国产精品| 亚洲国产日韩综合久久精品| 国产在线精品一区二区不卡了 | 国产麻豆精品视频| 在线中文字幕一区二区| 日韩精品一区在线| 亚洲色图另类专区| 精品一区二区免费| 色悠久久久久综合欧美99| 日韩久久精品一区| 夜夜嗨av一区二区三区四季av| 久久精品国产亚洲a| 日本精品视频一区二区| 久久综合色8888| 亚洲成人av一区| 暴力调教一区二区三区| 日韩精品一区二区三区三区免费| 最新国产の精品合集bt伙计| 麻豆国产精品官网| 欧美亚洲动漫另类| 国产精品视频免费| 久久国产综合精品| 欧美日韩亚洲另类| 国产精品美女一区二区三区| 日韩不卡一区二区三区| 欧洲精品中文字幕| 亚洲欧洲日韩在线| 福利91精品一区二区三区| 欧美一区二区三区在| 亚洲综合精品自拍| 成人成人成人在线视频| 国产亚洲精久久久久久| 奇米影视在线99精品| 欧美亚洲高清一区二区三区不卡| 国产精品水嫩水嫩| 国产成人免费av在线| 日韩精品一区二区三区在线观看 | 欧美一区二区三区免费视频 | 麻豆精品一区二区| 欧美羞羞免费网站| 一区二区三区在线视频免费| 成人妖精视频yjsp地址| 久久精品人人爽人人爽| 国产综合一区二区| 久久综合九色综合97婷婷| 精品一区二区在线看| 制服丝袜激情欧洲亚洲| 日韩精品91亚洲二区在线观看| 色视频一区二区| 一区二区欧美国产| 欧美日韩国产一级| 丝瓜av网站精品一区二区| 这里是久久伊人| 美女一区二区视频| www日韩大片|