精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

游戲人生Silverlight:星際競技場

開發 后端
使用 Silverlight 2.0(c#, Farseer Physics Engine) 開發一個射擊游戲:星際競技場。思路:使用一個開源的 Silverlight 物理引擎:Farseer Physics Engine.....

介紹

使用 Silverlight 2.0(c#, Farseer Physics Engine) 開發一個射擊游戲:星際競技場

玩法

W 或者 ↑ = 前進;S 或者 ↓ = 后退:A 或者 ← = 左轉;D 或者 → = 右轉;J 或者 Ctrl = 開火

思路

1、使用一個開源的 Silverlight 物理引擎:Farseer Physics Engine

2、將 Farseer Physics Engine 中的物理運算器 PhysicsSimulator 放到一個全局變量中,對 Body 和 Geom 做即時運算,

3、寫個 IPhysicsControl 接口,用于描述物理對象的各個屬性,需要運動和碰撞的對象,要實現該接口抽象出來的各個屬性

4、寫個抽象類(Sprite),在其內封裝好物理引擎。各種類型的物理對象的模擬器,都需要重寫該抽象類的兩個方法GetForce()和GetTorque()即可,其分別要返回對象在當前時刻所受到的牽引力和力矩

5、寫個 IFire 接口,所有可開火的對象都要實現該接口

6、寫個控件 PhysicsBox,用于包裝 IPhysicsControl,從而將模擬器計算出的運動和碰撞結果呈現到界面上

關鍵代碼Sprite.cs(Sprite 模擬器的基類)

  1. using System;  
  2. using System.Net;  
  3. using System.Windows;  
  4. using System.Windows.Controls;  
  5. using System.Windows.Documents;  
  6. using System.Windows.Ink;  
  7. using System.Windows.Input;  
  8. using System.Windows.Media;  
  9. using System.Windows.Media.Animation;  
  10. using System.Windows.Shapes;  
  11.  
  12. using FarseerGames.FarseerPhysics;  
  13. using FarseerGames.FarseerPhysics.Mathematics;  
  14. using FarseerGames.FarseerPhysics.Dynamics;  
  15. using FarseerGames.FarseerPhysics.Collisions;  
  16.  
  17. namespace YYArena.Core  
  18. {  
  19.     /**//// <summary> 
  20.     /// Sprite 基類  
  21.     /// </summary> 
  22.     public abstract class Sprite  
  23.     {  
  24.         private PhysicsSimulator _physicsSimulator;  
  25.  
  26.         protected PhysicsBox playerBox;  
  27.         protected Geom playerGeometry;  
  28.  
  29.         /**//// <summary> 
  30.         /// 構造函數  
  31.         /// </summary> 
  32.         /// <param name="physicsSimulator">PhysicsSimulator</param> 
  33.         /// <param name="physicsControl">IPhysicsControl</param> 
  34.         /// <param name="position">初始位置</param> 
  35.         /// <param name="angle">初始轉角</param> 
  36.         /// <param name="originalVelocity">初始速度</param> 
  37.         public Sprite(PhysicsSimulator physicsSimulator,  
  38.             IPhysicsControl physicsControl, Vector2 position, float angle, float originalVelocity)  
  39.         {  
  40.             _physicsSimulator = physicsSimulator;  
  41.  
  42.             playerBox = new PhysicsBox(physicsControl);  
  43.             playerBox.Body.Position = position;  
  44.             playerBox.Body.Rotation = (float)Helper.Angle2Radian(angle);  
  45.             playerBox.Body.LinearVelocity = Helper.Convert2Vector(originalVelocity, (float)Helper.Angle2Radian(angle));  
  46.  
  47.             // Body 和 Geom 的 Tag 保存為 Sprite,方便引用  
  48.             playerBox.Body.Tag = this;  
  49.             playerBox.Geom.Tag = this;  
  50.  
  51.             playerBox.Update();  
  52.         }  
  53.  
  54.         /**//// <summary> 
  55.         /// 即時計算力和力矩  
  56.         /// </summary> 
  57.         void CompositionTarget_Rendering(object sender, EventArgs e)  
  58.         {  
  59.             if (Enabled)  
  60.             {  
  61.                 var force = GetForce();  
  62.                 var torque = GetTorque();  
  63.  
  64.                 playerBox.Body.ApplyForce(force);  
  65.                 playerBox.Body.ApplyTorque(torque);  
  66.  
  67.                 playerBox.Update();  
  68.             }  
  69.         }  
  70.  
  71.         /**//// <summary> 
  72.         /// 返回 Sprite 當前受的力  
  73.         /// </summary> 
  74.         protected abstract Vector2 GetForce();  
  75.         /**//// <summary> 
  76.         /// 返回 Sprite 當前受的力矩  
  77.         /// </summary> 
  78.         protected abstract float GetTorque();  
  79.  
  80.         public PhysicsBox PhysicsBox  
  81.         {  
  82.             get { return playerBox; }  
  83.         }  
  84.  
  85.         private bool _enabled = false;  
  86.         /**//// <summary> 
  87.         /// 是否啟用此 Sprite  
  88.         /// </summary> 
  89.         public bool Enabled  
  90.         {  
  91.             get { return _enabled; }  
  92.             set  
  93.             {   
  94.                 _enabled = value;  
  95.  
  96.                 if (value)  
  97.                 {  
  98.                     CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);  
  99.  
  100.                     _physicsSimulator.Add(playerBox.Body);  
  101.                     _physicsSimulator.Add(playerBox.Geom);  
  102.                 }  
  103.                 else  
  104.                 {  
  105.                     CompositionTarget.Rendering -new EventHandler(CompositionTarget_Rendering);  
  106.  
  107.                     GC.SuppressFinalize(this);  
  108.                     _physicsSimulator.Remove(playerBox.Body);  
  109.                     _physicsSimulator.Remove(playerBox.Geom);  
  110.                 }  
  111.             }  
  112.         }  
  113.     }  

#p#

PlayerSprite.cs(玩家 Sprite 模擬器)

  1. using System;  
  2. using System.Net;  
  3. using System.Windows;  
  4. using System.Windows.Controls;  
  5. using System.Windows.Documents;  
  6. using System.Windows.Ink;  
  7. using System.Windows.Input;  
  8. using System.Windows.Media;  
  9. using System.Windows.Media.Animation;  
  10. using System.Windows.Shapes;  
  11.  
  12. using System.Collections.Generic;  
  13. using FarseerGames.FarseerPhysics.Mathematics;  
  14. using FarseerGames.FarseerPhysics;  
  15. using FarseerGames.FarseerPhysics.Collisions;  
  16.  
  17. namespace YYArena.Core  
  18. {  
  19.     /**//// <summary> 
  20.     /// 玩家 Sprite  
  21.     /// </summary> 
  22.     public class PlayerSprite : Sprite, IFire  
  23.     {  
  24.         private List<Key> _upKeys { get; set; }  
  25.         private List<Key> _downKeys { get; set; }  
  26.         private List<Key> _leftKeys { get; set; }  
  27.         private List<Key> _rightKeys { get; set; }  
  28.         private List<Key> _fireKeys { get; set; }  
  29.  
  30.         private KeyboardHandler _keyHandler;  
  31.         private IPhysicsControl _physicsControl;  
  32.  
  33.         /**//// <summary> 
  34.         /// 構造函數  
  35.         /// </summary> 
  36.         /// <param name="physicsSimulator">PhysicsSimulator</param> 
  37.         /// <param name="physicsControl">IPhysicsControl</param> 
  38.         /// <param name="position">初始位置</param> 
  39.         /// <param name="angle">初始轉角</param> 
  40.         /// <param name="originalVelocity">初始速度</param> 
  41.         /// <param name="keyboardHandler">KeyboardHandler</param> 
  42.         /// <param name="up">操作玩家向前移動的按鍵集合</param> 
  43.         /// <param name="down">操作玩家向后移動的按鍵集合</param> 
  44.         /// <param name="left">操作玩家向左轉動的按鍵集合</param> 
  45.         /// <param name="right">操作玩家向右轉動的按鍵集合</param> 
  46.         /// <param name="fire">操作玩家開火的按鍵集合</param> 
  47.         public PlayerSprite(PhysicsSimulator physicsSimulator,  
  48.             IPhysicsControl physicsControl, Vector2 position, float angle, float originalVelocity,  
  49.             KeyboardHandler keyboardHandler,  
  50.             List<Key> up, List<Key> down, List<Key> left, List<Key> right, List<Key> fire)  
  51.             : base(physicsSimulator, physicsControl, position, angle, originalVelocity)  
  52.         {  
  53.             PrevFireDateTime = DateTime.MinValue;  
  54.             MinFireInterval = 500d;  
  55.  
  56.             _upKeys = up;  
  57.             _downKeys = down;  
  58.             _leftKeys = left;  
  59.             _rightKeys = right;  
  60.             _fireKeys = fire;  
  61.  
  62.             _keyHandler = keyboardHandler;  
  63.             _physicsControl = physicsControl;  
  64.  
  65.             CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);  
  66.         }  
  67.  
  68.         void CompositionTarget_Rendering(object sender, EventArgs e)  
  69.         {  
  70.             if (Enabled)  
  71.             {  
  72.                 // 如果按了開火鍵,是否可開火  
  73.                 if (_keyHandler.AnyKeyPressed(_fireKeys) && (DateTime.Now - PrevFireDateTime).TotalMilliseconds > MinFireInterval)  
  74.                 {  
  75.                     PrevFireDateTime = DateTime.Now;  
  76.                     if (Fire != null)  
  77.                         Fire(this, EventArgs.Empty);  
  78.                 }  
  79.             }  
  80.         }  
  81.  
  82.         public DateTime PrevFireDateTime { get; set; }  
  83.  
  84.         public double MinFireInterval { get; set; }  
  85.  
  86.         public event EventHandler<EventArgs> Fire;  
  87.  
  88.         protected override Vector2 GetForce()  
  89.         {  
  90.             Vector2 force = Vector2.Zero;  
  91.  
  92.             if (_keyHandler.AnyKeyPressed(_upKeys))  
  93.                 force += Helper.Convert2Vector(_physicsControl.ForceAmount, playerBox.Body.Rotation);  
  94.             if (_keyHandler.AnyKeyPressed(_downKeys))  
  95.                 force += Helper.Convert2Vector(_physicsControl.ForceAmount, playerBox.Body.Rotation - Helper.Angle2Radian(180));  
  96.  
  97.             // 最大線性速度限制  
  98.             if (playerBox.Body.LinearVelocity.Length() > _physicsControl.MaxLinearVelocity)  
  99.                 force = Vector2.Zero;  
  100.  
  101.             return force;  
  102.         }  
  103.  
  104.         protected override float GetTorque()  
  105.         {  
  106.             float torque = 0;  
  107.  
  108.             if (_keyHandler.AnyKeyPressed(_leftKeys))  
  109.                 torque -_physicsControl.TorqueAmount;  
  110.             if (_keyHandler.AnyKeyPressed(_rightKeys))  
  111.                 torque += _physicsControl.TorqueAmount;  
  112.  
  113.             // 用于修正 RotationalDragCoefficient (在沒有任何 Torque 的情況下,如果轉速小于 1.3 則設其為 0)  
  114.             // 如果不做此修正的話,轉速小于 1.3 后還會轉好長時間  
  115.             if (!_keyHandler.AnyKeyPressed(_leftKeys) && !_keyHandler.AnyKeyPressed(_rightKeys) && Math.Abs(playerBox.Body.AngularVelocity) < 1.3)  
  116.                 playerBox.Body.AngularVelocity = 0;  
  117.  
  118.             // 最大轉速限制  
  119.             if (Math.Abs(playerBox.Body.AngularVelocity) > _physicsControl.MaxAngularVelocity)  
  120.                 torque = 0;  
  121.  
  122.             return torque;  
  123.         }  
  124.     }  

#p#

AISprite.cs(敵軍 Sprite 模擬器)

  1. using System;  
  2. using System.Net;  
  3. using System.Windows;  
  4. using System.Windows.Controls;  
  5. using System.Windows.Documents;  
  6. using System.Windows.Ink;  
  7. using System.Windows.Input;  
  8. using System.Windows.Media;  
  9. using System.Windows.Media.Animation;  
  10. using System.Windows.Shapes;  
  11.  
  12. using System.Collections.Generic;  
  13. using FarseerGames.FarseerPhysics.Mathematics;  
  14.  
  15. using FarseerGames.FarseerPhysics;  
  16. using FarseerGames.FarseerPhysics.Collisions;  
  17. using FarseerGames.FarseerPhysics.Dynamics;  
  18.  
  19. namespace YYArena.Core  
  20. {  
  21.     /**//// <summary> 
  22.     /// 敵軍 Sprite  
  23.     /// </summary> 
  24.     public class AISprite : Sprite, IFire  
  25.     {  
  26.         private Sprite _attackTarget;  
  27.         private int _aiLevel;  
  28.         private IPhysicsControl _physicsControl;  
  29.  
  30.         /**//// <summary> 
  31.         /// 構造函數  
  32.         /// </summary> 
  33.         /// <param name="physicsSimulator">PhysicsSimulator</param> 
  34.         /// <param name="physicsControl">IPhysicsControl</param> 
  35.         /// <param name="position">初始位置</param> 
  36.         /// <param name="angle">初始轉角</param> 
  37.         /// <param name="originalVelocity">初始速度</param> 
  38.         /// <param name="attackTarget">攻擊目標</param> 
  39.         /// <param name="aiLevel">ai等級</param> 
  40.         public AISprite(PhysicsSimulator physicsSimulator,  
  41.             IPhysicsControl physicsControl, Vector2 position, float angle, float originalVelocity, Sprite attackTarget, int aiLevel)  
  42.             : base(physicsSimulator, physicsControl, position, angle, originalVelocity)  
  43.         {  
  44.             // 上次開火時間  
  45.             PrevFireDateTime = DateTime.Now.AddSeconds(3);  
  46.             // 最小開火間隔  
  47.             MinFireInterval = 3000d;  
  48.  
  49.             _attackTarget = attackTarget;  
  50.             _aiLevel = aiLevel;  
  51.             _physicsControl = physicsControl;  
  52.  
  53.             InitAI();  
  54.  
  55.             CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);  
  56.         }  
  57.  
  58.         private void InitAI()  
  59.         {  
  60.             // 根據 ai 等級設置最小開火間隔  
  61.             double fireCoefficient = 1 + 30 / _aiLevel;  
  62.             MinFireInterval = Helper.GenerateRandom((int)MinFireInterval, (int)(fireCoefficient * MinFireInterval));  
  63.         }  
  64.  
  65.         void CompositionTarget_Rendering(object sender, EventArgs e)  
  66.         {  
  67.             if (Enabled && AttackTarget.Enabled)  
  68.             {  
  69.                 // 是否開火  
  70.                 if ((DateTime.Now - PrevFireDateTime).TotalMilliseconds > MinFireInterval)  
  71.                 {  
  72.                     PrevFireDateTime = DateTime.Now;  
  73.  
  74.                     if (Fire != null)  
  75.                         Fire(this, EventArgs.Empty);  
  76.                 }  
  77.             }  
  78.         }  
  79.  
  80.         public DateTime PrevFireDateTime { get; set; }  
  81.  
  82.         public double MinFireInterval { get; set; }  
  83.  
  84.         public event EventHandler<EventArgs> Fire;  
  85.  
  86.  
  87.         public Sprite AttackTarget  
  88.         {  
  89.             get { return _attackTarget; }  
  90.             set { _attackTarget = value; }  
  91.         }  
  92.  
  93.         protected override Vector2 GetForce()  
  94.         {  
  95.             Vector2 force = Vector2.Zero;  
  96.  
  97.             if (!_attackTarget.Enabled)  
  98.                 return force;  
  99.  
  100.             force += Helper.Convert2Vector(_physicsControl.ForceAmount, playerBox.Body.Rotation);  
  101.  
  102.             // 根據 ai 等級做最大線性速度限制  
  103.             if (playerBox.Body.LinearVelocity.Length() > _physicsControl.MaxLinearVelocity * Helper.GenerateRandom(50, 200) / 1000)  
  104.                 force = Vector2.Zero;  
  105.  
  106.             return force;  
  107.         }  
  108.  
  109.         protected override float GetTorque()  
  110.         {  
  111.             float torque = 0f;  
  112.  
  113.             if (!_attackTarget.Enabled)  
  114.                 return torque;  
  115.  
  116.             // 按某個方向旋轉,原則是以最小的旋轉角度對準目標  
  117.             Vector2 relativePosition = _attackTarget.PhysicsBox.Body.Position - playerBox.Body.Position;  
  118.             double targetRotation = Helper.Convert2Rotation(relativePosition);  
  119.             double currentRotation = playerBox.Body.Rotation;  
  120.             double relativeAngle = Helper.Radian2Angle(targetRotation - currentRotation);  
  121.             if (relativeAngle < 0)  
  122.                 relativeAngle += 360;  
  123.  
  124.             if (relativeAngle > 1)  
  125.             {  
  126.                 if (relativeAngle < 180 && relativeAngle > 0)  
  127.                     torque += _physicsControl.TorqueAmount;  
  128.                 else if (relativeAngle > 180 && relativeAngle < 360)  
  129.                     torque -_physicsControl.TorqueAmount;  
  130.             }  
  131.             else  
  132.             {  
  133.                 playerBox.Body.AngularVelocity = 0;  
  134.             }  
  135.  
  136.  
  137.             // 最大轉速限制  
  138.             if (Math.Abs(playerBox.Body.AngularVelocity) > _physicsControl.MaxAngularVelocity)  
  139.                 torque = 0;  
  140.              
  141.             return torque;  
  142.         }  
  143.     }  

[源碼下載]

原文鏈接:http://www.cnblogs.com/webabcd/archive/2009/06/22/1508042.html

責任編輯:張偉 來源: webabcd的博客
相關推薦

2024-09-29 14:33:30

數據飛輪數據中臺數字化轉型

2013-09-12 11:17:02

2024-05-31 14:23:15

2014-10-31 15:43:02

華為智慧

2025-02-18 15:09:07

2012-06-05 14:42:57

Silverlight

2022-04-12 18:35:03

元宇宙

2013-03-22 14:08:14

智能手表IT巨頭競技場

2025-06-06 14:23:48

谷歌模型AI

2025-02-17 12:24:43

2025-07-03 14:57:51

DeepSeek模型AI

2024-05-20 15:25:47

2025-04-08 08:50:00

AI模型測試

2024-11-21 12:09:26

2024-06-20 14:04:17

2024-04-22 08:40:00

LLM模型開源

2025-08-25 09:07:00

2025-02-28 09:00:00

2025-03-05 09:32:00

2025-04-14 09:06:00

點贊
收藏

51CTO技術棧公眾號

欧美国产乱子伦| 亚洲午夜91| 欧美肥胖老妇做爰| 男女激烈动态图| 色窝窝无码一区二区三区成人网站| 一区福利视频| 中文字幕精品一区久久久久 | 亚洲第九十七页| 一区在线影院| 亚洲自拍偷拍av| 日韩av电影免费在线| 国内精品国产成人国产三级| av成人黄色| 久久精品国产精品亚洲| 丰满少妇一区二区三区| 国产激情综合| 国产系列在线观看| 久久深夜福利| 久久69精品久久久久久国产越南| 给我看免费高清在线观看| 综合久草视频| 日韩欧美在线国产| 肉大捧一出免费观看网站在线播放| 手机亚洲第一页| 国产自产2019最新不卡| 国产成人精品日本亚洲| 免费在线观看黄视频| 日韩毛片视频| 亚洲人成电影在线播放| 欧亚乱熟女一区二区在线| 亚洲免费资源| 欧美性xxxxxxxx| 每日在线更新av| 日本高清在线观看| 中文字幕成人网| 久久99精品久久久久久三级| 午夜美女福利视频| 久久精品国产精品青草| 国产精彩精品视频| 国产成人精品网| 色欲av永久无码精品无码蜜桃| 美女毛片在线看| 看片一区二区| 婷婷综合另类小说色区| 少妇久久久久久被弄到高潮| 2017亚洲天堂1024| 久久精品人人爽人人爽| 久久99久久99精品蜜柚传媒| 精品国产免费无码久久久| 免费高清视频精品| 国产精品电影在线观看| 六月丁香在线视频| 9国产精品视频| 国内精品久久久久久久久| 精品无码一区二区三区蜜臀 | 欧美一区二区三区爱爱| 奇米视频888| 成人精品高清在线视频| 91成人免费在线| 蜜臀av午夜一区二区三区| 亚洲av无码不卡| 在线免费看黄网站| 国产三级三级三级精品8ⅰ区| 免费中文日韩| 你懂的在线视频| 国产日韩精品一区| 色综合久久久久久久久五月| 岛国在线大片| 国产精品久99| 国产在线拍揄自揄拍无码| 超碰在线最新| 亚洲一区二区精品久久av| 亚洲国产精品成人天堂| 中国字幕a在线看韩国电影| 色综合天天综合给合国产| 五月天婷婷激情视频| 国产亚洲精彩久久| 日韩欧美成人一区| 内射中出日韩无国产剧情| 国产成人一区二区三区影院| 日韩在线中文字| 欧美精品一区二区蜜桃| 亚洲永久免费| 国产在线观看精品| 亚洲黄色片视频| 久久亚洲一区二区三区明星换脸| 天堂社区 天堂综合网 天堂资源最新版 | 99热这里只有精品在线| 99精品美女| 欧美日韩国产二区| www.伊人久久| 美女mm1313爽爽久久久蜜臀| 114国产精品久久免费观看| 五月天福利视频| 国产精品久久久久四虎| 青草视频在线观看视频| 久久久成人av毛片免费观看| 欧美一区二区三区系列电影| 中文文字幕文字幕高清| 久久精品国产68国产精品亚洲| 欧美另类交人妖| 日韩在线 中文字幕| 久草中文综合在线| 蜜桃成人在线| 1区2区在线观看| 色综合 综合色| 91精品人妻一区二区三区蜜桃2| 日韩av系列| 久久人人爽人人爽爽久久| 97免费在线观看视频| 另类欧美日韩国产在线| 精品产品国产在线不卡| 国产精品免费在线视频| 免费av在线网站| 一区二区三区视频在线观看| 欧美精品色婷婷五月综合| www久久久| 亚洲欧美日韩天堂一区二区| 日本少妇高清视频| 日本系列欧美系列| 精品国产综合久久| 国产黄色在线观看| 欧美在线观看禁18| 性久久久久久久久久| 中文字幕一区二区三区在线视频| 国产成人精品日本亚洲| 天天干天天做天天操| 亚洲欧美日韩国产另类专区| 情侣黄网站免费看| 免费福利视频一区| 久久久爽爽爽美女图片| 国产日韩精品suv| 亚洲国产精品激情在线观看| 欧美国产激情视频| 国产一区二区在线视频聊天| 激情亚洲另类图片区小说区| 久久精品国产电影| 啪啪小视频网站| 91麻豆产精品久久久久久| 青青草综合在线| 中文幕av一区二区三区佐山爱| 国产亚洲欧洲在线| 99久热在线精品996热是什么| 国产一区亚洲一区| 免费看av软件| 四虎影视精品永久在线观看| 中文字幕亚洲一区二区三区| 欧美高清69hd| 国产精品网站在线| 成年网站在线播放| 欧美丝袜激情| 国产精品久久久久999| 国产人成在线观看| 色国产综合视频| 亚洲精品色午夜无码专区日韩| 久久国产欧美| 日韩欧美精品一区二区| 欧美影视资讯| 久久精品人人| 日韩中文字幕国产| 一级爱爱免费视频| 中文字幕一区二区三区不卡| 美女在线视频一区二区| 999久久久91| 91福利视频导航| 激情影院在线| 日韩av一区在线观看| www.久久久久久久| 国产精品美日韩| 免费成人黄色大片| 黄色成人在线网站| 久久99精品国产一区二区三区| 免费成人直播| 最近2019年手机中文字幕| 97精品人妻一区二区三区香蕉| 国产中文一区二区三区| 国产一区二区三区小说| 婷婷综合电影| 国产欧美日韩视频| 欧美videossex另类| 日韩精品高清在线观看| 黄色污污网站在线观看| 在线观看精品一区二区三区| 亚洲成人www| 国产熟妇久久777777| 麻豆国产91在线播放| 免费看黄色a级片| 欧美大奶一区二区| 国产精品久久久久久久久男| 在线欧美三级| 国产视频在线一区二区| 一本色道久久综合亚洲| 樱花草国产18久久久久| 日韩av一二区| 韩国女主播成人在线观看| 日韩精品视频在线观看视频| 国产一区二区欧美| 97se亚洲综合| 亚洲成人一区在线观看| 日韩小视频网址| 色偷偷在线观看| 欧美日韩一区不卡| 国产性70yerg老太| 国产精品久久福利| 精品无码在线视频| 国产麻豆精品久久一二三| 1024av视频| 成人免费观看在线视频| 欧美破处大片在线视频| 国产一区二区久久久| 成人在线免费av| 海角国产乱辈乱精品视频| av在线免费观看网| 亚洲激情视频网| 国产三级第一页| 91国产成人在线| 国产亚洲自拍av| 国产精品久久毛片av大全日韩| 手机免费看av片| 国产自产高清不卡| 日日摸天天爽天天爽视频| 精品成人久久| 中国老女人av| 久久理论电影| 日韩欧美一区二区三区久久婷婷| jizz性欧美23| 亚洲综合大片69999| av成人在线看| 国产99视频在线观看| 大菠萝精品导航| 欧美大片第1页| 国产精品实拍| 亚州成人在线电影| 91嫩草免费看| 在线天堂中文资源最新版| 欧美乱妇40p| 黄色大片在线播放| 日韩在线视频免费观看高清中文| 黄色大片在线免费观看| 国产丝袜视频一区| 桃花色综合影院| 日韩av中文字幕在线免费观看| 丰满人妻熟女aⅴ一区| 91精品国产福利| 国产老女人乱淫免费| 69成人精品免费视频| 一本色道久久综合熟妇| 欧美丰满美乳xxx高潮www| 在线观看亚洲国产| 欧美日韩精品欧美日韩精品一综合| 国内av在线播放| 91久久精品一区二区| 黄色片视频免费| 色综合久久久久久久久久久| 精品国产一区二区三区四| 欧美日韩免费看| 久久精品无码av| 在线视频中文字幕一区二区| 乱子伦一区二区三区| 欧美在线一二三| 在线观看中文字幕码| 中文字幕一区二区三区日韩精品| 成人福利在线视频| 99视频这里有精品| 97se国产在线视频| 老司机精品视频在线播放| 精品一区二区日本| 国产伦精品一区二区三区视频| 日本一区不卡| 99久久精品国产亚洲精品| 日韩视频在线免费播放| 国内成人在线| 午夜精品久久久内射近拍高清| 日韩成人一区二区三区在线观看| 中文字幕视频在线免费观看| 久久超碰97中文字幕| 日本成人在线免费观看| a在线欧美一区| 国产成人无码精品久久二区三| 国产精品拍天天在线| 久久出品必属精品| 99久久婷婷国产| 国产激情av在线| 亚洲免费成人av| 99热只有这里有精品| 欧美视频日韩视频| 成人毛片视频免费看| 亚洲视频一区二区三区| 二区三区在线观看| 97视频网站入口| 国产精品99| 国产三区精品| 成人高清电影网站| 日韩精品视频在线观看视频 | 久久艹在线视频| 僵尸再翻生在线观看免费国语| 国产精品欧美亚洲777777| aaaa黄色片| 成人动漫一区二区三区| 亚洲欧美日韩第一页| 亚洲午夜激情网站| 小泽玛利亚一区二区三区视频| 日韩视频一区二区在线观看| 免费成人av电影| 欧美精品在线看| 成人在线视频播放| 国产精品国产精品| 欧美超碰在线| 免费黄色福利视频| 国产成人小视频| 国产一级淫片久久久片a级| 亚洲午夜av在线| 一区二区三区免费观看视频| 亚洲精品国产suv| 先锋成人av| 成人免费在线视频网址| 伊人久久大香线蕉无限次| 美女黄色免费看| 美美哒免费高清在线观看视频一区二区 | 精品在线观看一区二区| 亚洲v在线看| 亚洲无吗一区二区三区| 91免费在线视频观看| 欧美精品乱码视频一二专区| 欧美日本在线播放| 成人亚洲性情网站www在线观看| 麻豆久久精品| 国产一区视频免费观看| 波多野结衣在线aⅴ中文字幕不卡| 日韩在线不卡av| 欧美在线视频日韩| 男生女生差差差的视频在线观看| 久久青草福利网站| heyzo欧美激情| 日韩精品福利片午夜免费观看| 毛片一区二区三区| 高清国产在线观看| 日本高清不卡aⅴ免费网站| 偷拍自拍在线| 欧美中文字幕在线观看| 欧美一区 二区| 9久久9毛片又大又硬又粗| 国产福利不卡视频| 欧美日韩在线观看成人| 日韩一区和二区| 综合久久2o19| 69174成人网| 91精品天堂福利在线观看| 国产三级三级看三级| 国产精品亲子乱子伦xxxx裸| 又骚又黄的视频| www日韩欧美| 国产一区 二区| 最新中文字幕久久| 国产精品99久久久久久久女警| 极品魔鬼身材女神啪啪精品| 56国语精品自产拍在线观看| av中文在线播放| 国产成人在线网站| 欧美日韩三级在线观看| 欧美不卡视频一区| 123区在线| 欧美日韩高清在线一区| 日韩不卡手机在线v区| 婷婷综合在线视频| 欧美一区二区私人影院日本| 99自拍视频在线观看| av日韩中文字幕| 99精品国产在热久久| 黄免费在线观看| 欧美日韩精品一区二区在线播放| 黄色在线播放网站| 欧美高清激情视频| 精品欧美午夜寂寞影院| aa免费在线观看| 国产精品午夜在线观看| 国产色在线视频| 久久久久久久爱| 欧美**vk| 天堂在线中文在线| 午夜精品一区二区三区电影天堂 | 日韩视频网站在线观看| 制服诱惑一区| 国产99久久久精品| 69av视频在线观看| 欧美精品在线看| 午夜精品影视国产一区在线麻豆| 四季av一区二区| 一区二区三区波多野结衣在线观看 | 成人午夜福利一区二区| 在线日韩av片| 成人毛片av在线| 久久久久久精| 久久超级碰视频| 精品一区二区三区人妻| 亚洲图片欧美午夜| aiai久久| 一女二男3p波多野结衣| 亚洲一区二区精品视频| 香蕉视频免费在线播放|