示例#1
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Конструктор класса
 /// </summary>
 /// <param name="parSourcePos">Положение источника сегмента лазерного луча</param>
 /// <param name="parSoursVector">Вектор направления сегмента лазерного луча</param>
 public Laser(Point parSourcePos, Point parSoursVector)
 {
     _LaserSegments = new List<LaserSource>();
     _LaserSegments.Add(new LaserSource(parSourcePos, parSoursVector));
     _LaserSource = _LaserSegments[0];
     _SegmentsCount = _LaserSegments.Count;
 }
示例#2
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Конструктор класса
 /// </summary>
 /// <param name="parLaserSource">сегмент лазерного луча</param>
 public Laser(LaserSource parLaserSource)
 {
     _LaserSegments = new List<LaserSource>();
     _LaserSegments.Add(parLaserSource);
     _LaserSource = parLaserSource;
     _SegmentsCount = _LaserSegments.Count;
 }
示例#3
0
        /// <summary>
        /// Конструктор формы
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            _Laser = new LaserSource(new Point((int)numericUpDownLaserPosX.Value,(int)numericUpDownLaserPosY.Value), new Point(5,5));
            _Mirrors = new List<Point>();
            _Holes = new List<Point>();
            _Goals = new List<Point>();

            _Game = new LasersGame(_FieldWidth, _FieldHeight);

            timer1.Start();
        }
示例#4
0
        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="parFieldWidth">Ширина поля</param>
        /// <param name="parFieldHeight">Выста поля</param>
        /// <param name="parLaser">Лазер</param>
        /// <param name="parGoal">Целевая точка</param>
        /// <param name="parMirrors">Зеркала</param>
        public LasersGame(int parFieldWidth, int parFieldHeight, LaserSource parLaser, List<Goal> parGoals, List<Square> parMirrors, List<Square> parHoles)
        {
            _FieldHeight = parFieldHeight;
            _FieldWidth = parFieldWidth;

            parLaser.Vector = new Point(parLaser.Vector.X * COORDINATE_RATIO / (2 * Math.Abs(parLaser.Vector.X)) ,
                                        parLaser.Vector.Y * COORDINATE_RATIO / (2 * Math.Abs(parLaser.Vector.Y)));

            _Laser = new Laser(parLaser);

            _Goals = parGoals;

            _Mirrors = parMirrors;

            _Holes = parHoles;
        }
示例#5
0
        /// <summary>
        /// Нажатие кнопки "Загрузить пример"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonOpen_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.ShowDialog();
                using (FileStream fs = File.Open(ofd.FileName, FileMode.Open))
                {
                    _Game = null;
                    BinaryFormatter formatter = new BinaryFormatter();
                    _Game = (LasersGame)formatter.Deserialize(fs);
                }

                _FieldHeight = _Game.FieldHeight;
                _FieldWidth = _Game.FieldWidth;
                numericUpDownHeightField.Value = _FieldHeight;
                numericUpDownWidhField.Value = _FieldWidth;

                _Laser = _Game.Laser.LaserSource;
                numericUpDownLaserPosX.Value = _Laser.Position.X;
                numericUpDownLaserPosY.Value = _Laser.Position.Y;
                if (_Laser.Vector == new Point(5, 5)) { radioButton45.Checked = true; }
                if (_Laser.Vector == new Point(-5, 5)) { radioButton135.Checked = true; }
                if (_Laser.Vector == new Point(-5, -5)) { radioButton225.Checked = true; }
                if (_Laser.Vector == new Point(5, -5)) { radioButton315.Checked = true; }

                _Mirrors = _Game.GetMirrors();
                _Holes = _Game.GetHoles();
                _Goals = _Game.GetGoals();
                OutMirrorsList();
                OutHolesList();
                OutGoalsList();

                _Action = Action.None;
            }
            catch
            {
                MessageBox.Show("Пример не был загружен");
            }
        }
