Как связать между собой 3 класса - C#
Формулировка задачи:
Подскажите пожалуйста, как можно связать между собой 3 класса.
Решение задачи: «Как связать между собой 3 класса»
textual
Листинг программы
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- using System.Windows.Shapes;
- namespace Lines
- {
- /// <summary>
- /// Логика взаимодействия для MainWindow.xaml
- /// </summary>
- public partial class MainWindow
- {
- public Verify vf;
- private Point _pt;
- public myShape ms = new myShape(vf);
- public MainWindow()
- {
- InitializeComponent();
- }
- private void Button_Click_1(object sender, RoutedEventArgs e)
- {
- if (Field.Children.Count == 101)
- {
- Field.Children.RemoveRange(1, 101);
- ms.gridArray = new myShape[10,10];
- }
- for (int i = 0; i < 10; i++)
- for (int j = 0; j < 10; j++)
- {
- ms.Start(i,j);
- Grid.SetRow(ms._el, i);
- Grid.SetColumn(ms._el, j);
- Field.Children.Add(ms._el);
- ms._el.MouseLeftButtonDown += el_MouseLeftButtonDown;
- ms._el.MouseLeftButtonUp += el_MouseLeftButtonUp;
- }
- }
- public void el_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- ms._el = sender as Ellipse;
- _pt = e.GetPosition(this);
- var i = (int)(_pt.Y / 40);
- var j = (int)((_pt.X - 129) / 40);
- ms.ms1 = new myShape(ms._el, ms.col, i, j);
- }
- public void el_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
- {
- ms._el = sender as Ellipse;
- _pt = e.GetPosition(this);
- var i = (int)(_pt.Y / 40);
- var j = (int)((_pt.X - 129) / 40);
- ms.ms2 = new myShape(ms._el, ms.col, i, j);
- ms.Animation(ms.ms1, ms.ms2);
- }
- }
- }
- класс myShape
- using System;
- using System.Collections.Generic;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- namespace Lines
- {
- public class myShape : Verify
- {
- public Ellipse el;
- public int x;
- public int y;
- public Color ch;
- public myShape(Ellipse El, Color Ch, int X, int Y)
- {
- ch = Ch;
- el = El;
- x = X;
- y = Y;
- }
- public myShape(Verify Vf)
- {
- vf = Vf;
- }
- public myShape ms1, ms2;
- public Verify vf;
- readonly Color[] _cl = { Colors.Black, Colors.Chartreuse, Colors.Blue, Colors.Crimson, Colors.Orchid, Colors.Yellow };
- readonly Color[,] _fieldColors = new Color[10, 10];
- public Ellipse _el;
- public Color col;
- readonly Random _rnd = new Random();
- readonly DoubleAnimation _elW = new DoubleAnimation();
- readonly DoubleAnimation _elH = new DoubleAnimation();
- public myShape[,] gridArray = new myShape[10, 10];
- public List<myShape> list = new List<myShape>();
- public void Start(int i, int j)
- {
- int color = _rnd.Next(0, 6);
- _fieldColors[i, j] = _cl[color];
- col = _cl[color];
- _el = new Ellipse { Width = 1, Height = 1, Fill = new SolidColorBrush(col) };
- _elW.From = _el.Width;
- _elW.To = 35;
- _elW.Duration = new Duration(TimeSpan.Parse("0:0:0,4"));
- _elH.From = _el.Height;
- _elH.To = 35;
- _elH.Duration = new Duration(TimeSpan.Parse("0:0:0,4"));
- _el.BeginAnimation(FrameworkElement.WidthProperty, _elW);
- _el.BeginAnimation(FrameworkElement.HeightProperty, _elH);
- gridArray[i, j] = new myShape(_el, col, i, j);
- }
- public void Animation(myShape ms1, myShape ms2)
- {
- var ta = new ThicknessAnimation();
- var ta1 = new ThicknessAnimation();
- if (ms1.x == ms2.x) //горизонтальоне перемещение
- {
- if (ms1.y + 1 == ms2.y)
- {
- ta.From = ms1.el.Margin;
- ta.To = new Thickness(ms1.el.Width + 5, 0, -ms1.el.Width - 5, 0);
- ta1.From = ms2.el.Margin;
- ta1.To = new Thickness(-ms2.el.Width - 5, 0, ms2.el.Width + 5, 0);
- ta1.Completed += ta_Completed;
- ta.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ta1.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ms1.el.BeginAnimation(FrameworkElement.MarginProperty, ta);
- ms2.el.BeginAnimation(FrameworkElement.MarginProperty, ta1);
- }
- if (ms1.y - 1 == ms2.y)
- {
- ta.From = ms2.el.Margin;
- ta.To = new Thickness(ms2.el.Width + 5, 0, -ms2.el.Width - 5, 0);
- ta1.From = ms1.el.Margin;
- ta1.To = new Thickness(-ms1.el.Width - 5, 0, ms1.el.Width + 5, 0);
- ta.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ta1.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ta1.Completed += ta_Completed;
- ms1.el.BeginAnimation(FrameworkElement.MarginProperty, ta1);
- ms2.el.BeginAnimation(FrameworkElement.MarginProperty, ta);
- }
- }
- if (ms1.y == ms2.y)//вертикальное перемещение
- {
- if (ms1.x + 1 == ms2.x)
- {
- ta.From = ms1.el.Margin;
- ta.To = new Thickness(0, ms1.el.Height + 5, 0, -ms1.el.Height - 5);
- ta1.From = ms2.el.Margin;
- ta1.To = new Thickness(0, -ms1.el.Height - 5, 0, ms1.el.Height + 5);
- ta.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ta1.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ta.Completed += ta_Completed;
- ms1.el.BeginAnimation(FrameworkElement.MarginProperty, ta);
- ms2.el.BeginAnimation(FrameworkElement.MarginProperty, ta1);
- }
- if (ms1.x - 1 == ms2.x)
- {
- ta.From = ms2.el.Margin;
- ta.To = new Thickness(0, ms2.el.Height + 5, 0, -ms2.el.Height - 5);
- ta1.From = ms1.el.Margin;
- ta1.To = new Thickness(0, -ms1.el.Height - 5, 0, ms1.el.Height + 5);
- ta.Completed += ta_Completed;
- ta.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ta1.Duration = new Duration(TimeSpan.Parse("0:0:2"));
- ms1.el.BeginAnimation(FrameworkElement.MarginProperty, ta1);
- ms2.el.BeginAnimation(FrameworkElement.MarginProperty, ta);
- }
- }
- }
- void ta_Completed(object sender, EventArgs e)
- {
- ms1.el.BeginAnimation(FrameworkElement.MarginProperty, null);
- ms2.el.BeginAnimation(FrameworkElement.MarginProperty, null);
- if (ms1.x == ms2.x) // горизонтальное перемещение
- {
- if (ms1.y + 1 == ms2.y)
- {
- ms1.y++;
- ms2.y--;
- ms1.el.Margin = new Thickness(0);
- ms2.el.Margin = new Thickness(0);
- Grid.SetColumn(ms1.el, ms1.y);
- Grid.SetColumn(ms2.el, ms2.y);
- }
- else if (ms1.y - 1 == ms2.y)
- {
- ms1.y--;
- ms2.y++;
- ms1.el.Margin = new Thickness(0);
- ms2.el.Margin = new Thickness(0);
- Grid.SetColumn(ms1.el, ms1.y);
- Grid.SetColumn(ms2.el, ms2.y);
- }
- }
- if (ms1.y == ms2.y) //вертикальное перемещение
- {
- if (ms1.x + 1 == ms2.x)
- {
- ms1.x++;
- ms2.x--;
- ms1.el.Margin = new Thickness(0);
- ms2.el.Margin = new Thickness(0);
- Grid.SetRow(ms1.el, ms1.x);
- Grid.SetRow(ms2.el, ms2.x);
- }
- else if (ms1.x - 1 == ms2.x)
- {
- ms1.x--;
- ms2.x++;
- ms1.el.Margin = new Thickness(0);
- ms2.el.Margin = new Thickness(0);
- Grid.SetRow(ms1.el, ms1.x);
- Grid.SetRow(ms2.el, ms2.x);
- }
- }
- vf.Sovpadenie();
- }
- public void Disapear(int i, int j)
- {
- _elW.From = _el.Width;
- _elW.To = 0;
- _elW.Duration = new Duration(TimeSpan.Parse("0:0:1"));
- _elH.From = _el.Height;
- _elH.To = 0;
- _elH.Duration = new Duration(TimeSpan.Parse("0:0:1"));
- _elH.Completed += _elH_Completed;
- gridArray[i, j].el.BeginAnimation(Ellipse.WidthProperty, _elW);
- gridArray[i, j].el.BeginAnimation(Ellipse.HeightProperty, _elH);
- }
- void _elH_Completed(object sender, EventArgs e)
- {
- //int color = _rnd.Next(0, 6);
- //_fieldColors[i, j] = _cl[color];
- //col = _cl[color];
- //_el = new Ellipse { Width = 1, Height = 1, Fill = new SolidColorBrush(col) };
- //_elW.From = _el.Width;
- //_elW.To = 35;
- //_elW.Duration = new Duration(TimeSpan.Parse("0:0:0,4"));
- //_elH.From = _el.Height;
- //_elH.To = 35;
- //_elH.Duration = new Duration(TimeSpan.Parse("0:0:0,4"));
- //_el.BeginAnimation(FrameworkElement.WidthProperty, _elW);
- //_el.BeginAnimation(FrameworkElement.HeightProperty, _elH);
- //gridArray[i, j] = new myShape(_el, col, i, j);
- }
- }
- класс Verify
- namespace Lines
- {
- public class Verify :MainWindow
- {
- private int _score;
- public void Sovpadenie()
- {
- for (int i = 0; i <= 7; i++)
- {
- for (int j = 0; j <= 7; j++)
- {
- if ((ms.gridArray[i, j].ch.B == ms.gridArray[i, j + 1].ch.B) &&
- (ms.gridArray[i, j].ch.B == ms.gridArray[i, j + 2].ch.B))
- {
- ms.Disapear(i, j);
- _score += 3;
- //ScoreLabel.Content = _score.ToString();
- //Sovpadenie();
- }
- if ((ms.gridArray[i, j].ch.B == ms.gridArray[i + 1, j].ch.B) &&
- (ms.gridArray[i, j].ch.B == ms.gridArray[i + 2, j].ch.B))
- {
- _score += 3;
- //ScoreLabel.Content = _score.ToString();
- //Sovpadenie();
- }
- }
- }
- for (int i = 8; i < 9; i++)
- {
- for (int j = 0; j < 7; j++)
- {
- if ((ms.gridArray[i, j].ch.B == ms.gridArray[i, j + 1].ch.B) &&
- (ms.gridArray[i, j].ch.B == ms.gridArray[i, j + 2].ch.B))
- {
- _score += 3;
- //ScoreLabel.Content = _score.ToString();
- //Sovpadenie();
- }
- }
- }
- for (int j = 8; j < 9; j++)
- {
- for (int i = 0; i < 7; i++)
- {
- if ((ms.gridArray[i, j].ch.B == ms.gridArray[i + 1, j].ch.B) &&
- (ms.gridArray[i, j].ch.B == ms.gridArray[i + 2, j].ch.B))
- {
- _score += 3;
- //ScoreLabel.Content = _score.ToString();
- //Sovpadenie();
- }
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д