Ejemplo n.º 1
0
    void question8()
    {
        Zastavka z1 = zastavky[rnd.Next(0, zastavky.Count)];
        Zastavka z2 = zastavky[rnd.Next(0, zastavky.Count)];

        while (z1.name == z2.name)
        {
            z2 = zastavky[rnd.Next(0, zastavky.Count)];
        }
        int number = rnd.Next(2, zastavky.Count - zastavky.Count / 4);

        question = "Otázka č.8: Vieme sa zo zastávky " + z1.name + " dostať na zastávku " + z2.name + " cez najviac " + number;
        switch (number)
        {
        case 2:
            question += " zastávky?\n                    (Vrátane zastávky z ktorej vychádzame. Napíšte 'áno' alebo 'nie'.)";
            break;

        case 3:
            question += " zastávky?\n                    (Vrátane zastávky z ktorej vychádzame. Napíšte 'áno' alebo 'nie'.)";
            break;

        default:
            question += " zastávok?\n                    (Vrátane zastávky z ktorej vychádzame. Napíšte 'áno' alebo 'nie'.)";
            break;
        }
        if (BFS(z1.name, z2.name, linky) <= number)
        {
            answer = "áno";
        }
        else
        {
            answer = "nie";
        }
    }
Ejemplo n.º 2
0
        /// <summary>
        /// Vэstavba zбstavky pre cestnй vozidlб
        /// </summary>
        /// <param name="upresnenieCinnosti">ktorб z nich</param>
        public void PostavZastavku(int upresnenieCinnosti)
        {
            Spolocnost spol = Hra.DajInstanciu().Spolocnost;
            try 
            {
                Zastavka zast;

                if (aZastavane != null)
                {
                    Cesta c = (Cesta)aZastavane;
                    if (upresnenieCinnosti == (int)SmerZast.horizontalny && c.Orientacia == SmerCesty.vodorovne)
                    {
                        zast = new Zastavka(aPoloha, SmerZast.horizontalny);
                    }
                    else
                    {
                        zast = new Zastavka(aPoloha, SmerZast.vertikalny);
                    }
                    if (spol.OverVydavok(-zast.Cena) && OverOkolieStaniceZoskupenia(zast, 1, 1))
                    {
                        aZastavane = zast;
                        Hra.DajInstanciu().DajHernuPlochu().PrejdiPolicka();
                        spol.UpravFinancie(-zast.Cena);
                    }
                }
            }catch (InvalidCastException e)
            {
                Sprava.Info("Nie je mozne postavit zastavku");
            }
           
        }
Ejemplo n.º 3
0
        public void pridajCiaru(Zastavka z1, Zastavka z2)
        {
            Point point = getCenter(z1.X, z1.Y, z2.X, z2.Y);

            delCoords.Add(point);
            mojeZastavky.Add(z2);
            mojeZastavky.Add(z1);
        }
Ejemplo n.º 4
0
 void MainFormMouseClick(object sender, MouseEventArgs e)
 {
     if ((rezim == 3 || rezim == 1))
     {
         if (deletingLine && linky[linkaClicked - 1].zmazCiaru(e.X, e.Y))
         {
             Invalidate();
             Update();
         }
         else if (deletingZast && closeTo(e.X, e.Y) != null)
         {
             Zastavka z = closeTo(e.X, e.Y);
             zastavky.Remove(z);
             foreach (var l in linky)
             {
                 l.zmazZastavku(z);
             }
             Invalidate();
             Update();
         }
         else if (linkaClicked != 0 && e.X <= 140 && e.Y >= 45 && e.Y <= 230)
         {
             linky[linkaClicked - 1].changeColour(findColour(e.X, e.Y));
             Invalidate();
             Update();
         }
         else if (e.X >= 700 && e.Y >= 45 && e.Y <= 185)
         {
             linkaClicked = findClickedLinka(e.X, e.Y);
             Invalidate();
             Update();
         }
         else if (closeTo(e.X, e.Y) == null && !holding)
         {
             int           name  = 65;
             List <string> names = new List <string>();
             for (int i = 0; i < zastavky.Count; i++)
             {
                 names.Add(zastavky[i].name);
             }
             for (int i = 0; i < 27; i++)
             {
                 if (!names.Contains((char)(65 + i) + ""))
                 {
                     name = 65 + i;
                     break;
                 }
             }
             zastavky.Add(new Zastavka(e.X, e.Y, name));
             Invalidate();
             Update();
         }
     }
 }
Ejemplo n.º 5
0
 public void spoj(Zastavka z)
 {
     if (!susedia.ContainsKey(z))
     {
         susedia[z] = 1;
     }
     else
     {
         susedia[z] += 1;
     }
 }
