예제 #1
0
 private void El_MouseDown(object sender, MouseButtonEventArgs e)
 {
     if (m_Sost == sost.Set)
     {
         Line l2 = new Line();
         if (!m_CanvasUnderWork.Children.Contains(l1))
         {
             m_CanvasUnderWork.Children.Add(l1);
         }
         m_Sost          = sost.Set1;
         iCurrentElement = (int)(sender as Ellipse).Tag;
         for (int i = m_CanvasUnderWork.Children.Count - 1; i >= 0; i--)
         {
             if (m_CanvasUnderWork.Children[i].GetType() == l2.GetType() && (int)((m_CanvasUnderWork.Children[i] as Line).Tag) == iCurrentElement)
             {
                 m_CanvasUnderWork.Children.Remove(m_CanvasUnderWork.Children[i]);
             }
         }
     }
     else if (m_Sost == sost.Create)
     {
         m_Sost          = sost.MoveUnit;
         iCurrentElement = (int)(sender as Ellipse).Tag;
     }
 }
예제 #2
0
 private void canvas_MouseUp(object sender, MouseButtonEventArgs e)
 {
     if (m_Sost == sost.MoveUnit)
     {
         m_Sost = sost.Create;
     }
 }
예제 #3
0
 private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
 {
     if (m_Sost == sost.Create && m_lUnitsUnderWork.Count < iCount)
     {
         button1.IsEnabled = true;
         Ellipse el = new Ellipse();
         m_lUnitsUnderWork.Add(new Unit(Mouse.GetPosition(m_CanvasUnderWork).X, Mouse.GetPosition(m_CanvasUnderWork).Y, el));
         m_CanvasUnderWork.Children.Add(el);
         if (m_CanvasUnderWork == canvas)
         {
             el.Fill = m_brushForOurUnit;
         }
         else
         {
             el.Fill = m_brushForEnemyUnit;
         }
         el.Stroke     = Brushes.Green;
         el.MouseDown += El_MouseDown;
         el.Tag        = m_lUnitsUnderWork.Count;
         Canvas.SetLeft(el, m_lUnitsUnderWork.Last().x - 20);
         Canvas.SetTop(el, m_lUnitsUnderWork.Last().y - 20);
     }
     else if (m_Sost == sost.Set1)
     {
         double x = Mouse.GetPosition(m_CanvasUnderWork).X;
         double y = Mouse.GetPosition(m_CanvasUnderWork).Y;
         if (m_lUnitsUnderWork[iCurrentElement].IsCheck(x, y))
         {
             l1.Tag = iCurrentElement;
             m_lUnitsUnderWork[iCurrentElement].m_l1 = l1;
             m_lUnitsUnderWork[iCurrentElement].SetFirstR(x, y, bIsSetEnemy);
             l1                 = new Line();
             l1.Tag             = -1;
             l1.Stroke          = Brushes.Black;
             l1.StrokeThickness = 2;
             m_CanvasUnderWork.Children.Add(l1);
             m_Sost = sost.Set2;
         }
     }
     else if (m_Sost == sost.Set2)
     {
         double x = Mouse.GetPosition(m_CanvasUnderWork).X;
         double y = Mouse.GetPosition(m_CanvasUnderWork).Y;
         m_Sost = sost.Create;
         l1.Tag = iCurrentElement;
         m_lUnitsUnderWork[iCurrentElement].m_l2 = l1;
         m_lUnitsUnderWork[iCurrentElement].SetSecondR(x, y, bIsSetEnemy);
         l1                 = new Line();
         l1.Tag             = -1;
         l1.Stroke          = Brushes.Black;
         l1.StrokeThickness = 2;
         m_CanvasUnderWork.Children.Add(l1);
         button1.IsEnabled = true;
         if (IsUnitsSet())
         {
             button.IsEnabled = true;
         }
     }
 }
예제 #4
0
 private void vPrepare()
 {
     button1.IsEnabled = false;
     button.IsEnabled  = false;
     if (bIsPC)
     {
         for (int i = 0; i < m_lMyunits.Count; i++)
         {
             m_lMyunits[i].vCorrect(true);
             m_lUnitsofEnemy[i].vCorrect(false);
         }
     }
     else
     {
         for (int i = 0; i < m_lMyunits.Count; i++)
         {
             double x, y;
             if (m_lMyunits[i].first_r > m_lMyunits[i].second_r)
             {
                 double temp = m_lMyunits[i].first_r;
                 m_lMyunits[i].first_r  = m_lMyunits[i].second_r;
                 m_lMyunits[i].second_r = temp;
             }
             m_lMyunits[i].vCorrect(true);
             Random rnd = new Random();
             do
             {
                 x = rnd.NextDouble() * canvasofenemies.Width;
                 y = rnd.NextDouble() * canvasofenemies.Height;
             }while (!IsPlaceAvailable(x, y));
             Ellipse el = new Ellipse();
             canvasofenemies.Children.Add(el);
             el.Height = 40;
             if (bVisibility)
             {
                 el.Visibility = Visibility.Visible;
             }
             else
             {
                 el.Visibility = Visibility.Hidden;
             }
             el.Width                = 40;
             el.StrokeThickness      = 1;
             el.Fill                 = m_brushForEnemyUnit;
             el.Stroke               = Brushes.Green;
             el.Tag                  = m_lUnitsofEnemy.Count;
             el.MouseLeftButtonDown += El_MouseLeftButtonDown;
             Canvas.SetLeft(el, x - 20);
             Canvas.SetTop(el, y - 20);
             m_lUnitsofEnemy.Add(new Unit(x, y, el));
             m_lUnitsofEnemy.Last().first_r  = rnd.NextDouble() * -Unit.dMaxAbsR;
             m_lUnitsofEnemy.Last().second_r = rnd.NextDouble() * Unit.dMaxAbsR;
         }
     }
     m_Sost = sost.Play;
     MessageBox.Show("Параметры углов выстрела немного скорректированы, чтобы снизить количество выстрелов, не попадающих по врагу");
     m_timer.Start();
 }
