//画出逻辑边界对应位置 public void ShowLogicBorder() { DeskBackground.Opacity = 0.5; //画出边框 for (int i = 0; i < 18; i++) { Line line1 = new Line(); line1.Stroke = System.Windows.Media.Brushes.Black; line1.StrokeThickness = 3; line1.X1 = UIConstant.Logic2AbsX(gameControl.Walls[i].X1) + Constant.Ball_Radius; line1.Y1 = UIConstant.Logic2AbsY(gameControl.Walls[i].Y1) + Constant.Ball_Radius; line1.X2 = UIConstant.Logic2AbsX(gameControl.Walls[i].X2) + Constant.Ball_Radius; line1.Y2 = UIConstant.Logic2AbsY(gameControl.Walls[i].Y2) + Constant.Ball_Radius; Desk.Children.Add(line1); } //画出洞口 for (int i = 0; i < 6; i++) { Ellipse circle = new Ellipse(); circle.Stroke = System.Windows.Media.Brushes.Black; circle.StrokeThickness = 3; circle.Width = 2 * gameControl.Holes[i].GetRadius(); circle.Height = 2 * gameControl.Holes[i].GetRadius(); Canvas.SetLeft(circle, UIConstant.Logic2AbsX(gameControl.Holes[i].Position.X) + Constant.Ball_Radius - gameControl.Holes[i].GetRadius()); Canvas.SetTop(circle, UIConstant.Logic2AbsY(gameControl.Holes[i].Position.Y) + Constant.Ball_Radius - gameControl.Holes[i].GetRadius()); Desk.Children.Add(circle); } for (int i = 0; i < 12; i++) { Ellipse circle = new Ellipse(); circle.Stroke = System.Windows.Media.Brushes.Red; circle.StrokeThickness = 2; circle.Width = 5; circle.Height = 5; Canvas.SetLeft(circle, UIConstant.Logic2AbsX(gameControl.Corners[i].X) + Constant.Ball_Radius - 1); Canvas.SetTop(circle, UIConstant.Logic2AbsY(gameControl.Corners[i].Y) + Constant.Ball_Radius - 1); Desk.Children.Add(circle); } }
//移动、摆球、球杆旋转 private void Desk_MouseMove(object sender, MouseEventArgs e) { if (gameControl.currPlayer.club != club.GetBody()) { club.SetBody(gameControl.currPlayer.club); } if (gameControl.status == Status.SetBallandWaitHit && !gameControl.setLock) { Point point = e.GetPosition((Canvas)sender); Vector2 logicPoint = UIConstant.PointTrans(point); //System.Console.Out.WriteLine("绝对坐标 X: " + point.X + " Y: " + point.Y); //System.Console.Out.WriteLine("逻辑坐标 X: " + logicPoint.X + " Y: " + logicPoint.Y); if (gameControl.TrySetBall(logicPoint)) { gameControl.SetBall(logicPoint); } } else if (gameControl.status == Status.WaitPlayerHit || (gameControl.status == Status.SetBallandWaitHit && gameControl.setLock)) {//等待击球 if (!gameControl.isXuLi) { //球杆旋转 Point point = e.GetPosition((Canvas)sender); Vector2 logicPoint = UIConstant.PointTrans(point); club.RotateClub(logicPoint); } } //System.Console.Out.WriteLine(sender.GetType()); //Point point = e.GetPosition((Canvas)sender); //System.Console.Out.WriteLine("当前坐标 X: "+point.X+" Y: "+point.Y); }