Ejemplo n.º 6
0
    void question7()
    {
        Zastavka z1 = zastavky[rnd.Next(0, zastavky.Count)];
        Zastavka z2 = zastavky[rnd.Next(0, zastavky.Count)];

        while (z1.name == z2.name)
        {
            z2 = zastavky[rnd.Next(0, zastavky.Count)];
        }
        question = "Otázka č.7: Koľko zastávok musíme prejsť\n                  aby sme sa zo zastávky " + z1.name + " dostali na zastávku " + z2.name + " najrýchlejšie?\n                (Vrátane zastávky z ktorej vychádzame. Ak sa na zastávku nevieme dostať, napíšte 0.)";
        answer   = BFS(z1.name, z2.name, linky) + "";
    }
Ejemplo n.º 7
0
 void MainFormMouseDoubleClick(object sender, MouseEventArgs e)
 {
     if ((rezim == 1 || rezim == 3) && !holding)
     {
         Zastavka z = closeTo(e.X, e.Y);
         if (z == null)
         {
             return;
         }
         namingZast = true;
     }
 }
Ejemplo n.º 8
0
    void question9()
    {
        Zastavka z1     = zastavky[rnd.Next(0, zastavky.Count)];
        int      number = rnd.Next(2, zastavky.Count / 2);

        question = "Otázka č.9: Napíšte všetky zastávky, na ktoré sa vieme zo zastávky " + z1.name + "\n                    dostať prejdením cez " + number + " alebo menej zastávok.\n                    (Vrátane zastávky z ktorej vychádzame. Názvy zastávok oddeľte pomlčkami.)";
        answer   = z1.name;
        foreach (var z in zastavky)
        {
            int bfs = BFS(z1.name, z.name, linky);
            if (z.name != z1.name && bfs <= number && bfs > 0)
            {
                answer += "-" + z.name;
            }
        }
    }
Ejemplo n.º 9
0
    void question5()
    {
        Zastavka z1 = zastavky[rnd.Next(0, zastavky.Count)];
        Zastavka z2 = zastavky[rnd.Next(0, zastavky.Count)];

        while (z1.name == z2.name)
        {
            z2 = zastavky[rnd.Next(0, zastavky.Count)];
        }

        question = "Otázka č.5: Vieme sa zo zastávky " + z1.name + " nejako dostať na zastávku " + z2.name + " ?\n                    (Napíšte 'áno' alebo 'nie'.)";
        if (BFS(z1.name, z2.name, linky) > 0)
        {
            answer = "áno";
        }
        else
        {
            answer = "nie";
        }
    }
Ejemplo n.º 10
0
    void question4()
    {
        Zastavka z1 = zastavky[rnd.Next(0, zastavky.Count)];
        Zastavka z2 = zastavky[rnd.Next(0, zastavky.Count)];

        while (z1.name == z2.name)
        {
            z2 = zastavky[rnd.Next(0, zastavky.Count)];
        }
        question = "Otázka č.4: Vieme sa zo zastávky " + z1.name + " dostať na zastávku " + z2.name + " len po jednej linke?\n                    (Napíšte 'áno' alebo 'nie'.)";
        foreach (var l in linky)
        {
            if (l.mojeZastavky.Contains(z1) && l.mojeZastavky.Contains(z2))
            {
                answer = "áno";
                return;
            }
        }
        answer = "nie";
    }
Ejemplo n.º 11
0
    void MainFormMouseUp(object sender, MouseEventArgs e)
    {
        if (holding)
        {
            Zastavka z = closeTo(e.X, e.Y);
            if (z != null && z.X != startZast.X && z.Y != startZast.Y)
            {
                spoj(z, startZast);
                linky[linkaClicked - 1].pridajCiaru(z, startZast);
            }
            newLineX1 = -1;
            newLineX2 = -1;
            newLineY1 = -1;
            newLineY2 = -1;

            Invalidate();
            Update();
            holding = false;
        }
    }
Ejemplo n.º 12
0
    void MainFormMouseDown(object sender, MouseEventArgs e)
    {
        Zastavka z = closeTo(e.X, e.Y);

        if ((rezim == 3 || rezim == 1) &&
            !deletingZast &&
            !deletingLine &&
            z != null &&
            zastavky.Count >= 2 &&
            linkaClicked != 0)
        {
            holding   = true;
            startZast = z;
            newLineX1 = z.X;
            newLineY1 = z.Y;
            newLineX2 = e.X;
            newLineY2 = e.Y;
            Invalidate();
            Update();
        }
    }