예제 #5
0
        public MainWindow()
        {
            iLevel              = 0;
            m_brushForOurUnit   = new ImageBrush(new BitmapImage(new Uri("00.png", UriKind.Relative)));
            m_brushForEnemyUnit = new ImageBrush(new BitmapImage(new Uri("01.png", UriKind.Relative)));
            m_bClean            = true;
            EnterCount ocr = new EnterCount();

            InitializeComponent();
            if (ocr.ShowDialog() == true)
            {
                bIsPC = (bool)ocr.checkBox1.IsChecked;
                if (bIsPC)
                {
                    button.Content = "Настроить вражеские юниты";
                }
                iCount        = ocr.iCount;
                iOurArmor     = iCount * 15;
                iArmorOfEnemy = iOurArmor;
                m_Sost        = sost.Create;
                bVisibility   = ocr.bVisibility;
            }
            else
            {
                Close();
            }
            brush0.ImageSource = new BitmapImage(new Uri("pole1.jpg", UriKind.Relative));
            brush1.ImageSource = new BitmapImage(new Uri("pole2.jpg", UriKind.Relative));
            m_CanvasUnderWork  = canvas;
            m_lUnitsUnderWork  = m_lMyunits;

            // настройки подключения к Интернету

            if (bIsOnline)
            {
                var      streamReader = new StreamReader("net_settings.dat");
                string[] buffer       = streamReader.ReadToEnd().Split(':');
                streamReader.Close();
                ipAddress = IPAddress.Parse(buffer[0]);
                iPort     = int.Parse(buffer[1]);
                Client    = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                Client.Connect(ipAddress, iPort);
            }
            l1                 = new Line();
            l1.Tag             = -1;
            l1.Stroke          = Brushes.Black;
            l1.StrokeThickness = 2;
            m_timer            = new System.Windows.Forms.Timer();
            m_timer.Interval   = 900;
            m_timer.Tick      += M_timer_Tick;
        }
예제 #6
0
 private void vReload()
 {
     canvas.MouseDown          += Canvas_MouseDown;
     canvas.MouseMove          += canvas_MouseMove;
     canvasofenemies.MouseDown -= Canvas_MouseDown;
     canvasofenemies.MouseMove -= canvas_MouseMove;
     canvas.Children.Clear();
     canvasofenemies.Children.Clear();
     m_brushForOurUnit.ImageSource   = new BitmapImage(new Uri(iLevel.ToString() + "0.png", UriKind.Relative));
     m_brushForEnemyUnit.ImageSource = new BitmapImage(new Uri(iLevel.ToString() + "1.png", UriKind.Relative));
     brush0.ImageSource = new BitmapImage(new Uri(iLevel.ToString() + "1.jpg", UriKind.Relative));
     brush1.ImageSource = new BitmapImage(new Uri(iLevel.ToString() + "2.jpg", UriKind.Relative));
     m_lMyunits         = new List <Unit>();
     m_lUnitsofEnemy    = new List <Unit>();
     m_Sost             = sost.Create;
     iOurArmor          = iCount * 15;
     iArmorOfEnemy      = iCount * 15;
     label1.Content     = "Количество оружия: " + iOurArmor;
     label2.Content     = "Количество оружия: " + iArmorOfEnemy;
 }
예제 #7
0
 private void button_Click(object sender, RoutedEventArgs e)
 {
     if (bIsPC && bIsSetEnemy == false)
     {
         button.IsEnabled  = false;
         button1.IsEnabled = false;
         button.Content    = "Играть";
         bIsSetEnemy       = true;
         canvas.Children.Remove(l1);
         canvasofenemies.MouseDown += Canvas_MouseDown;
         canvasofenemies.MouseMove += canvas_MouseMove;
         canvas.MouseDown          -= Canvas_MouseDown;
         canvas.MouseMove          -= canvas_MouseMove;
         m_Sost            = sost.Create;
         m_CanvasUnderWork = canvasofenemies;
         m_lUnitsUnderWork = m_lUnitsofEnemy;
     }
     else
     {
         vPrepare();
     }
 }
예제 #8
0
 private void button1_Click(object sender, RoutedEventArgs e)
 {
     button1.IsEnabled = false;
     m_Sost            = sost.Set;
 }