精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久影院午夜精品| 国产精品成人久久久| 北条麻妃一区二区三区在线| 精品毛片三在线观看| 无码免费一区二区三区免费播放| 国产精品一区二区免费视频| 精品二区久久| 在线视频精品一| www.欧美com| 亚洲伦理影院| 亚洲韩国一区二区三区| 特级西西444www大精品视频| 隣の若妻さん波多野结衣| 日韩电影在线观看电影| 欧美激情亚洲视频| 国产18无套直看片| 久久激情av| 在线综合视频播放| 国产日韩一区二区在线观看| 91麻豆国产福利在线观看宅福利| 91麻豆成人久久精品二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女| www亚洲视频| 国产一区二区三区四区老人| 在线不卡国产精品| 中国极品少妇videossexhd| 2019中文亚洲字幕| 在线观看视频欧美| 国产乱子伦农村叉叉叉| 呦呦在线视频| 亚洲视频 欧洲视频| 日本一区免费| 色视频在线看| 99久久777色| 国产福利久久| 精品国产九九九| 黄一区二区三区| 国产精品久久国产精品99gif| 黄色小视频在线免费看| 欧美成熟视频| 久久中文字幕视频| 91狠狠综合久久久| 久久亚洲在线| 色七七影院综合| 美国黄色特级片| 精品一区二区三| 一区二区欧美久久| 精品无码一区二区三区| 天堂99x99es久久精品免费| 日韩女优视频免费观看| 香蕉视频xxxx| 日韩在线网址| 精品国产一区二区三区忘忧草| 男女污污视频网站| 精品国产三区在线| 日韩欧美aaaaaa| 91精品又粗又猛又爽| 97久久综合精品久久久综合| 欧美成人一区二区三区在线观看| 久久久久亚洲av片无码v| 四虎国产精品免费久久5151| 88在线观看91蜜桃国自产| 亚洲天堂2018av| 电影一区二区三区久久免费观看| 91精品国产一区二区| 欧美性猛交乱大交| jizz性欧美23| 亚洲变态欧美另类捆绑| 国产福利在线观看视频| 久久99国产成人小视频| 国产亚洲视频在线| 亚洲人与黑人屁股眼交| 你懂的成人av| 性欧美暴力猛交69hd| 亚洲欧美自拍视频| 免费视频一区二区| 亚洲最大的网站| 五月激情婷婷网| 久久精品一区蜜桃臀影院| 亚洲一区在线直播| 欧美xxxx视频| 在线视频你懂得一区| 玖玖爱视频在线| 成人看片黄a免费看视频| 亚洲精品资源美女情侣酒店| 成人性生交大片免费看无遮挡aⅴ| 97久久视频| 韩国三级日本三级少妇99| 97人妻一区二区精品视频| 精品一区二区三区香蕉蜜桃 | 国产精品一级二级三级| 国产伦精品一区二区三区在线| 青梅竹马是消防员在线| 亚洲天天做日日做天天谢日日欢| 91精品国产91久久久久麻豆 主演| 免费v片在线观看| 欧美日韩的一区二区| 久久久男人的天堂| 精品一区二区三区在线| 欧美日韩福利在线观看| www.欧美色| 国产成人精品一区二区三区网站观看| 免费成人av网站| 超碰在线最新| 色妹子一区二区| 下面一进一出好爽视频| 国产日产一区| 国内精品久久久久久影视8| 亚洲天堂一二三| 99精品久久久久久| www国产免费| 欧美日韩在线精品一区二区三区激情综合 | 黄色精品视频| 亚洲国产97在线精品一区| 激情无码人妻又粗又大| 国产精品亚洲综合久久| 亚洲va欧美va在线观看| 东凛在线观看| 一本色道久久综合亚洲精品按摩| 四虎1515hh.com| 成人在线免费小视频| 欧美性资源免费| 欧美视频久久久| 亚洲日本va午夜在线影院| 成人性生生活性生交12| 亚洲精品播放| 午夜精品久久久久久久99热浪潮| 国产丰满美女做爰| 综合久久久久综合| 激情 小说 亚洲 图片: 伦| 欧美精品中文| 97国产一区二区精品久久呦| 精品二区在线观看| 亚洲摸摸操操av| 亚洲天堂av一区二区| 波多野结衣一区| 国产精品h在线观看| 五月婷婷六月丁香| 亚洲成av人在线观看| 国产一卡二卡三卡四卡| 国产精品大片| 国产欧美日韩一区二区三区| 成人超碰在线| 亚洲国产精品va在线观看黑人| 国产在线拍揄自揄拍| 成人中文字幕在线| 日本a在线免费观看| 国产精品网站在线看| 午夜精品一区二区三区视频免费看 | 国产一区二区三区久久| 国产欧美综合精品一区二区| av影片在线| 日韩成人在线视频| 国产www在线| 久久精品亚洲国产奇米99| 日韩精品免费播放| 欧美三级美国一级| 国产欧美精品一区二区| 久cao在线| 日韩视频一区二区三区| 国产精品成人aaaa在线| 97久久久精品综合88久久| 欧美黄色免费影院| 成人免费在线观看av| 成人黄色免费看| 18网站在线观看| 日韩精品日韩在线观看| 无码人妻丰满熟妇精品 | 亚洲第一导航| 亚洲福利影视| 欧美激情精品久久久久久免费印度| 亚洲精品无遮挡| 欧美日韩免费一区| 五月婷婷六月香| 国产激情偷乱视频一区二区三区| 成人一区二区av| 秋霞综合在线视频| 国产精品久久视频| 手机在线免费看av| 亚洲欧美日本另类| 又骚又黄的视频| 亚洲综合色在线| 蜜桃av乱码一区二区三区| 久久91精品国产91久久小草| 精品国偷自产一区二区三区| 教室别恋欧美无删减版| 亚洲综合中文字幕在线| 人人草在线视频| 久久久精品久久久久| 好吊视频一区二区三区| 欧美系列在线观看| 国产精品第一页在线观看| 欧美激情一区二区三区| 少妇极品熟妇人妻无码| 日韩精品一二三四| 久久久久久久9| 日韩国产在线| 国产日韩欧美一区二区| 九七影院97影院理论片久久| 性欧美视频videos6一9| 成人影院在线看| 亚洲天堂视频在线观看| 亚洲av无码专区在线| 欧美性大战久久| 五月婷婷激情网| 亚洲卡通动漫在线| 国产精品视频在| 91理论电影在线观看| 国内自拍偷拍视频| 狠狠色狠狠色综合系列| 午夜精品久久久内射近拍高清| 欧美日韩影院| 宅男噜噜99国产精品观看免费| 日韩精品福利一区二区三区| 国产成人亚洲欧美| 国产日韩中文在线中文字幕| 国产精品久久久999| 手机在线理论片| 欧美精品18videos性欧美| 激情影院在线观看| 日韩在线欧美在线| 超碰免费在线| 亚洲网站在线观看| 亚洲人午夜射精精品日韩| 欧美xingq一区二区| 国产成人毛毛毛片| 欧美丰满少妇xxxxx高潮对白| 亚洲精品中文字幕乱码三区91| 亚洲一区国产视频| www.av视频| 亚洲欧美偷拍另类a∨色屁股| www成人啪啪18软件| 国产拍揄自揄精品视频麻豆| 成人免费看aa片| 91香蕉视频黄| www.久久av| 久久伊人中文字幕| 18禁裸乳无遮挡啪啪无码免费| 成人国产亚洲欧美成人综合网| 苍井空张开腿实干12次| 国产99久久久精品| 一起草最新网址| 国产高清精品在线| 成年人看片网站| 懂色av一区二区夜夜嗨| jjzz黄色片| www.一区二区| 亚洲欧美视频在线播放| 91蜜桃视频在线| 免费看污黄网站在线观看| 久久女同精品一区二区| 亚洲av无码一区二区三区人| 国产精品丝袜久久久久久app| 一级二级黄色片| 亚洲免费在线观看| 九九九在线视频| 五月天亚洲精品| youjizz在线视频| 欧美综合天天夜夜久久| 亚洲图片中文字幕| 制服丝袜亚洲色图| 亚洲av综合色区无码一区爱av| 精品国产精品网麻豆系列 | 97久久中文字幕| 99久re热视频这里只有精品6| a看欧美黄色女同性恋| 黄色91av| 精品久久影视| 免费在线精品视频| 影音先锋久久| 精品免费国产一区二区| 精品制服美女丁香| aaa黄色大片| 国产亚洲精品aa| 天海翼在线视频| 午夜精品影院在线观看| 波多野结衣黄色| 日韩视频123| 日本成人一区二区三区| 北条麻妃在线一区二区| 高端美女服务在线视频播放| 国产精品盗摄久久久| 欧美成人一级| 欧美日韩在线观看一区二区三区| 久久精品不卡| 国产综合av在线| 精品夜夜嗨av一区二区三区| 日本一卡二卡在线| 中文一区二区在线观看| 精品人妻在线播放| 欧美在线免费观看亚洲| 高清一区二区三区四区| 国产一区二区激情| 爱啪视频在线观看视频免费| 国产欧美在线看| 亚洲自拍电影| www.欧美黄色| 美女一区二区三区在线观看| a级片在线观看视频| 国产精品久久久久影院色老大 | 校园激情久久| 精品人妻二区中文字幕| 亚洲国产精品精华液ab| 日韩欧美国产亚洲| 91精品国产综合久久小美女| 可以免费看污视频的网站在线| 欧美俄罗斯性视频| 欧美三级电影网址| 欧美一区二区三区精美影视| 激情久久久久久| 中文字幕国产高清| 国产喷白浆一区二区三区| 可以免费在线观看的av| 日韩精品一区二区三区中文精品| jyzzz在线观看视频| 欧美性做爰毛片| 国产色噜噜噜91在线精品| 色爽爽爽爽爽爽爽爽| 男女男精品视频| 少妇特黄一区二区三区| 亚洲午夜久久久久久久久电影院| 91麻豆一区二区| 在线播放国产一区二区三区| 日韩免费电影| 美女视频久久| 在线综合欧美| 538国产视频| 精品高清美女精品国产区| 国产 欧美 精品| 欧美激情国产精品| 欧美a级大片在线| 国产精品美女在线播放| 久久精品国产免费| 毛片久久久久久| 欧美亚日韩国产aⅴ精品中极品| 久久久久国产精品嫩草影院| 欧美在线视频网站| 羞羞答答一区二区| 青青视频在线播放| 久久久久亚洲综合| 黄色片中文字幕| 亚洲欧洲成视频免费观看| 综合另类专区| 欧美日韩最好看的视频| 久热精品在线| 国产亚洲精品熟女国产成人| 欧美午夜影院一区| 自拍视频在线免费观看| 国产精品亚洲片夜色在线| 日韩欧美精品一区| 久久久久xxxx| 夜夜夜精品看看| 亚州精品国产精品乱码不99按摩| 97视频在线观看网址| 在线看成人短视频| 欧美日韩亚洲自拍| 日韩一区在线免费观看| 99久久精品日本一区二区免费 | 国产91精品露脸国语对白| 久草免费在线视频观看| 亚洲国产精品va在线| 日本高清不卡一区二区三区视频 | 91精彩刺激对白露脸偷拍| 色噜噜狠狠色综合中国| 欧美午夜电影一区二区三区| 99国产视频| 天堂av在线一区| 久久国产高清视频| 亚洲国产精品系列| 亚洲日本在线观看视频| 蜜臀av.com| 91在线观看视频| 国产一区二区三区黄片| 久久久久五月天| 色777狠狠狠综合伊人| 亚洲av毛片在线观看| 精品国产老师黑色丝袜高跟鞋| 国产香蕉视频在线看| 成人国产在线激情| 99伊人成综合| 成人免费视频入口| 亚洲精品在线观看视频| 日本欧美一区| 国产二区视频在线| 中文天堂在线一区| 国产91麻豆视频| 国产精品男女猛烈高潮激情| 欧美日韩亚洲一区二区三区在线| 美女爆乳18禁www久久久久久 | 在线激情免费视频| 国产高清精品一区二区| 日韩成人午夜精品| 精品少妇theporn| 精品国产欧美成人夜夜嗨| 美女一区二区在线观看| 亚洲三级在线观看视频| 岛国av一区二区三区| av网站免费在线观看| 日本免费高清一区二区| 成人av中文字幕|