日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF砖块消除

發(fā)布時(shí)間:2023/12/20 asp.net 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF砖块消除 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

WPF的磚塊消除,基本實(shí)現(xiàn)磚塊消除公共

  • 實(shí)現(xiàn)效果:





  • 使用方式:
    第一步:設(shè)置磚塊數(shù)量
    第二步:點(diǎn)擊刷新界面
    第三步:按住鍵盤的 “A” 或點(diǎn)擊 “啟動(dòng)”按鈕啟動(dòng)游戲
    移動(dòng)方式:在橘黃色區(qū)域按住鼠標(biāo)左鍵即可移動(dòng)擋板,或者移動(dòng)擋板左右坐標(biāo)即可

  • 前臺(tái)代碼:

<Window x:Class="打磚塊.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:打磚塊"mc:Ignorable="d"Title="打磚塊V0.0.1" Height="600" Width="600" MinHeight="600" MinWidth="600" Loaded="Window_Loaded" Closing="Window_Closing" SizeChanged="Window_SizeChanged" ><Window.Resources><RoutedUICommand x:Key="Start_Game" Text="Start game" /></Window.Resources><Window.InputBindings><KeyBinding Key="A" Command="{StaticResource Start_Game}"/></Window.InputBindings><Window.CommandBindings><CommandBinding x:Name="cb_start_game" Command="{StaticResource Start_Game}" CanExecute="cb_start_game_CanExecute" Executed="cb_start_game_Executed"/></Window.CommandBindings><Grid x:Name="gd_min"><Grid.Background><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF3B41CF" Offset="0"/><GradientStop Color="#FFB82274" Offset="0.992"/><GradientStop Color="#FF4A4A4A" Offset="0.229"/><GradientStop Color="#FF7AD65E" Offset="0.562"/></LinearGradientBrush></Grid.Background><Grid.RowDefinitions><RowDefinition Height="80"/><RowDefinition Height="9*"/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="210"/></Grid.ColumnDefinitions><Grid Grid.Row="0" Grid.Column="0"><Grid.RowDefinitions ><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/><ColumnDefinition Width="0.1*"/><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Label Grid.Row="0" Grid.Column="0" Content="磚塊總數(shù):" Foreground="Azure"/><Label Grid.Row="1" Grid.Column="0" Content="已消除總數(shù):" Foreground="Azure"/><Label Grid.Row="2" Grid.Column="0" Content="當(dāng)前用時(shí):" Foreground="Azure"/><Label x:Name="lb_brick_count" Grid.Row="0" Grid.Column="1" Content="-" Foreground="Azure"/><Label x:Name="lb_re_count" Grid.Row="1" Grid.Column="1" Content="-" Foreground="Azure"/><Label x:Name="lb_time" Grid.Row="2" Grid.Column="1" Content="-" Foreground="Azure"/><Label Grid.Row="0" Grid.Column="3" Content="剩余磚塊:" Foreground="Azure"/><Label Grid.Row="1" Grid.Column="3" Content="彈起數(shù):" Foreground="Azure"/><Label Grid.Row="2" Grid.Column="3" Content="-" Foreground="Azure"/><Label x:Name="lb_lost_count" Grid.Row="0" Grid.Column="4" Content="-" Foreground="Azure"/><Label x:Name="lb_run_stpe" Grid.Row="1" Grid.Column="4" Content="-" Foreground="Azure"/><Label Grid.Row="2" Grid.Column="4" Content="-" Foreground="Azure"/></Grid><TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" TextWrapping="Wrap" Text="第①步:設(shè)置磚塊數(shù)量和小球速度&#13;第②步:點(diǎn)擊刷新界面生成磚塊&#13;第③步:點(diǎn)擊啟動(dòng)(或單擊“a”開始)開始消除磚塊&#13;移動(dòng)方式:按住鼠標(biāo)左鍵即可移動(dòng)擋板" Foreground="Red" Grid.ColumnSpan="2" /><Grid Grid.Row="1" Grid.Column="0" Background="BlanchedAlmond" MouseMove="gd_ball_MouseMove"><Grid.RowDefinitions><RowDefinition Height="2*"/><RowDefinition/></Grid.RowDefinitions><Grid Grid.Row="0"><Grid.ColumnDefinitions><ColumnDefinition Width="20"/><ColumnDefinition/><ColumnDefinition Width="20"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="20"/><RowDefinition/></Grid.RowDefinitions><Grid Grid.Row="1" Grid.Column="1" x:Name="gd_table" Background="AliceBlue"/></Grid></Grid><Grid Grid.Row="1" Grid.Column="0" x:Name="gd_ball" Background="{x:Null}" ><Grid.RowDefinitions><RowDefinition/><RowDefinition Height="10"/></Grid.RowDefinitions><Ellipse x:Name="ep_boll" Grid.Row="0" Grid.RowSpan="3" Width="10" Height="10" VerticalAlignment="Bottom" HorizontalAlignment="Center"><Ellipse.Fill><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FFF7642C" Offset="0"/><GradientStop Color="#FF4058A8" Offset="1"/><GradientStop Color="#FFA66147" Offset="0.402"/><GradientStop Color="#FF6E4739" Offset="0.546"/></LinearGradientBrush></Ellipse.Fill></Ellipse><Rectangle Visibility="Collapsed" x:Name="rt_wb" Grid.Row="1" Width="100" Height="10" VerticalAlignment="Bottom" HorizontalAlignment="Center"RadiusY="5" RadiusX="5"><Rectangle.Fill><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF787878" Offset="0"/><GradientStop Color="Black" Offset="1"/></LinearGradientBrush></Rectangle.Fill></Rectangle><Rectangle Grid.Row="1" x:Name="rt_rect" Height="10" Width="100" Fill="#CCCD2C2C"/></Grid><Grid Grid.Row="1" Grid.Column="1"><Grid.RowDefinitions><RowDefinition Height="100"/><RowDefinition/><RowDefinition Height="40"/></Grid.RowDefinitions><StackPanel Grid.Row="0" Orientation="Vertical" Background="Aqua"><Label Content="球坐標(biāo):"/><Label Name="lb_ball_addr" Content="0:0" HorizontalAlignment="Center"/><Label Content="距離:"/><Label Name="lb_leng" Content="-" HorizontalAlignment="Center" /></StackPanel><StackPanel Grid.Row="1" VerticalAlignment="Center"><Label Content="磚塊數(shù)量:"/><Slider Margin="2" Width="50" x:Name="sd_brick_num" MinWidth="150" IsSnapToTickEnabled="True" Minimum="10" Maximum="500" Value="40" Orientation="Horizontal"/><Label Content="{Binding Path=Value,ElementName=sd_brick_num}" HorizontalAlignment="Center" VerticalAlignment="Center"/><Label Content="速度比:"/><Slider Margin="2" Width="50" x:Name="sd_bool_speed" MinWidth="150" IsSnapToTickEnabled="True" Minimum="0" Maximum="50" Value="45" Orientation="Horizontal" ValueChanged="sd_bool_speed_ValueChanged"/><Label Content="{Binding Path=Value,ElementName=sd_bool_speed}" HorizontalAlignment="Center" VerticalAlignment="Center"/><Button x:Name="bt_crt" Margin="3" Height="40" Content="刷新界面" Click="bt_crt_Click"/><Button Content="啟動(dòng)" Margin="3" Height="40" x:Name="bt_start" Click="bt_start_Click"/><Label Content="擋板中心坐標(biāo):"/><Slider Margin="2" Width="50" x:Name="sd_x" MinWidth="150" ValueChanged="sd_x_ValueChanged" IsSnapToTickEnabled="True" Minimum="-200" Maximum="200" Value="0" Orientation="Horizontal"/><Label Content="{Binding Path=Value,ElementName=sd_x}" HorizontalAlignment="Center" VerticalAlignment="Center"/></StackPanel><TextBlock Grid.Row="2" Text="Power By Bilibili-火狐鞥&#13;2021-01-14" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" FontSize="15" Foreground="Gray"/></Grid></Grid> </Window>
  • 后臺(tái)代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Timers; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Threading;namespace 打磚塊 {/// <summary>/// MainWindow.xaml 的交互邏輯/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.ep_boll.RenderTransform=new TranslateTransform();this.rt_rect.RenderTransform=new TranslateTransform();}private void Window_Loaded(object sender, RoutedEventArgs e){timer_init();CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);Max_leng = Math.Sqrt(Math.Pow(rect_info.Width / 2, 2) + Math.Pow(rect_info.Height / 2, 2)) + ball_info.Radius;sd_x.Maximum = gd_ball.ActualWidth / 2;sd_x.Minimum = -gd_ball.ActualWidth / 2;}#region 申明類public struct Ball{public Point Addr; //位置public Point Speed; //運(yùn)行速度public Point Dir; //運(yùn)行方向public int Radius; //球半徑}//public struct Rect//{// public Point Addr; //位置// public double Width;// public double Height;// public int Stat;//}public class Rect{private Point _addr = new Point(0, 0);private double _width = 0;private double _height = 0;private int _stat = 0;private int _index = 0;public Point Addr{set { _addr = value; }get { return _addr; }}public double Width{set { _width = value; }get { return _width; }}public double Height{set { _height = value; }get { return _height; }}public int Stat{set { _stat = value; }get { return _stat; }}public int Index{set { _index = value; }get { return _index; }}}#endregion#region///全局變量private ProcessCount processCount;//統(tǒng)計(jì)運(yùn)行時(shí)間private int brick_run_stpe = 0; //運(yùn)行步數(shù)private int re_brick_count = 0;private Ball ball_info = new Ball() { Addr = new Point(0, -10), Speed = new Point(0, 0), Dir = new Point(0, -1), Radius = 5 };private Rect rect_info = new Rect() { Addr = new Point(0, 0), Height = 10, Width = 100, Stat = 99 };private List<Rect> brick_list = new List<Rect>();//磚塊列表private Point brick_info = new Point(20, 18); //生成磚的大小private int brick_num = 40; //生成磚的數(shù)量private List<int> brick_addr = new List<int>();double Max_leng = 0;#endregion#region 定時(shí)器MillisecondTimer aTimer;private int timer_count=0;void timer_init(){aTimer = new MillisecondTimer();aTimer.Tick += timedo; ;aTimer.Interval = 1; //每秒執(zhí)行processCount = new ProcessCount(0);//aTimer.Start();aTimer.Stop();}private void timedo(object sender, EventArgs e) //定時(shí)中斷{this.Dispatcher.Invoke(new Action(delegate{ball_move();timer_count++;if (timer_count > 1000){timer_count = 0;processCount.ProcessCountUp();lb_time.Content = processCount.GetHour() + ":" + processCount.GetMinute() + ":" + processCount.GetSecond();}}));}#endregion#region //功能函數(shù)[DllImport("kernel32.dll")]private static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);/// <summary>/// 內(nèi)存回收/// </summary>private void ClearMemory(){GC.Collect();GC.WaitForPendingFinalizers();if (Environment.OSVersion.Platform == PlatformID.Win32NT){SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);}}/// <summary>/// 產(chǎn)生指定隨機(jī)數(shù) 且不重復(fù)/// </summary>/// <param name="Number">產(chǎn)生隨機(jī)數(shù)個(gè)數(shù)</param>/// <param name="minNum">最小值</param>/// <param name="maxNum">最大值</param>/// <returns></returns>public List<int> GetRandomArray(int Number, int minNum, int maxNum){int j;int[] b = new int[Number];List<int> buf = new List<int>();Random r = new Random();while (buf.Count < Number){int i = r.Next(minNum, maxNum);int num = 0;for (int k = 0; k < buf.Count; k++) //判斷是否和以前的數(shù)據(jù)重復(fù){if (buf[k] == i) //新生成的數(shù)據(jù)和原來的數(shù)據(jù)重復(fù){num = num + 1;break;}}if (num == 0){//b[j] = i;buf.Add(i);}}//for (j = 0; j < Number; j++)//{// int i = r.Next(minNum, maxNum + 1);// int num = 0;// for (int k = 0; k < j; k++) //判斷是否和以前的數(shù)據(jù)重復(fù)// {// if (b[k] == i) //新生成的數(shù)據(jù)和原來的數(shù)據(jù)重復(fù)// {// num = num + 1;// }// }// if (num == 0)// {// b[j] = i;// }// else// {// j = j - 1;// }//}//Array.Sort(buf);buf.Sort();return buf;}/// <summary>/// WPF控件查找/// </summary>/// <typeparam name="T">空間類型</typeparam>/// <param name="parent">父控件</param>/// <param name="childName">查找空間名稱</param>/// <returns></returns>public static T FindChild<T>(DependencyObject parent, string childName) where T : DependencyObject{if (parent == null) return null;T foundChild = null;int childrenCount = VisualTreeHelper.GetChildrenCount(parent);for (int i = 0; i < childrenCount; i++){var child = VisualTreeHelper.GetChild(parent, i);// 如果bai子控件不是需查找的控件類型T childType = child as T;if (childType == null){// 在下一級(jí)控件中遞歸查找foundChild = FindChild<T>(child, childName);// 找到控件就可以中斷遞歸操作 if (foundChild != null) break;}else if (!string.IsNullOrEmpty(childName)){var frameworkElement = child as FrameworkElement;// 如果控件名稱符合參數(shù)條件if (frameworkElement != null && frameworkElement.Name == childName){foundChild = (T)child;break;}}else{// 查找到了控件foundChild = (T)child;break;}}return foundChild;}#endregion#region ///界面刷新private void CompositionTarget_Rendering(object sender, EventArgs e){TranslateTransform bool_translate = (TranslateTransform)ep_boll.RenderTransform;TranslateTransform rect_translate = (TranslateTransform)rt_rect.RenderTransform;bool_translate.X = ball_info.Addr.X;bool_translate.Y = ball_info.Addr.Y;rect_translate.X = rect_info.Addr.X;rect_translate.Y = rect_info.Addr.Y;lb_ball_addr.Content = ball_info.Addr.X.ToString("0.00") + ":" + ball_info.Addr.Y.ToString("0.00");lb_leng.Content=check_leng(rect_info, ball_info)[1].ToString("0.00");}#endregion#region ///核心算法/// <summary>/// 獲取距離最近的點(diǎn)的距離/// </summary>/// <param name="p">矩形信息</param>/// <param name="b">圓信息</param>/// <returns>/// re[0] -1 錯(cuò)誤(內(nèi)部) 0 X軸方向距離最短 1 Y軸距離最短/// re[1] -1 錯(cuò)誤 其他:最短距離/// </returns>private double[] check_leng(Rect p, Ball b){double leng = Math.Sqrt(Math.Pow(p.Addr.X - b.Addr.X, 2) + Math.Pow(p.Addr.Y - b.Addr.Y, 2));double max_len = Math.Sqrt(Math.Pow(p.Width / 2, 2) + Math.Pow(p.Height / 2, 2)) + b.Radius;double min_len = Math.Min(Math.Min(p.Height / 2, p.Width / 2), b.Radius);double min_x = -1;double min_y = -1;double min_1 = -1;double min_2 = -1;double min_3 = -1;double min_4 = -1;double[] re = new double[2];re[0] = -1;re[1] = -1;if (leng < min_len) //小于最小距離,兩物體相交 或位于內(nèi)部{//邏輯上不允許出現(xiàn)此種情況return re;}else{//根據(jù)中心坐標(biāo)位置確定需要判斷的邊界(有可能交互的邊界)if ((b.Addr.X >= p.Addr.X - p.Width / 2 + b.Radius) && (b.Addr.X <= p.Addr.X + p.Width / 2 - b.Radius)) //位于Y軸方向區(qū)域類 {if (b.Addr.Y <= p.Addr.Y - p.Height / 2 - b.Radius) //圓心位于矩形的下邊沿{min_y = Math.Abs(b.Addr.Y + b.Radius - (p.Addr.Y - p.Height / 2));}else if (b.Addr.Y >= p.Addr.Y + p.Height / 2 + b.Radius) //圓心位于的上邊沿{min_y = Math.Abs(b.Addr.Y - b.Radius - (p.Addr.Y + p.Height / 2));}else //圓心位于矩形內(nèi){min_y = -1;}re[0] = 1;re[1] = min_y;return re;}else if ((b.Addr.Y >= p.Addr.Y - p.Height / 2 + b.Radius) && (b.Addr.Y <= p.Addr.Y + p.Height / 2 - b.Radius))//位于矩形X軸方向區(qū)域類 {if (b.Addr.X <= p.Addr.X - p.Width / 2 - b.Radius) //圓心位于矩形的左邊沿{min_x = Math.Abs(b.Addr.X + b.Radius - (p.Addr.X - p.Width / 2));}else if (b.Addr.X >= p.Addr.X + p.Width / 2 + b.Radius) //圓心位于矩形的右邊沿{min_x = Math.Abs(b.Addr.X - b.Radius - (p.Addr.X + p.Width / 2));}else //圓心位于矩形內(nèi){min_x = -1;}re[0] = 0;re[1] = min_x;return re;}else if ((b.Addr.X <= p.Addr.X - p.Width / 2 + b.Radius) && (b.Addr.Y <= p.Addr.Y - p.Height / 2 + b.Radius)) //第四象域{for (int rad_t = 270; rad_t <= 360; rad_t++){double x = b.Addr.X + b.Radius * Math.Cos(Math.PI * rad_t / 180);double y = b.Addr.Y - b.Radius * Math.Sin(Math.PI * rad_t / 180); //算出球邊沿的坐標(biāo)double m = p.Addr.X - p.Width / 2;double n = p.Addr.Y - p.Height / 2;double mint_t = Math.Sqrt(Math.Pow(m - x, 2) + Math.Pow(n - y, 2));re[0] = 1;if (b.Addr.X > m){mint_t = Math.Min(mint_t, Math.Abs(y - n));re[0] = 1;}else if (b.Addr.Y > n){mint_t = Math.Min(mint_t, Math.Abs(x - m));re[0] = 1;}if (min_4 != -1){if ((x > p.Addr.X - p.Width / 2) && (y > p.Addr.Y - p.Height / 2)){min_4 = -1;break;}else{if (mint_t < min_4){min_4 = mint_t;}}}else{if ((x > p.Addr.X - p.Width / 2) && (y > p.Addr.Y - p.Height / 2)){min_4 = -1;break;}else{min_4 = mint_t;}}}re[1] = min_4;return re;//return min_4;}else if ((b.Addr.X > p.Addr.X + p.Width / 2 - b.Radius) && (b.Addr.Y <= p.Addr.Y - p.Height / 2 + b.Radius)) //第三象域{for (int rad_t = 180; rad_t <= 270; rad_t++){double x = b.Addr.X + b.Radius * Math.Cos(Math.PI * rad_t / 180);double y = b.Addr.Y - b.Radius * Math.Sin(Math.PI * rad_t / 180); //算出球邊沿的坐標(biāo)double m = p.Addr.X + p.Width / 2;double n = p.Addr.Y - p.Height / 2;double mint_t = Math.Sqrt(Math.Pow(m - x, 2) + Math.Pow(n - y, 2));re[0] = 1;if (b.Addr.X < m){mint_t = Math.Min(mint_t, Math.Abs(y - n));re[0] = 1;}else if (b.Addr.Y > n){mint_t = Math.Min(mint_t, Math.Abs(x - m));re[0] = 0;}//double mint_t = Math.Sqrt(Math.Pow(p.Addr.X + p.Width / 2 - x, 2) + Math.Pow(p.Addr.Y - p.Height / 2 - y, 2));if (min_3 != -1){if ((x < p.Addr.X + p.Width / 2) && (y > p.Addr.Y - p.Height / 2)){min_3 = -1;break;}elseif (mint_t < min_3){min_3 = mint_t;}}else{if ((x < p.Addr.X + p.Width / 2) && (y > p.Addr.Y - p.Height / 2)){min_3 = -1;break;}else{}min_3 = mint_t;}}re[1] = min_3;return re;//return min_3;}else if ((b.Addr.X > p.Addr.X + p.Width / 2 - b.Radius) && (b.Addr.Y > p.Addr.Y + p.Height / 2 - b.Radius))//第二象域{for (int rad_t = 90; rad_t <= 180; rad_t++){double x = b.Addr.X + b.Radius * Math.Cos(Math.PI * rad_t / 180);double y = b.Addr.Y - b.Radius * Math.Sin(Math.PI * rad_t / 180); //算出球邊沿的坐標(biāo)double m = p.Addr.X + p.Width / 2;double n = p.Addr.Y + p.Height / 2;double mint_t = Math.Sqrt(Math.Pow(m - x, 2) + Math.Pow(n - y, 2));re[0] = 0;if (b.Addr.X < m){mint_t = Math.Min(mint_t, Math.Abs(y - n));re[0] = 1;}else if (b.Addr.Y < n){mint_t = Math.Min(mint_t, Math.Abs(x - m));re[0] = 0;}if (min_2 != -1){if ((x < p.Addr.X + p.Width / 2) && (y < p.Addr.Y + p.Height / 2)){min_2 = -1;break;}else{if (mint_t < min_2){min_2 = mint_t;}}}else{if ((x < p.Addr.X + p.Width / 2) && (y < p.Addr.Y + p.Height / 2)){min_2 = -1;break;}else{min_2 = mint_t;}}}re[1] = min_2;return re;}else if ((b.Addr.X <= p.Addr.X - p.Width / 2 + b.Radius) && (b.Addr.Y > p.Addr.Y + p.Height / 2 - b.Radius)) //第一象域{for (int rad_t = 0; rad_t <= 90; rad_t++){double x = b.Addr.X + b.Radius * Math.Cos(Math.PI * rad_t / 180);double y = b.Addr.Y - b.Radius * Math.Sin(Math.PI * rad_t / 180); //算出球邊沿的坐標(biāo)double m = p.Addr.X - p.Width / 2;double n = p.Addr.Y + p.Height / 2;double mint_t = Math.Sqrt(Math.Pow(m - x, 2) + Math.Pow(n - y, 2));re[0] = 0;if (b.Addr.X > m){mint_t = Math.Min(mint_t, Math.Abs(y - n));re[0] = 1;}else if (b.Addr.Y < n){mint_t = Math.Min(mint_t, Math.Abs(x - m));re[0] = 0;}if (min_1 != -1){if ((x > p.Addr.X - p.Width / 2) && (y < p.Addr.Y + p.Height / 2)){min_1 = -1;break;}else{if (mint_t < min_1){min_1 = mint_t;}}}else{if ((x > p.Addr.X - p.Width / 2) && (y < p.Addr.Y + p.Height / 2)){min_1 = -1;break;}else{min_1 = mint_t;}}}re[1] = min_1;return re;}return re;//return -98;}}private double wb_val = 0;private int time_count = 0;/// <summary>/// 球體移動(dòng)判斷/// </summary>private void ball_move(){try{time_count++;double max_x = (gd_ball.ActualWidth - ep_boll.ActualWidth) / 2;double max_y = gd_ball.ActualHeight - ep_boll.ActualHeight;wb_val = rect_info.Addr.X;if (time_count >= 20){time_count = 0;}if ((int)(51 - ball_info.Speed.X) != 0 && ball_info.Speed.X != 0){if (time_count % ((int)(51 - ball_info.Speed.X)) == 0){ball_info.Addr.X += ball_info.Dir.X;}}if ((int)(51 - ball_info.Speed.Y) != 0 && ball_info.Speed.Y != 0){if (time_count % ((int)(51 - ball_info.Speed.Y)) == 0){ball_info.Addr.Y += ball_info.Dir.Y;}}if (ball_info.Addr.X >= (max_x)){ball_info.Dir.X = -1;ball_info.Addr.X = max_x;}else if (ball_info.Addr.X <= -max_x){ball_info.Dir.X = 1;ball_info.Addr.X = -max_x;}if (ball_info.Addr.Y <= (-max_y)){ball_info.Dir.Y = 1;ball_info.Addr.Y = -max_y;}else if (ball_info.Addr.Y > 0){ball_info.Addr.X = 0;ball_info.Addr.Y = -10;ball_info.Speed.X = 0;ball_info.Speed.Y = 0;ball_info.Dir.X = 0;ball_info.Dir.Y = -1;brick_run_stpe++;lb_run_stpe.Content = brick_run_stpe;Debug.WriteLine("重置");}else if (ball_info.Addr.Y > -5){if (System.Math.Abs(ball_info.Addr.X - wb_val) > 50){Debug.WriteLine("掉了");}else if (System.Math.Abs(ball_info.Addr.X - wb_val) > 45){if (ball_info.Dir.Y != -1){ball_info.Dir.Y = -1;brick_run_stpe++;lb_run_stpe.Content = brick_run_stpe;}if (ball_info.Addr.X - wb_val < 0){if (ball_info.Dir.X != -1){ball_info.Dir.X = -1;}}else{if (ball_info.Dir.X != 1){ball_info.Dir.X = 1;}}ball_info.Speed.X = (Math.Abs((ball_info.Addr.X - wb_val)));Debug.WriteLine("起飛1");}else //0~45理論還是輸了。{}}else if (ball_info.Addr.Y > -10){if (System.Math.Abs(ball_info.Addr.X - wb_val) > 50){// Debug.WriteLine("掉了");}else{if (ball_info.Dir.Y != -1){ball_info.Dir.Y = -1;brick_run_stpe++;lb_run_stpe.Content = brick_run_stpe;}if (ball_info.Addr.X - wb_val < 0){if (ball_info.Dir.X != -1){ball_info.Dir.X = -1;}}else{if (ball_info.Dir.X != 1){ball_info.Dir.X = 1;}}ball_info.Speed.X = (Math.Abs((ball_info.Addr.X - wb_val)));Debug.WriteLine("起飛2");}}if (brick_list != null && brick_list.Count != 0){for (int i = 0; i < brick_list.Count; i++) //判斷磚塊與球的距離{if (brick_list[i].Stat != 0){if ((Math.Abs(brick_list[i].Addr.X - ball_info.Addr.X) < Max_leng)&&(Math.Abs(brick_list[i].Addr.Y - ball_info.Addr.Y) < Max_leng)){double[] leng = check_leng(brick_list[i], ball_info);if (leng[1] <= 0){if (leng[0] == 0){ball_info.Dir.X = -ball_info.Dir.X;}else{ball_info.Dir.Y = -ball_info.Dir.Y;}//觸發(fā)移除操作if (brick_list[i].Stat != 99){brick_list[i].Stat--;if (brick_list[i].Stat <= 0){//移除磚塊brick_list[i].Stat = 0;//界面移除Rectangle ret_t = null;string name = "rect_" + brick_list[i].Index.ToString();ret_t = FindChild<Rectangle>(gd_table, name);if (ret_t != null){BrushConverter conv = new BrushConverter();Brush bru;bru = conv.ConvertFromInvariantString("#000000FF") as Brush;ret_t.Fill = bru;ret_t.Stroke = bru;re_brick_count++;lb_re_count.Content =re_brick_count;lb_lost_count.Content = brick_num - re_brick_count;if (brick_num <= re_brick_count){aTimer.Stop();MessageBox.Show("恭喜,已完成拆除\r\n" + "拆除磚塊:" + re_brick_count.ToString() + " 總共用時(shí):" + processCount.TotalSecond.ToString()+"s") ; ;}}}}}}}}}}catch{ }}/// <summary>/// 生成磚塊/// </summary>/// <param name="brick_info">磚塊信息</param>/// <param name="num">磚塊數(shù)量</param>private void crt_zhuan(Point brick_info,int num){int widght_num = (int)((gd_ball.ActualWidth - 40) / brick_info.X);int height_num = (int)(((gd_ball.ActualHeight) / 3 * 2 - 20) / brick_info.Y);int max_num = widght_num * height_num;if (max_num < num){MessageBox.Show("磚過大或數(shù)量過多,請(qǐng)重新生成\r\n" + "最多生成 " + max_num.ToString() + " 塊");return;}Point point_start = new Point();point_start.X = 20 - (gd_ball.ActualWidth / 2);point_start.Y = 20 - gd_ball.ActualHeight; ;brick_addr = GetRandomArray(num, 0, max_num);int count = 0;brick_list.Clear();brick_list = new List<Rect>();gd_table.Children.Clear();gd_table.RowDefinitions.Clear();gd_table.ColumnDefinitions.Clear();for (int i = 0; i < height_num; i++){RowDefinition rowDefinition = new RowDefinition();rowDefinition.MinHeight = brick_info.Y;rowDefinition.MaxHeight = brick_info.Y;gd_table.RowDefinitions.Add(rowDefinition);}for (int j = 0; j < widght_num; j++){ColumnDefinition columnDefinition = new ColumnDefinition();columnDefinition.MinWidth = brick_info.X;columnDefinition.MaxWidth = brick_info.X;gd_table.ColumnDefinitions.Add(columnDefinition);}for (int i = 0; i < height_num; i++){for (int j = 0; j < widght_num; j++){for (int k = 0; k < num; k++){//if (count == addr[k])if (count == brick_addr[k]){//添加磚Rect rect_t = new Rect();Point p = new Point(0, 0);p.X= point_start.X + j * brick_info.X + brick_info.X / 2;p.Y= point_start.Y + i * brick_info.Y + brick_info.Y / 2;//rect_t.Addr.X = point_start.X + j * brick_info.X + brick_info.X / 2;//rect_t.Addr.Y = point_start.Y + i * brick_info.Y + brick_info.Y / 2;rect_t.Addr = p;rect_t.Width = brick_info.X;rect_t.Height = brick_info.Y;rect_t.Stat = 1;rect_t.Index = count;brick_list.Add(rect_t);//顯示BrushConverter conv = new BrushConverter();Brush bru;bru = conv.ConvertFromInvariantString("#FFB6BFBF") as Brush;Brush back;back = conv.ConvertFromInvariantString("#FF00BFBF") as Brush;//Rectangle ret_t = new Rectangle() { Width = rect_t.Width, Name= "rect_"+count.ToString(), Height = rect_t.Height, Fill = bru, Stroke = back };Rectangle ret_t = new Rectangle() { Width = rect_t.Width, Name = "rect_" + count.ToString(), Height = rect_t.Height, Fill = bru, Stroke = back };ret_t.SetValue(Grid.RowProperty, i);ret_t.SetValue(Grid.ColumnProperty, j);gd_table.Children.Add(ret_t);break;}}count++;}}}#endregion#region///控件事件/// <summary>/// 速度更改按鈕/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void sd_bool_speed_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){// bool_speed = (int)(sd_bool_speed.Value);ball_info.Speed.Y = (int)(sd_bool_speed.Value);}/// <summary>/// 底板移動(dòng)事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void gd_ball_MouseMove(object sender, MouseEventArgs e){if (e.LeftButton == MouseButtonState.Pressed){Point p = e.GetPosition((IInputElement)sender);Point d = new Point(0, 0);double max_leng = (gd_ball.ActualWidth - rt_wb.ActualWidth - rt_rect.ActualWidth) / 2;d.X= p.X - max_leng;d.Y = rect_info.Addr.Y;//rect_info.Addr.X = p.X - max_leng;if (d.X < -max_leng){d.X = -max_leng;}if (d.X > max_leng){d.X = max_leng;}rect_info.Addr = d;sd_x.Value = rect_info.Addr.X;}}/// <summary>/// 更改擋板坐標(biāo)/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void sd_x_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){Point d = new Point(0, 0);d.X= sd_x.Value;d.Y = rect_info.Addr.Y;//rect_info.Addr.X = sd_x.Value;double max_leng = (gd_ball.ActualWidth - rt_wb.ActualWidth - rt_rect.ActualWidth) / 2;if (d.X < -max_leng){d.X = -max_leng;}if (d.X > max_leng){d.X = max_leng;}rect_info.Addr = d;sd_x.Value = rect_info.Addr.X;}/// <summary>/// 重新開始游戲 /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void bt_crt_Click(object sender, RoutedEventArgs e){aTimer.Stop();System.Threading.Thread.Sleep(100);ball_info.Speed.X = 0;ball_info.Addr.X = 0;ball_info.Addr.Y = -10;brick_num = (int)sd_brick_num.Value;brick_run_stpe = 0;re_brick_count = 0;processCount.TotalSecond = 0;processCount.Stpe = 0;crt_zhuan(brick_info, brick_num);lb_brick_count.Content = brick_num;lb_re_count.Content = 0;lb_lost_count.Content = brick_list.Count - re_brick_count;lb_run_stpe.Content = brick_run_stpe;lb_time.Content = processCount.GetHour() + ":" + processCount.GetMinute() + ":" + processCount.GetSecond();}/// <summary>/// 啟動(dòng)運(yùn)行/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void bt_start_Click(object sender, RoutedEventArgs e){ball_info.Speed.X = 0;ball_info.Speed.Y = sd_bool_speed.Value;brick_num = (int)sd_brick_num.Value;aTimer.Start();}/// <summary>/// 關(guān)閉窗口/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Window_Closing(object sender, CancelEventArgs e){aTimer.Stop();}/// <summary>/// 關(guān)聯(lián)A鍵/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void cb_start_game_Executed(object sender, ExecutedRoutedEventArgs e){bt_start_Click(null, null);}/// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void cb_start_game_CanExecute(object sender, CanExecuteRoutedEventArgs e){e.CanExecute = true;}/// <summary>/// 窗體大小改變/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Window_SizeChanged(object sender, SizeChangedEventArgs e){sd_x.Maximum = gd_ball.ActualWidth / 2;sd_x.Minimum = -gd_ball.ActualWidth / 2;}#endregion}/// <summary>/// 實(shí)現(xiàn)倒計(jì)時(shí)功能的類/// </summary>public class ProcessCount{private Int32 _TotalSecond;private int _stpe = 0;public Int32 TotalSecond{get { return _TotalSecond; }set { _TotalSecond = value; }}public int Stpe{get { return _stpe; }set { _stpe = value; }}/// <summary>/// 構(gòu)造函數(shù)/// </summary>public ProcessCount(Int32 totalSecond, int s = 0){this._TotalSecond = totalSecond;this.Stpe = s;}/// <summary>/// 減秒/// </summary>/// <returns></returns>public bool ProcessCountDown(){if (_TotalSecond == 0)return false;else{_TotalSecond--;return true;}}/// <summary>/// 加秒/// </summary>/// <returns></returns>public bool ProcessCountUp(){_TotalSecond++;return true;}/// <summary>/// 獲取小時(shí)顯示值/// </summary>/// <returns></returns>public string GetHour(){return String.Format("{0:D2}", (_TotalSecond / 3600));}/// <summary>/// 獲取分鐘顯示值/// </summary>/// <returns></returns>public string GetMinute(){return String.Format("{0:D2}", (_TotalSecond % 3600) / 60);}/// <summary>/// 獲取秒顯示值/// </summary>/// <returns></returns>public string GetSecond(){return String.Format("{0:D2}", _TotalSecond % 60);}}public sealed class MillisecondTimer : IComponent, IDisposable{private static TimerCaps caps;private int interval;private bool isRunning;private int resolution;private TimerCallback timerCallback;private int timerID;public int Interval{get{return this.interval;}set{if ((value < caps.periodMin) || (value > caps.periodMax)){throw new Exception("超出計(jì)時(shí)范圍!");}this.interval = value;}}/// <summary>/// /// </summary>public bool IsRunning{get{return this.isRunning;}}/// <summary>/// /// </summary>public ISite Site{set;get;}public event EventHandler Disposed; // 這個(gè)事件實(shí)現(xiàn)了IComponet接口public event EventHandler Tick;static MillisecondTimer(){timeGetDevCaps(ref caps, Marshal.SizeOf(caps));}public MillisecondTimer(){this.interval = caps.periodMin; // this.resolution = caps.periodMin; //this.isRunning = false;this.timerCallback = new TimerCallback(this.TimerEventCallback);}public MillisecondTimer(IContainer container): this(){container.Add(this);}~MillisecondTimer(){timeKillEvent(this.timerID);}public void Start(){if (!this.isRunning){this.timerID = timeSetEvent(this.interval, this.resolution, this.timerCallback, 0, 1); // 間隔性地運(yùn)行if (this.timerID == 0){throw new Exception("無法啟動(dòng)計(jì)時(shí)器");}this.isRunning = true;}}public void Stop(){if (this.isRunning){timeKillEvent(this.timerID);this.isRunning = false;}}/// <summary>/// 實(shí)現(xiàn)IDisposable接口/// </summary>public void Dispose(){timeKillEvent(this.timerID);GC.SuppressFinalize(this);EventHandler disposed = this.Disposed;if (disposed != null){disposed(this, EventArgs.Empty);}}//*************************************************** 內(nèi)部函數(shù) ******************************************************************[DllImport("winmm.dll")]private static extern int timeSetEvent(int delay, int resolution, TimerCallback callback, int user, int mode);[DllImport("winmm.dll")]private static extern int timeKillEvent(int id);[DllImport("winmm.dll")]private static extern int timeGetDevCaps(ref TimerCaps caps, int sizeOfTimerCaps);// The timeGetDevCaps function queries the timer device to determine its resolution. private void TimerEventCallback(int id, int msg, int user, int param1, int param2){if (this.Tick != null){this.Tick(this, null); // 引發(fā)事件}}//*************************************************** 內(nèi)部類型 ******************************************************************private delegate void TimerCallback(int id, int msg, int user, int param1, int param2); // timeSetEvent所對(duì)應(yīng)的回調(diào)函數(shù)的簽名/// <summary>/// 定時(shí)器的分辨率(resolution)。單位是ms,毫秒/// </summary>[StructLayout(LayoutKind.Sequential)]private struct TimerCaps{public int periodMin;public int periodMax;}} }
  • 代碼下載:
    打磚塊代碼V0.0.1_20210118
    試用程序:
    鏈接:https://pan.baidu.com/s/1HFWxnroo2Hgk6d7TtQ3p1w
    提取碼:3ayx

總結(jié)

以上是生活随笔為你收集整理的WPF砖块消除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

免费在线观看成人 | 在线免费观看羞羞视频 | 亚洲一区不卡视频 | 97伊人网 | 亚洲精品裸体 | 最新av网址在线 | 亚洲伊人婷婷 | 亚洲成人麻豆 | 天天射天天射天天射 | 最近最新中文字幕 | 在线看黄网站 | 在线中文视频 | 亚洲三级影院 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕在线观看的网站 | 日韩性xxxx | 日韩欧美在线国产 | 一区 二区 精品 | 日韩欧美网站 | 狠狠色丁香婷婷综合橹88 | 中文字幕九九 | 五月视频 | 欧美日韩视频一区二区三区 | 亚洲婷婷网| 成全免费观看视频 | 亚洲精品国产视频 | 欧美成人一区二区 | 免费看高清毛片 | 国产日韩中文在线 | 视频二区在线视频 | 久热免费在线 | 久久久久女人精品毛片 | 在线成人性视频 | 日韩精品视频在线免费观看 | 激情喷水 | 国产在线观看中文字幕 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲精品99久久久久久 | 久草com | 亚洲欧洲精品一区二区精品久久久 | 国产视频每日更新 | 欧美孕交vivoestv另类 | 国产欧美在线一区 | 天天综合网天天综合色 | 国产精品一区二区三区久久久 | 成人动漫精品一区二区 | 国产精品美女久久久久久 | 欧美a在线看| 天天做天天看 | 在线观看黄色av | 91字幕| 韩日电影在线 | 久久久久高清毛片一级 | 欧美日韩国产精品一区二区三区 | x99av成人免费| 亚洲综合婷婷 | 国产黄免费在线观看 | 国产一区高清在线 | 亚洲精品国产综合久久 | 亚洲精品综合久久 | 日本中文字幕在线电影 | 国产视频一区精品 | 99久热在线精品视频 | 狠狠久久婷婷 | 国产日韩视频在线 | av三区在线 | 在线导航福利 | 一区二区三区电影在线播 | 高清中文字幕 | 久久1区| 国产高清视频在线 | 激情在线网站 | 91看片看淫黄大片 | 狠狠干婷婷 | 成人久久免费 | 日韩免费看片 | 欧美日韩不卡一区 | 亚洲 中文字幕av | 6080yy午夜一二三区久久 | 久久国产精品久久久久 | 综合在线色 | 国产99久久九九精品免费 | 美女网站视频色 | 久久久久久久久久福利 | 欧美日韩在线观看视频 | 亚洲成人精品久久久 | 特黄色大片 | 久久国产精品区 | 国产精美视频 | 日韩在线视频免费看 | 成人网在线免费视频 | 99热精品国产一区二区在线观看 | 就要色综合 | 91精选在线观看 | 亚洲 欧美 国产 va在线影院 | 久久99久久99精品免视看婷婷 | 国产福利91精品 | 国产 在线 日韩 | 成人影视免费看 | 五月婷婷综合网 | 91激情在线视频 | 久久久999 | 国产成人三级一区二区在线观看一 | 国产男男gay做爰 | 日本大尺码专区mv | 91精品国产一区二区三区 | 国产黄色av影视 | 国产精品毛片久久久 | 精品国产久 | 国产精品一区二区果冻传媒 | 亚洲 欧洲av | 久久久久久高潮国产精品视 | 亚洲精品午夜久久久久久久 | 国产在线观看xxx | 成人黄色在线视频 | 91人人揉日日捏人人看 | 国产一级片播放 | 国产精品手机看片 | 久久爽久久爽久久av东京爽 | 久草在线免 | 中文字幕中文字幕中文字幕 | 欧美一级欧美一级 | 99视频这里有精品 | 久久人人爽av| 久久一区二区三区超碰国产精品 | 免费视频久久久久久久 | 日韩精品三区四区 | 五月激情久久 | 97香蕉久久国产在线观看 | 日韩av免费在线看 | 一区二区免费不卡在线 | 亚洲精品在线免费看 | 丁香六月激情婷婷 | 99久久精品久久亚洲精品 | 久久国产精品精品国产色婷婷 | 国产日韩在线播放 | 99在线视频精品 | 国产精品爽爽久久久久久蜜臀 | 欧美日韩破处 | 精品久久久久久久久久久久久久久久久久 | 国产一区在线播放 | 激情五月婷婷激情 | 久久免费在线视频 | 韩国av免费观看 | 亚洲在线网址 | 欧美在线视频一区二区三区 | 在线播放日韩av | 国产黄影院色大全免费 | 日韩午夜精品福利 | 日日碰狠狠躁久久躁综合网 | 成人91在线 | 98精品国产自产在线观看 | av片中文字幕 | 国产一级大片在线观看 | 九草在线视频 | 免费黄色在线网址 | 国产99久久久精品 | 成人在线视频免费观看 | 日韩精品中字 | 久久99在线视频 | 日韩在线视频线视频免费网站 | 久久久久久久久电影 | 日韩欧美视频一区二区三区 | 国内精品久久久久久久久久清纯 | 香蕉影视| 丁香六月欧美 | 国产精品久久久久久久毛片 | 亚洲狠狠丁香婷婷综合久久久 | 五月婷婷一区 | 最新一区二区三区 | 国产一区二区三区免费视频 | 亚洲三级黄色 | 亚洲欧美久久 | 一区二区视频欧美 | 日韩在线电影一区二区 | 精品久久久久久一区二区里番 | 亚洲一区二区91 | 国产伦精品一区二区三区… | 国产精品久久久区三区天天噜 | 亚州天堂| 国产精品9区 | 91香蕉视频好色先生 | 美女视频免费一区二区 | 日韩精品中文字幕在线不卡尤物 | 欧美日韩不卡在线观看 | 国产精品精品国产婷婷这里av | 国产原创91 | 青青河边草免费 | 国产视频一| 国产精品亚洲人在线观看 | 91片网 | 色视频网址 | 91网址在线看 | 中文字幕资源网在线观看 | 成年人视频免费在线播放 | av超碰在线观看 | 麻豆视频在线免费观看 | 久久天天操 | 一区二区三区四区在线 | 国产亚洲婷婷 | 国产精品自拍在线 | 久久久久中文 | 麻豆久久 | 超级碰碰碰视频 | 中文字幕2021 | 国产精品成人国产乱一区 | 黄网站色欧美视频 | 国产午夜精品久久久久久久久久 | 欧美午夜精品久久久久 | 成人免费视频a | 日韩精品一区二区三区第95 | 天堂av中文字幕 | 欧美va天堂在线电影 | 久久久久久久免费 | 久久精品免费 | 很黄很黄的网站免费的 | 国产成人久久77777精品 | 99精品免费久久久久久日本 | 在线之家官网 | av福利在线看| 成人久久毛片 | 在线观看欧美成人 | 在线观看中文字幕2021 | 精品一区在线 | 一区二区三区在线看 | 青春草免费视频 | 99久久夜色精品国产亚洲96 | 99色视频在线 | 精品久久久免费视频 | 日韩精品在线免费播放 | 在线观看成人国产 | 欧美日韩精品二区第二页 | 中文字幕在线有码 | 黄色av电影在线观看 | 国产视频一区二区在线观看 | 国产视频综合在线 | 久久久久久美女 | 日韩在线高清 | 日韩91精品 | 久久国产一区 | 日韩午夜电影院 | 最近乱久中文字幕 | 激情欧美国产 | 在线看av网址 | 日韩专区在线播放 | 免费国产在线观看 | 黄色网免费 | 伊人五月天.com | 日韩欧在线| 日本中文字幕在线一区 | 欧美日本不卡高清 | 五月婷婷欧美视频 | 国产又粗又硬又爽的视频 | 五月婷婷操| 日韩网站一区二区 | 久久69av| 九九热久久久 | 99这里精品| 丁香婷婷久久久综合精品国产 | 九色福利视频 | 国产日女人 | 在线岛国av | 国模视频一区二区三区 | 国产精品久久久久久久久久久不卡 | 免费亚洲视频在线观看 | 久日视频| 福利一区二区在线 | 亚洲小视频在线观看 | 日韩免费成人 | 亚洲国产激情 | 天堂av最新网址 | 久久久www免费电影网 | 91在线一区| 国产精品成人av在线 | 成人动态视频 | 麻豆94tv免费版 | 午夜精品久久久久久久99无限制 | 亚洲电影自拍 | 国产99精品在线观看 | av在线看网站 | 成人动态视频 | 日韩av一区二区三区四区 | 日韩视频中文 | 日韩免费观看一区二区 | 中文字幕传媒 | 久久理伦片 | 青春草视频 | 国产v在线 | 婷婷久久一区 | 中文字幕中文字幕在线中文字幕三区 | 久久伊人精品一区二区三区 | a黄色片在线观看 | 毛片在线网 | 92精品国产成人观看免费 | 免费在线观看av网址 | 日韩视频免费在线观看 | 精产嫩模国品一二三区 | 国产高清在线 | 国产激情免费 | 日韩综合一区二区三区 | 国产久视频| 国内精品久久影院 | 亚洲综合爱 | 久久综合免费 | 在线免费性生活片 | 国产在线不卡 | 91丨九色丨首页 | 色综合久久久久综合 | 久久久精品网 | 国产精品一区二区久久国产 | 99精品欧美一区二区蜜桃免费 | 久草在线播放视频 | 五月天九九 | 999视频网 | 中文字幕亚洲精品在线观看 | 午夜久久网站 | 久久久穴 | 久久午夜电影 | 中文字幕亚洲高清 | 亚洲无毛专区 | 久久香蕉影视 | 国产高清视频免费在线观看 | 日韩三区在线 | 国产123av| 毛片精品免费在线观看 | 国产黄色精品 | www.亚洲激情.com | 婷婷色综合网 | 亚欧日韩成人h片 | 激情综合色图 | 久久人人爽人人爽人人片 | 人人爽人人爽人人爽 | 在线观看www91 | 13日本xxxxxⅹxxx20| 91在线区| 91精品国产综合久久久久久久 | 久久精品亚洲精品国产欧美 | 国产网站av | 黄色.com| 999久久久久久久久6666 | avove黑丝 | 亚洲最大激情中文字幕 | www.综合网.com | 九九精品久久久 | 久久久 激情 | 国产亚洲精品无 | 久久久综合 | 久久无码av一区二区三区电影网 | 国产精品久久久久av福利动漫 | 最新日韩视频在线观看 | 亚洲精品在线免费 | 亚州av一区 | 久久97超碰 | 99爱爱| 91成人精品观看 | 性色av一区二区三区在线观看 | 久久永久免费 | 一区二区三区不卡在线 | 成人手机在线视频 | 欧美伦理一区二区 | 久久久久一区二区三区四区 | 一区二区不卡高清 | 国产亚洲人成网站在线观看 | 国产一区二区不卡视频 | 午夜日b视频 | 激情综合五月天 | 亚洲天堂网在线播放 | 狠狠色综合网站久久久久久久 | 91九色最新地址 | 国产成人一区二区在线观看 | 成年人免费在线播放 | 特级毛片在线 | 国产高清小视频 | 女人18片毛片90分钟 | 五月婷婷深开心 | 国产成人久久av | 中文字幕一区二区三区久久 | 久久情爱 | 天天鲁天天干天天射 | 久久看片网站 | 日日添夜夜添 | 久久精品99精品国产香蕉 | 91你懂的 | 国产成人在线网站 | 久久精品国产免费 | 日韩国产精品久久 | 六月激情 | 色天天综合久久久久综合片 | 不卡的av片 | 国产一卡二卡在线 | 国产亚洲成av人片在线观看桃 | 中文字幕欧美激情 | 国产成人av电影在线观看 | 99婷婷狠狠成为人免费视频 | 亚洲精品h | 国产亚洲欧美在线视频 | 国产色小视频 | 国产网红在线 | 在线观看视频色 | 国产视频在线观看免费 | 在线性视频日韩欧美 | 国产一级91 | 亚洲资源在线网 | 在线免费试看 | 69国产盗摄一区二区三区五区 | 亚在线播放中文视频 | 麻豆一区二区三区视频 | 精品日韩av| 国产色久| 日日夜夜免费精品 | 999国产在线 | 五月婷香| 香蕉精品视频在线观看 | 国产99中文字幕 | 亚洲一区视频免费观看 | 欧美激情综合色综合啪啪五月 | 亚洲精品久久久久中文字幕二区 | 伊人婷婷色 | 激情网五月婷婷 | 一级片免费观看视频 | 在线成人短视频 | 亚洲aⅴ在线观看 | 99精品福利视频 | 一区二区视频在线观看免费 | 五月婷婷六月丁香在线观看 | 人人爽人人干 | 久久九九九九 | 成人性生交大片免费观看网站 | 草免费视频 | 黄色成人影视 | 人人插人人做 | 99免费在线观看视频 | 97在线观视频免费观看 | 免费看黄在线观看 | 在线播放国产一区二区三区 | 亚洲精品国精品久久99热一 | 很黄很色很污的网站 | 一区二区三区在线免费观看视频 | 91网免费观看 | 麻豆国产精品一区二区三区 | 国产色婷婷精品综合在线手机播放 | 一区二区 精品 | 黄色资源在线 | 免费在线观看成人av | 婷婷色综合网 | 久久人人爽爽人人爽人人片av | 99视频网站 | 7799av| 国际精品久久久久 | 久久久久久看片 | 天天色天| 国产中文字幕第一页 | 99视频在线免费播放 | 国产91电影在线观看 | 五月色综合 | 欧美日韩网址 | 中文在线字幕免费观看 | 不卡在线一区 | 日韩首页 | 国产黄色片一级 | 欧美日韩国产网站 | 天天操狠狠操夜夜操 | 精品毛片久久久久久 | 五月天色综合 | 丁香六月综合网 | 日韩一区二区三区免费视频 | 精品欧美小视频在线观看 | 久久精品国产免费看久久精品 | 黄色网在线播放 | 五月婷婷一区二区三区 | 亚洲精品在线二区 | 欧美日韩一区二区视频在线观看 | 日韩视频www| 麻豆视频免费网站 | 婷婷六月中文字幕 | 人人爽人人av | 一区二区精品在线 | 国产精品少妇 | 最新中文字幕在线播放 | 在线免费视频一区 | 国产日韩中文字幕在线 | 亚洲精品一区二区三区新线路 | 日本中文字幕观看 | 成年人免费看的视频 | 狠狠狠色丁香综合久久天下网 | 日本久久不卡视频 | 免费黄色a网站 | 黄色片网站| 日韩欧美一区二区三区黑寡妇 | 久久另类视频 | 免费亚洲一区二区 | 国产黄a三级 | 国产亚洲资源 | 国产精品久久久久久久久蜜臀 | 国产欧美中文字幕 | 人人草人 | 永久免费精品视频 | 久久精选 | 国产婷婷色 | 婷婷色综合 | 日韩av影视在线观看 | 成人影视片 | 人人干人人超 | 麻豆视频在线看 | 欧美性生活大片 | 狠狠狠色丁香婷婷综合久久88 | 久久经典国产视频 | 国产视频 亚洲视频 | 免费观看全黄做爰大片国产 | 国产高清视频在线免费观看 | 国产 字幕 制服 中文 在线 | 日本特黄一级片 | 国产区免费 | 精品亚洲视频在线 | 国产日韩精品一区二区三区 | 人人澡av| www.亚洲| 久久曰视频 | 日韩欧美一级二级 | 国产福利在线 | 久久久久久免费视频 | 国产在线视频一区二区三区 | 欧美日韩首页 | 久久黄色精品视频 | 日本精品va在线观看 | 黄色99视频 | 日本成址在线观看 | 中文字幕视频一区二区 | 午夜骚影| 亚洲成人蜜桃 | 在线免费看片 | 欧美日韩免费网站 | 亚洲精品大全 | 日韩欧美一区二区三区在线 | 91.精品高清在线观看 | 碰超在线观看 | av在线色| 久久福利在线 | 日韩精品高清不卡 | 美女国产精品 | 日韩大片在线观看 | 精品字幕在线 | 九九在线精品视频 | 97电影手机版 | 国产日韩一区在线 | 久久免费福利视频 | 亚洲五月六月 | 日韩免| 激情综合五月婷婷 | 日韩精品一区二区三区中文字幕 | 久久精品国产亚洲精品 | 天天色天天操天天爽 | 欧美视频网址 | 91九色最新地址 | 国产精品大片免费观看 | 久草视频手机在线 | 亚洲国产视频在线 | 色综合小说 | 成人黄色免费观看 | 欧美激情视频免费看 | 亚洲爱av | 碰超在线97人人 | 亚洲综合涩| 91精品免费看 | 99婷婷狠狠成为人免费视频 | 日韩精品一区二区在线视频 | 婷婷丁香花 | 亚洲一级免费观看 | 婷婷久月 | 四虎成人精品永久免费av | 日本精品视频一区二区 | 日韩大陆欧美高清视频区 | 午夜精品区 | 四虎国产精品成人免费影视 | 999视频在线观看 | 91成人看片 | 九色91在线| 天天爽天天做 | 激情综合亚洲 | 日韩精品极品视频 | 黄网av在线 | 99久久精品视频免费 | 久久久久免费精品视频 | 精品国产中文字幕 | 亚洲欧美在线观看视频 | 欧美日韩国产一二三区 | 国产91丝袜在线播放动漫 | 色九九视频 | 日本中文字幕在线 | 伊人五月 | 97免费在线视频 | 久久成人午夜 | 亚洲欧美va | 久久av伊人 | av看片网 | 日本不卡一区二区 | 91资源在线免费观看 | 精品国产区| 黄色小说免费在线观看 | 婷婷在线色 | 欧洲色吧 | 久久久久久久久久久久国产精品 | 黄色小网站在线观看 | 4438全国亚洲精品在线观看视频 | 久久精品福利视频 | 麻豆av电影 | 亚洲精品视频在线观看免费视频 | 91精选在线观看 | 狠狠色丁香婷婷综合久小说久 | 一区二区三区在线观看免费 | 久久永久视频 | 97超碰总站 | 少妇视频一区 | 69国产在线观看 | 久久国产精品二国产精品中国洋人 | 日日夜夜免费精品视频 | 激情综合网五月激情 | 国产精品毛片久久蜜 | 成人av片免费观看app下载 | 国产成人一二片 | 国产精品久久久久影视 | 免费高清看电视网站 | 色资源中文字幕 | 免费网站看av片 | 久久香蕉国产精品麻豆粉嫩av | 亚洲精品动漫久久久久 | 亚洲视频综合 | 久久av高清 | 丁香六月婷婷激情 | 久久久久亚洲精品成人网小说 | 国产精品久久电影网 | 国产高清av | 天堂av免费| 国内精品久久久久影院日本资源 | 国产我不卡 | 国产资源在线免费观看 | 国产91精品一区二区麻豆网站 | 日本h视频在线观看 | 人人澡超碰碰 | 1024手机基地在线观看 | 天天操天天拍 | 亚洲精选国产 | 五月综合激情网 | 91精品毛片 | 久久综合亚洲鲁鲁五月久久 | 一区二区三区免费 | 91久久丝袜国产露脸动漫 | 国产精品久久久久久久午夜 | 午夜神马福利 | 天天干一干 | 国产精品女人网站 | av免费在线观 | 国内精品视频免费 | 伊人亚洲综合网 | 91免费日韩 | 欧美污网站 | 日韩欧美一区二区三区免费观看 | 精品亚洲欧美一区 | 天天天色综合 | 免费在线播放视频 | 国产r级在线观看 | 波多野结衣资源 | 黄网站色视频 | 久久男人免费视频 | 精品国产一区二区三区四 | 美女免费黄视频网站 | 亚洲女人天堂成人av在线 | 婷婷精品国产一区二区三区日韩 | 中文字幕在线精品 | av天天干 | 久草在线免费资源站 | av黄色免费在线观看 | 欧美色图东方 | 91成人蝌蚪 | 久久午夜精品视频 | 国产精品久久久久一区 | 五月天激情婷婷 | 欧美国产视频在线 | 免费一级黄色 | 西西4444www大胆视频 | 高清av网站 | 久久精品一区二区三区视频 | 日日干网| 蜜桃av人人夜夜澡人人爽 | 91视频-88av| 2018好看的中文在线观看 | 亚洲一区黄色 | 国产精品久久久久久久久久久久午夜片 | 麻豆一二三精选视频 | 一区二区三区日韩在线观看 | 久久精品亚洲国产 | 成人精品一区二区三区中文字幕 | 国产成人精品网站 | 麻豆成人网 | 中文字幕av免费观看 | 国产一区国产二区在线观看 | 日韩av成人在线 | 亚洲2019精品| 亚洲香蕉在线观看 | 麻豆精品国产传媒 | 日韩av在线免费看 | 在线观看视频亚洲 | 91亚洲国产 | 97国产一区 | 精品免费| 国产精品s色 | 欧美黑人xxxx猛性大交 | 日韩欧美有码在线 | 伊人久久在线观看 | 999成人 | 国产精品系列在线 | 精品视频www | 久久久亚洲麻豆日韩精品一区三区 | 极品嫩模被强到高潮呻吟91 | 日日摸日日碰 | 一区在线电影 | 黄色视屏在线免费观看 | 国产乱视频 | 欧美成人h版在线观看 | 久久久久国产精品www | 日本一区二区三区免费观看 | 亚洲一区欧美精品 | 日韩大片在线免费观看 | 黄色av网站在线免费观看 | 天天色天天干天天 | 国产超碰在线观看 | 欧美一级视频一区 | 成人久久久精品国产乱码一区二区 | 开心激情综合网 | 国产又黄又硬又爽 | 日韩视频二区 | 在线国产福利 | 97av视频 | h动漫中文字幕 | 黄色影院在线播放 | av丁香花| 国产视频二 | 精品久久久久一区二区国产 | 99精品免费视频 | 大型av综合网站 | 国产亚洲免费观看 | 国产片网站 | 丝袜美腿在线视频 | 91久久精 | 国产精品综合久久久久久 | 粉嫩一二三区 | 美女视频黄网站 | 免费一级日韩欧美性大片 | 中文国产字幕在线观看 | www看片网站 | 区一区二区三在线观看 | 超级碰视频 | 国产99久久久国产精品免费看 | 日日操日日 | 97在线观看免费观看 | 国产精品第 | 日韩电影中文字幕在线 | 91视频在线观看大全 | 亚洲精品国产高清 | 国产黄免费看 | 美女网站视频色 | 99福利片| 视频在线亚洲 | 国产99久久久欧美黑人 | 最新极品jizzhd欧美 | 久久久精品网站 | 中文字幕在线看视频 | 国产在线视频在线观看 | 成人三级黄色 | 久久久久久久av | 九九精品视频在线 | 色国产视频 | 激情开心站 | 超碰99人人| 日韩在线高清免费视频 | 久久视频精品在线观看 | 国产精品美女久久久久久久 | 99婷婷狠狠成为人免费视频 | 亚洲 欧美变态 另类 综合 | 欧美日韩超碰 | 国产中文字幕在线免费观看 | 日本中文乱码卡一卡二新区 | 亚洲精品麻豆 | 久久国产精品99国产精 | 在线成人中文字幕 | 狠狠色丁香久久婷婷综合五月 | 91免费版成人 | 久久这里只有精品视频99 | 91九色porny在线 | 精品国产不卡 | 欧美成年黄网站色视频 | av软件在线观看 | 国产精品观看在线亚洲人成网 | 天天干天天干 | 91在线免费看片 | 免费看一及片 | 日韩国产精品一区 | 久久激情久久 | 久久99亚洲精品久久 | 亚洲最新视频在线 | 久久久精品网站 | 欧美精品中文在线免费观看 | 草免费视频 | 99色视频 | 一区二区精品在线 | 亚洲一级黄色 | 欧美成人免费在线 | 亚洲黄色激情小说 | 天天射射天天 | 日韩网站在线看片你懂的 | 中文字幕在线观看一区二区三区 | 四虎最新入口 | 99久久久国产精品 | 麻豆传媒视频在线免费观看 | 国产伦精品一区二区三区无广告 | 在线三级av | 国产在线播放一区二区三区 | 免费看麻豆 | av一级免费| 天天天天天天干 | 精品国产1区二区 | 91精品网站在线观看 | 操高跟美女 | 蜜臀av夜夜澡人人爽人人 | 99爱视频 | 亚洲欧洲精品在线 | 中文字幕av在线电影 | 高清av影院 | 国产精品一区二区精品视频免费看 | 日韩高清av在线 | 日韩在线免费小视频 | www.久久久.cum | av资源在线看 | 欧美 激情在线 | 免费观看十分钟 | 国产精品久久久久久久免费观看 | 五月天激情开心 | 91在线精品播放 | 国际精品网| 69亚洲视频 | 97视频在线免费观看 | 日韩精品中文字幕一区二区 | 国产一区二区三区免费在线 | 欧美片网站yy | 国产香蕉视频在线观看 | 亚洲精品久久激情国产片 | 91综合视频在线观看 | 午夜精品久久一牛影视 | 人人躁 | 91九色在线视频观看 | 五月综合在线观看 | 天天看天天干天天操 | 天堂av观看 | 97超碰人人模人人人爽人人爱 | 欧美在线视频免费 | 国产女人免费看a级丨片 | 91av在线不卡 | 久草在线观看资源 | 97成人资源| 欧美亚洲另类在线视频 | 久久av免费观看 | 国产欧美最新羞羞视频在线观看 | 美女久久99 | 国内精品久久久久 | 精品久久久久久久久久久久久久久久久久 | 久久久久久高潮国产精品视 | 成人av直播 | 91在线看免费 | 国产在线97| 高清不卡一区二区在线 | 99国产精品久久久久久久久久 | 激情伊人 | 欧洲精品亚洲精品 | 国产一级电影免费观看 | 精品亚洲视频在线 | 91精品国产欧美一区二区 | 欧美日本一二三 | 国产精品一区二区三区电影 | 婷五月激情 | 日日射天天射 | 少妇性xxx | 99精品视频网 | 欧美淫aaa免费观看 日韩激情免费视频 | 国产精品第72页 | 欧美一区二区三区在线 | 欧美亚洲xxx| 九九国产视频 | 精品国产欧美 | 99国产一区二区三精品乱码 | 99 精品 在线 | 日韩一区二区三区在线观看 | 亚洲成人999 | 日韩在线观看小视频 | 成人av视屏 | 中文免费在线观看 | 亚洲一区 影院 | 国产视频资源 | 日韩欧美综合在线视频 | 中文字幕视频网站 | 亚洲成人二区 | 亚洲激情在线观看 | 中文字幕一区二区三区视频 | 夜夜干夜夜 | 亚洲一区日韩精品 | 国产一区不卡在线 | 天天天天色综合 | 国产亚洲字幕 | 麻豆一区在线观看 | 四虎成人精品在永久免费 | 亚洲一区美女视频在线观看免费 | 波多野结衣电影一区二区 | 欧美日韩在线视频一区 | 97在线资源 | 天天爱天天舔 | 日本爱爱免费 | 久操中文字幕在线观看 | 奇米网444| 91亚洲精品久久久蜜桃网站 | 国产精品久久久久久影院 | 91成人免费 | 日日夜夜中文字幕 | 久久影院一区 | 色网站中文字幕 | 欧美一区二区免费在线观看 | 在线观看激情av | 国产在线精品二区 | 亚洲永久av | 成年人在线观看 | 最新国产精品亚洲 | 亚洲日本在线一区 | 最近中文字幕mv | 日日碰狠狠躁久久躁综合网 | 狠狠久久伊人 | 久久伊人八月婷婷综合激情 | 中文字幕在线不卡国产视频 | 中文成人字幕 | 精品福利在线视频 | 欧美精品一区二区三区一线天视频 | 午夜91在线| 日韩电影精品 | 国内精品久久天天躁人人爽 | 中文字幕人成乱码在线观看 | 免费一级片久久 | av在线网站大全 | 亚洲天堂网在线观看视频 | 国产精品久久久久av免费 | 免费a视频| 成人国产精品免费观看 | 亚洲国产精品电影 | 日韩黄色免费在线观看 | 免费看的黄色录像 | 久久精品视频在线免费观看 | 久久国内免费视频 | 99精品在线观看 | 久操伊人 | 91精品久久久久 | 91看片看淫黄大片 | 99 精品 在线 | 日日操日日插 | 日韩免费播放 | 久久精品亚洲一区二区三区观看模式 | av福利在线免费观看 | 国产91大片 | 国产在线视频一区二区三区 | 日韩在线三区 | 欧美男同网站 | 国产 精品 资源 | 日韩精品在线观看视频 | 久久成人免费电影 | 成人av在线一区二区 | 国产黄色美女 | 精品国产诱惑 | 久久精品一区二区三区视频 | 国产麻豆剧传媒免费观看 | 黄色电影在线免费观看 | 99麻豆视频 | 欧美日韩视频免费看 | 久久久久久久av | 伊人久久电影网 | 五月天婷亚洲天综合网精品偷 | 国产成人综合精品 | 91成人在线看| 最近中文字幕大全中文字幕免费 | 久久精品影片 | 91在线免费视频 | 激情av在线播放 | 国产一二三四在线视频 | 亚洲尺码电影av久久 | 日本三级香港三级人妇99 | 欧美成人在线网站 | 亚洲一区动漫 | 午夜性色| 在线国产福利 | 久久热首页 | 国产a免费| 久草国产视频 | 久草国产精品 | 日韩免费不卡视频 |