Ejemplo n.º 13
0
    void question6()
    {
        Linka l = linky[rnd.Next(0, linky.Count)];

        while (l.isEmpty())
        {
            l = linky[rnd.Next(0, linky.Count)];
        }
        Zastavka z1 = l.mojeZastavky[rnd.Next(0, l.mojeZastavky.Count)];
        Zastavka z2 = l.mojeZastavky[rnd.Next(0, l.mojeZastavky.Count)];

        while (z1.name == z2.name)
        {
            z2 = l.mojeZastavky[rnd.Next(0, l.mojeZastavky.Count)];
        }

        question = "Otázka č.6: Koľko zastávok musíme prejsť\n                    aby sme sa zo zastávky " + z1.name + " dostali na zastávku " + z2.name + " po linke " + l.name + " najrýchlejšie?\n                    (Vrátane zastávky z ktorej vychádzame.)";
        List <Linka> lines = new List <Linka>();

        lines.Add(l);
        answer = BFS(z1.name, z2.name, lines) + "";
    }
Ejemplo n.º 14
0
        public void zmazZastavku(Zastavka z)
        {
            List <int> index = new List <int>();

            for (int i = 0; i < mojeZastavky.Count; i += 2)
            {
                if ((mojeZastavky[i].X == z.X && mojeZastavky[i].Y == z.Y)
                    ||
                    (mojeZastavky[i + 1].X == z.X && mojeZastavky[i + 1].Y == z.Y))
                {
                    index.Add(i);
                }
            }
            if (index.Count > 0)
            {
                index.Reverse();
                foreach (var i in index)
                {
                    mojeZastavky.RemoveAt(i + 1);
                    mojeZastavky.RemoveAt(i);
                }
            }
        }
Ejemplo n.º 15
0
 void spoj(Zastavka z1, Zastavka z2)
 {
     z1.spoj(z2);
     z2.spoj(z1);
 }
Ejemplo n.º 16
0
    void question10()
    {
        Zastavka z1 = zastavky[rnd.Next(0, zastavky.Count)];
        Zastavka z2 = zastavky[rnd.Next(0, zastavky.Count)];

        while (z1.name == z2.name)
        {
            z2 = zastavky[rnd.Next(0, zastavky.Count)];
        }

        Dictionary <string, HashSet <string> > list = new Dictionary <string, HashSet <string> >();

        foreach (var l in linky)
        {
            for (int i = 0; i < l.mojeZastavky.Count; i += 2)
            {
                if (!list.ContainsKey(l.mojeZastavky[i].name))
                {
                    list[l.mojeZastavky[i].name] = new HashSet <string>();
                }
                list[l.mojeZastavky[i].name].Add(l.mojeZastavky[i + 1].name);
                if (!list.ContainsKey(l.mojeZastavky[i + 1].name))
                {
                    list[l.mojeZastavky[i + 1].name] = new HashSet <string>();
                }
                list[l.mojeZastavky[i + 1].name].Add(l.mojeZastavky[i].name);
            }
        }
        foreach (var z in zastavky)
        {
            if (!list.ContainsKey(z.name))
            {
                list[z.name] = new HashSet <string>();
            }
        }
        List <string> visited = new List <string>();
        List <Tuple <string, string> > queue = new List <Tuple <string, string> >();
        string cesta = z1.name;

        queue.Add(new Tuple <string, string>(z1.name, cesta));
        while (queue.Count > 0)
        {
            Tuple <string, string> t = queue[0];
            queue.RemoveAt(0);
            string zast = t.Item1;
            cesta = t.Item2;
            visited.Add(zast);
            if (zast == z2.name)
            {
                answer += "*" + cesta;
            }
            foreach (var sused in list[zast])
            {
                if (!visited.Contains(sused))
                {
                    queue.Add(new Tuple <string, string>(sused, cesta + "-" + sused));
                }
            }
        }

        question = "Otázka č.10: Ktoré zastávky musíme prejsť aby sme sa zo zastávky " + z1.name + " dostali na zastávku " + z2.name + "\n                    najrýchlejšie?\n                    (Ak sa na zastávku nevieme dostať, napíšte 0. Ak je možností viac, vyberte jednu.)";
        if (answer.Length == 0)
        {
            answer = "0";
        }
        else
        {
            answer = answer.Remove(0, 1);
        }
    }
Ejemplo n.º 17
0
 public void pridajUlozeneZastavky(Zastavka z1, Zastavka z2)
 {
     mojeZastavky.Add(z2);
     mojeZastavky.Add(z1);
 }