Esempio n. 1
0
        public async Task VoegBoomToe(List <Boom> boom, Bos bos)
        {
            SqlConnection connection = getConnection();
            string        query      = "INSERT INTO dbo.WoodRecords (woodID, treeID, x, y) VALUES(@bosID, @ID, @X, @Y)";

            foreach (Boom element in boom)
            {
                using (SqlCommand command = connection.CreateCommand())
                {
                    await Task.Run(() => connection.Open());

                    try
                    {
                        Console.WriteLine(" START write to WoodRecords ");
                        command.Parameters.AddWithValue("@bosID", SqlDbType.Int).Value = bos.ID;
                        command.Parameters.AddWithValue("@ID", SqlDbType.Int).Value    = element.ID;
                        command.Parameters.AddWithValue("@X", SqlDbType.Int).Value     = element.X;
                        command.Parameters.AddWithValue("@Y", SqlDbType.Int).Value     = element.Y;
                        command.CommandText = query;
                        command.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                    finally
                    {
                        connection.Close();
                    }
                    Console.WriteLine(" STOP write to WoodRecords ");
                }
            }
        }
Esempio n. 2
0
        public async Task VoegLogGegevens(List <Aap> apen, Bos bos)
        {
            SqlConnection connection = getConnection();
            string        query      = "INSERT INTO dbo.Logs (woodID, monkeyID, message) VALUES(@bosID, @aapID, @message)";

            foreach (Aap element in apen)
            {
                int seqnr = 0;
                foreach (Boom el in element.Boom_Lijst)
                {
                    using (SqlCommand command = connection.CreateCommand())
                    {
                        await Task.Run(() => connection.Open());

                        try
                        {
                            Console.WriteLine(" START write to LOGS ");
                            command.Parameters.AddWithValue("@aapID", SqlDbType.Int).Value = element.ID;
                            command.Parameters.AddWithValue("@bosID", SqlDbType.Int).Value = bos.ID;
                            if (el.Y == -1)
                            {
                                command.Parameters.AddWithValue("@message", SqlDbType.NChar).Value = element.Naam + " is out the woods";
                            }
                            else
                            {
                                command.Parameters.AddWithValue("@message", SqlDbType.NChar).Value = element.Naam + " is now in tree " + el.ID + " at location (" + el.X + "," + el.Y + ")";
                            }

                            command.CommandText = query;
                            command.ExecuteNonQuery();
                            seqnr++;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                        finally
                        {
                            connection.Close();
                        }
                        Console.WriteLine(" STOP write to LOGS ");
                    }
                }
            }
        }
Esempio n. 3
0
        static async Task Main(string[] args)
        {
            int         aantalBomen = 10;
            List <Boom> bomen       = new List <Boom>();
            List <Aap>  apen        = new List <Aap>();
            Random      r           = new Random();

            //bos aanmaken
            Bos bos1 = new Bos(1, 0, 100, 0, 100);

            //willekeurige bomen aanmaken
            bomen = MaakBomenAan(aantalBomen, bos1);

            //apen aanmaken
            apen = MaakApenAan();

            //Start Programma
            //Startplaats apen bepalen <!>GEEN 2 apen op dezelfde boom<!>
            PlaatsAapOpEenBoom(apen, bomen);

            //springen naar de dichts bijzijnde boom
            //als de afstand van de rand kleiner is dan de afstand van de boom dan gaat hij weg.
            Spring(apen, bomen, bos1);


            //-----------------------------------------------------------------------------------------------
            //naar mijn databank schrijven
            //Thread t = new Thread(() => SchrijvDatabank(apen, bomen, bos1));
            //t.Start();

            //naar een txt bestand schrijven
            //Thread t2 = new Thread(() => MaakTextBestandAan(apen, bomen));
            //t2.Start();

            //elips tekenen
            //Thread t3 = new Thread(() => TekenElips(apen, bomen, bos1));
            //t3.Start();

            await Task.Run(() => SchrijvDatabank(apen, bomen, bos1));

            await Task.Run(() => MaakTextBestandAan(apen, bomen));

            await Task.Run(() => TekenElips(apen, bomen, bos1));
        }
Esempio n. 4
0
        public async Task VoegAapGegevens(List <Aap> apen, List <Boom> bomen, Bos bos)
        {
            SqlConnection connection = getConnection();
            string        query      = "INSERT INTO dbo.MonkeyRecords (monkeyID, monkeyName, woodID, seqnr, treeID, x,y) VALUES(@aapID, @aapNaam, @bosID, @seqnr, @boomID, @X, @Y)";

            foreach (Aap element in apen)
            {
                int seqnr = 0;
                foreach (Boom el in element.Boom_Lijst)
                {
                    using (SqlCommand command = connection.CreateCommand())
                    {
                        await Task.Run(() => connection.Open());

                        try
                        {
                            Console.WriteLine(" START write to MonkeyRecords ");
                            command.Parameters.AddWithValue("@aapID", SqlDbType.Int).Value   = element.ID;
                            command.Parameters.AddWithValue("@aapNaam", SqlDbType.Int).Value = element.Naam;
                            command.Parameters.AddWithValue("@bosID", SqlDbType.Int).Value   = bos.ID;
                            command.Parameters.AddWithValue("@seqnr", SqlDbType.Int).Value   = seqnr;
                            command.Parameters.AddWithValue("@boomID", SqlDbType.Int).Value  = el.ID;
                            command.Parameters.AddWithValue("@X", SqlDbType.Int).Value       = el.X;
                            command.Parameters.AddWithValue("@Y", SqlDbType.Int).Value       = el.Y;
                            command.CommandText = query;
                            command.ExecuteNonQuery();
                            seqnr++;
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                        finally
                        {
                            connection.Close();
                        }
                        Console.WriteLine(" STOP write to MonkeyRecords ");
                    }
                }
            }
        }
Esempio n. 5
0
        public static List <Boom> MaakBomenAan(int aantal, Bos bos1)
        {
            Random      r     = new Random();
            List <Boom> bomen = new List <Boom>();

            while (bomen.Count < aantal + 1)
            {
                Boom nieweBoom = new Boom(r.Next(bos1.XMin, bos1.YMax), r.Next(bos1.YMin, bos1.YMax), bomen.Count);
                bool isOK      = true;
                foreach (Boom element in bomen)
                {
                    if (nieweBoom.X == element.X && nieweBoom.Y == element.Y)
                    {
                        isOK = false;
                    }
                }

                if (isOK)
                {
                    bomen.Add(nieweBoom);
                }
            }
            return(bomen);
        }
Esempio n. 6
0
        private static async Task TekenElips(List <Aap> apen, List <Boom> bomen, Bos bos1)
        {
            string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\" + bos1.ID + "_escapeRoute.jpg";
            Bitmap bm   = new Bitmap((bos1.XMax - bos1.XMin), (bos1.YMax - bos1.YMin));

            Graphics g       = Graphics.FromImage(bm);
            Pen      PenTree = new Pen(Color.Green, 1);


            //alle bomen tekenen
            foreach (Boom element in bomen)
            {
                g.DrawEllipse(PenTree, element.X, element.Y, 10, 10);
            }

            //tekenen van de eerste aap
            foreach (Aap element in apen)
            {
                Pen   mijnPen   = new Pen(Color.Red, 1);
                Brush mijnBrush = new SolidBrush(Color.Red);
                switch (element.ID)
                {
                case 0: mijnPen = new Pen(Color.Red, 1);
                    mijnBrush   = new SolidBrush(Color.Red);
                    break;

                case 1:
                    mijnPen   = new Pen(Color.Blue, 1);
                    mijnBrush = new SolidBrush(Color.Blue);
                    break;

                case 2:
                    mijnPen   = new Pen(Color.Yellow, 1);
                    mijnBrush = new SolidBrush(Color.Yellow);
                    break;

                case 3:
                    mijnPen   = new Pen(Color.Orange, 1);
                    mijnBrush = new SolidBrush(Color.Orange);
                    break;

                case 4: mijnPen = new Pen(Color.White, 1);
                    mijnBrush   = new SolidBrush(Color.White);
                    break;

                default:
                    mijnPen   = new Pen(Color.Red, 1);
                    mijnBrush = new SolidBrush(Color.Red);
                    break;
                }

                for (int i = 0; i < element.Boom_Lijst.Count - 1; i++)
                {
                    Console.Write(" T-START ");
                    if (i == 0)
                    {
                        await Task.Run(() => g.FillEllipse(mijnBrush, element.Boom_Lijst[i].X, element.Boom_Lijst[i].Y, 10, 10));
                    }

                    if (element.Boom_Lijst[i + 1].X != -1)
                    {
                        await Task.Run(() => g.DrawLine(mijnPen, element.Boom_Lijst[i].X, element.Boom_Lijst[i].Y, element.Boom_Lijst[i + 1].X, element.Boom_Lijst[i + 1].Y));
                    }
                    Console.Write(" T-STOP ");
                }
            }
            bm.Save(path, ImageFormat.Jpeg);
        }
Esempio n. 7
0
        public static void Spring(List <Aap> apen, List <Boom> bomen, Bos bos)
        {
            int aantalUitHetBos = 0;

            while (aantalUitHetBos < 5)
            {
                foreach (Aap element in apen)
                {
                    int huidigeX = element.Boom_Lijst[element.Boom_Lijst.Count - 1].X;
                    int huidigeY = element.Boom_Lijst[element.Boom_Lijst.Count - 1].Y;
                    if (huidigeX != -1)
                    {
                        double tijdelijkeAfstand = 2000000000;
                        Boom   gekozenBoom       = null;

                        //checken welke boom het dichtste is
                        foreach (Boom ele in bomen)
                        {
                            //check voor niet dezelfde boom te pakken
                            if (ele != element.Boom_Lijst[element.Boom_Lijst.Count - 1])
                            {
                                //checken voor niet een van de vorige bomen te pakken
                                bool isOK = true;
                                foreach (Boom elementEigenAap in element.Boom_Lijst)
                                {
                                    if (elementEigenAap.ID == ele.ID)
                                    {
                                        isOK = false;
                                    }
                                }
                                foreach (Aap c in apen)
                                {
                                    foreach (Boom d in c.Boom_Lijst)
                                    {
                                        if (d == ele)
                                        {
                                            isOK = false;
                                        }
                                    }
                                }
                                if (isOK)
                                {
                                    double werkelijkeAfstand = Math.Sqrt(Math.Pow(huidigeX - ele.X, 2) + Math.Pow(huidigeY - ele.Y, 2));
                                    if (werkelijkeAfstand < tijdelijkeAfstand)
                                    {
                                        tijdelijkeAfstand = werkelijkeAfstand;
                                        gekozenBoom       = ele;
                                    }
                                }
                            }
                        }

                        //de afstand van de dichtste muur berekenen
                        double distanceToBorder = (new List <double>()
                        {
                            bos.YMax - huidigeY, bos.XMax - huidigeX, huidigeY - bos.YMin, huidigeX - bos.XMin
                        }).Min();

                        //de afstand tussen de dichtste muur en de afstand tussen de dichtste boom vergelijken
                        if (tijdelijkeAfstand < distanceToBorder)
                        {
                            element.Boom_Lijst.Add(gekozenBoom);
                            //Console.WriteLine("Aap " + element.Naam + " is op boom: " + gekozenBoom.ID);
                        }
                        else
                        {
                            //aap gaat weg
                            element.Boom_Lijst.Add(new Boom(-1, -1, -1));
                            aantalUitHetBos++;
                            //Console.WriteLine("Aap " + element.Naam + " is uit het bos met " + element.Boom_Lijst.Count+" stappen");
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        private static async Task SchrijvDatabank(List <Aap> apen, List <Boom> bomen, Bos bos1)
        {
            DataBeheer databank = new DataBeheer(@"Data Source=MSI\SQLEXPRESS;Initial Catalog=Apen;Integrated Security=True");

            ////tabel woodRecords opvullen
            //databank.VerwijderAlleBomen();
            //databank.VoegBoomToe(bomen, bos1);

            ////tabel monkeyRecords opvullen
            //databank.VerwijderAlleApenGegevens();
            //databank.VoegAapGegevens(apen, bomen, bos1);

            ////tabel logs opvullen
            //databank.VerwijderAlleLogGegevens();
            //databank.VoegLogGegevens(apen, bos1);
            await Task.WhenAll(databank.VerwijderAlleBomen(), databank.VerwijderAlleApenGegevens(), databank.VerwijderAlleLogGegevens(), databank.VoegLogGegevens(apen, bos1), databank.VoegAapGegevens(apen, bomen, bos1), databank.VoegBoomToe(bomen, bos1));
        }