Ejemplo n.º 1
0
        int xstart = -1, ystart = -1; // координаты стартовой и конечной точки

        #endregion Fields

        #region Constructors

        public Form1()
        {
            InitializeComponent();
            timer = new System.Windows.Forms.Timer();
            timer.Interval = time; //интервал между срабатываниями 500 миллисекунд
            timer.Tick += new EventHandler(trainmove); //подписываемся на события Tick
            for (int i = 0; i < kol; i++)
            {

                for (int j = 0; j < kol; j++)
                {
                    map[i, j] = new bars(i * wid+wid/2, j * wid+wid/2, wid);
                    map[i, j].i = i;
                    map[i, j].j = j;

                    //задаю провинции и рисую
                    if (i < (kol / 2 + 1) && j < kol / 2)
                        map[i, j].PrID = 1;
                    if (i > kol / 2 && j < (kol / 2 + 1))
                        map[i, j].PrID = 2;
                    if (i < (kol / 2 + 1) && j > (kol / 2 - 1))
                        map[i, j].PrID = 3;
                    if (i > kol / 2 && j > kol / 2)
                        map[i, j].PrID = 4;
                }
            }
        }
Ejemplo n.º 2
0
        private void Form1_MouseClick(object sender, MouseEventArgs c)
        {
            int da, db, dc, dr;
            bool
            if (c.Button == MouseButtons.Left && moving == false)
            {

                for (int i = 0; i < kol; i++)
                {
                    for (int j = 0; j < kol; j++)
                    {
                        map[i, j].start = false;
                        map[i, j].path.Clear();
                        map[i, j].val = 10000000;
                        map[i, j].onway = false;

                        da = map[i, j].x1 - wid / 2;
                        db = map[i, j].y1 - wid / 2;
                        dc = map[i, j].x1 + wid / 2;
                        dr = map[i, j].y1 + wid / 2;
                        if (c.X <= dc && c.Y >= db && c.X > da && c.Y < dr && map[i, j].confirm_road)
                        {
                            if(current != null) map[current.i, current.j].current = false;
                            map[i, j].current = true;
                            current = map[i, j];
                        }

                    }
                }
            }
            if (c.Button == MouseButtons.Right && mode == emode.m_set_train_end)
            {

                for (int i = 0; i < kol; i++)
                {
                    for (int j = 0; j < kol; j++)
                    {
                        map[i, j].start = false;
                        map[i, j].path.Clear();
                        map[i, j].val = 10000000;
                        map[i, j].onway = false;

                        da = map[i, j].x1 - wid / 2;
                        db = map[i, j].y1 - wid / 2;
                        dc = map[i, j].x1 + wid / 2;
                        dr = map[i, j].y1 + wid / 2;
                        if (c.X <= dc && c.Y >= db && c.X > da && c.Y < dr && map[i, j].confirm_road)
                        {
                            cur_train.xfin = i;
                            cur_train.yfin = j;
                            bool tw = FindTrainWay(cur_train);
                            if (tw == true)
                            {
                                cur_train.moving = true;
                                Ltrains.Add(cur_train);
                                mode = emode.m_normal;
                            }
                        }

                    }
                }

            }
        }