示例#6
0
        /// <summary>
        /// Нажатие кнопки "Отменить"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonCancel_Click(object sender, EventArgs e)
        {
            _FieldHeight = _Game.FieldHeight;
            _FieldWidth = _Game.FieldWidth;
            numericUpDownHeightField.Value = _FieldHeight;
            numericUpDownWidhField.Value = _FieldWidth;

            _Laser = _Game.Laser.LaserSource;
            numericUpDownLaserPosX.Value = _Laser.Position.X;
            numericUpDownLaserPosY.Value = _Laser.Position.Y;
            if (_Laser.Vector == new Point(5, 5)) { radioButton45.Checked = true; }
            if (_Laser.Vector == new Point(-5, 5)) { radioButton135.Checked = true; }
            if (_Laser.Vector == new Point(-5, -5)) { radioButton225.Checked = true; }
            if (_Laser.Vector == new Point(5, -5)) { radioButton315.Checked = true; }

            OutMirrorsList();
            OutHolesList();
            OutGoalsList();

            _Action = Action.None;
        }
示例#7
0
        /// <summary>
        /// Установить лазер
        /// </summary>
        /// <param name="parPos">Положение лазера</param>
        /// <param name="parVector">Вектор направления лазера</param>
        public void SetUpLaser(LaserSource parLaserSource)
        {
            if (PointInField(parLaserSource.Position))
            {
                Point vector = parLaserSource.Vector;

                vector.X = parLaserSource.Vector.X * COORDINATE_RATIO / (2 * Math.Abs(parLaserSource.Vector.X));
                vector.Y = parLaserSource.Vector.Y * COORDINATE_RATIO / (2 * Math.Abs(parLaserSource.Vector.Y));
                parLaserSource.Vector = vector;

                _Laser = new Laser(parLaserSource);

                CalculateLaser();
            }
        }
示例#8
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Добавить новый сегмент луча
 /// </summary>
 /// <param name="parLaserSource">Новый сегмент луча</param>
 public void AddSegment(LaserSource parLaserSource)
 {
     _LaserSegments.Add(parLaserSource);
     _LaserSource = _LaserSegments[0];
     _SegmentsCount = _LaserSegments.Count;
 }
示例#9
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Удалить сегмент луча и все следующие за ним сегменты
 /// </summary>
 /// <param name="parIndex">Индекс удаляемого егмента луча</param>
 public void RemoveSegment(int parIndex)
 {
     _LaserSegments.RemoveRange(parIndex, _SegmentsCount - parIndex);
     _LaserSource = _LaserSegments[0];
     _SegmentsCount = _LaserSegments.Count;
 }
示例#10
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Удалить сегмент луча и все следующие за ним сегменты
 /// </summary>
 /// <param name="parSourcePos">Положение источника лазерного луча</param>
 /// <param name="parSoursVector">Вектор направления лазерного луча</param>
 public void RemoveSegment(Point parSourcePos, Point parSoursVector)
 {
     _LaserSegments.RemoveRange(_LaserSegments.IndexOf(new LaserSource(parSourcePos, parSoursVector)), - _SegmentsCount - _LaserSegments.IndexOf(new LaserSource(parSourcePos, parSoursVector)));
     _LaserSource = _LaserSegments[0];
     _SegmentsCount = _LaserSegments.Count;
 }
示例#11
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Удалить сегмент луча и все следующие за ним сегменты
 /// </summary>
 /// <param name="parLaserSource">Удаляемый сегмент cегмент луча</param>
 public void RemoveSegment(LaserSource parLaserSource)
 {
     _LaserSegments.RemoveRange(_LaserSegments.IndexOf(parLaserSource), _SegmentsCount - _LaserSegments.IndexOf(parLaserSource));
     _LaserSource = _LaserSegments[0];
     _SegmentsCount = _LaserSegments.Count;
 }
示例#12
0
文件: Laser.cs 项目: packpacka/Lasers
 /// <summary>
 /// Добавить новый сегмент луча 
 /// </summary>
 /// <param name="parSourcePos">Положение источника лазерного луча</param>
 /// <param name="parSoursVector">Вектор направления лазерного луча</param>
 public void AddSegment(Point parSourcePos, Point parSoursVector)
 {
     _LaserSegments.Add(new LaserSource(parSourcePos, parSoursVector));
     _LaserSource = _LaserSegments[0];
     _SegmentsCount = _LaserSegments.Count;
 }