コード例 #1
0
        public async Task printLogBestand(Bos bos)
        {
            int maxAantalStappen = bos.Apen[0].bezochteBomen.Count;

            for (int x = 1; x < bos.Apen.Count; x++)
            {
                if (bos.Apen[x].bezochteBomen.Count > maxAantalStappen)
                {
                    maxAantalStappen = bos.Apen[x].bezochteBomen.Count;
                }
            }

            using StreamWriter writer = File.CreateText(@"C:\Users\Sieglinde\OneDrive\Documenten\Programmeren\semester2\programmeren 4\apenbos\logbestand" + $"{bos.BosId}");

            var gesorteerdeApen = bos.Apen.OrderBy(x => x.Naam);

            for (int y = 0; y < maxAantalStappen; y++)
            {
                foreach (Aap aap in gesorteerdeApen)
                {
                    if (aap.bezochteBomen.Count > y)
                    {
                        writer.WriteLine($"{aap.Naam} is in tree {aap.bezochteBomen[y].Id} at ({aap.bezochteBomen[y].X},{aap.bezochteBomen[y].Y})");
                    }
                }
            }
        }
コード例 #2
0
        public async Task maakBitMap(Bos bos, string path)
        {
            Console.WriteLine($"Start schrijven bitmap voor bos {bos.BosId}");
            Bitmap   bm       = new Bitmap(bos.Xmax * 10, bos.Ymax * 10);
            Graphics graphics = Graphics.FromImage(bm);
            Pen      pen      = new Pen(Color.Green, 1);

            foreach (Boom boom in bos.Bomen)
            {
                graphics.DrawEllipse(pen, boom.X * 10 - 2, boom.Y * 10 - 2, 4, 4);
            }
            foreach (Aap aap in bos.Apen)
            {
                Random rand    = new Random();
                int    r       = rand.Next(256);
                int    g       = rand.Next(256);
                int    b       = rand.Next(256);
                Color  c       = Color.FromArgb(r, g, b);
                Pen    linePen = new Pen(c);
                Brush  brush   = new SolidBrush(c);
                graphics.FillEllipse(brush, aap.bezochteBomen[0].X * 10 - 2, aap.bezochteBomen[0].Y * 10 - 2, 4, 4);
                for (int x = 1; x < aap.bezochteBomen.Count; x++)
                {
                    graphics.DrawLine(linePen, aap.bezochteBomen[x - 1].X * 10, aap.bezochteBomen[x - 1].Y * 10, aap.bezochteBomen[x].X * 10, aap.bezochteBomen[x].Y * 10);
                }
            }
            bm.Save(Path.Combine(path, bos.BosId.ToString() + "_escapeRoutes.jpg"), ImageFormat.Jpeg);
            Console.WriteLine($"Einde schrijven bitmap voor bos {bos.BosId}");
        }
コード例 #3
0
        public async Task LaatApenOntsnappen(Bos bos)
        {
            List <Task> tasks = new List <Task>();

            foreach (Aap aap in bos.Apen)
            {
                tasks.Add(Task.Run(() => bos.StartOntsnappingAap(aap)));
            }
            Task.WaitAll(tasks.ToArray());
        }
コード例 #4
0
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");


            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            Bos        bos1   = new Bos(50, 50, 1000);
            Bos        bos2   = new Bos(50, 50, 500);
            List <Bos> bossen = new List <Bos>()
            {
                bos1, bos2
            };

            //Apen maken
            Aap        Tijs   = new Aap("Tijs");
            Aap        Bart   = new Aap("Bart");
            Aap        Bram   = new Aap("Bram");
            Aap        Gust   = new Aap("Gust");
            Aap        Charel = new Aap("Charel");
            List <Aap> apen1  = new List <Aap> {
                Tijs, Bart, Bram
            };
            List <Aap> apen2 = new List <Aap> {
                Gust, Charel
            };

            //Apen aan het bos toevoegen
            bos1.VoegApenToe(apen1);
            bos2.VoegApenToe(apen2);


            //Alle apen ontsnappen asynchroon
            DoeAsynchroon da = new DoeAsynchroon();
            List <Task>   ontsnappingTasks = new List <Task>();

            foreach (Bos bos in bossen)
            {
                ontsnappingTasks.Add(da.LaatApenOntsnappen(bos));
            }
            Task.WaitAll(ontsnappingTasks.ToArray());

            //Alle data die je nodig hebt voor de rest is geschreven, de rest kan allemaal asynchroon.
            await da.DatabankBitmapsBestandenDoen(bossen);

            stopwatch.Stop();
            Console.WriteLine($"Time elamsed : {stopwatch.Elapsed}");
        }
コード例 #5
0
        public async Task VoegMonkeyRecordToe(Bos bos)
        {
            Console.WriteLine($"start toevoegen monkeyrecords voor bos {bos.BosId}");
            SqlConnection connection  = getConnection();
            string        queryMonkey = "INSERT INTO dbo.MonkeyRecords(monkeyId, monkeyName, woodId, seqnr, treeId, x, y) VALUES(@monkeyId, @monkeyName, @woodId, @seqnr, @treeId, @x, @y)";

            using (SqlCommand command = connection.CreateCommand())
            {
                connection.Open();
                try
                {
                    command.Parameters.Add(new SqlParameter("@monkeyId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@monkeyName", SqlDbType.NVarChar));
                    command.Parameters.Add(new SqlParameter("@woodId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@seqnr", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@treeId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@x", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@y", SqlDbType.Int));
                    command.CommandText = queryMonkey;

                    for (int aapTeller = 0; aapTeller < bos.Apen.Count; aapTeller++)
                    {
                        Aap aap = bos.Apen[aapTeller];
                        for (int boomTeller = 0; boomTeller < aap.bezochteBomen.Count; boomTeller++)
                        {
                            Boom boom = aap.bezochteBomen[boomTeller];
                            command.Parameters["@monkeyId"].Value   = aap.Id;
                            command.Parameters["@monkeyName"].Value = aap.Naam;
                            command.Parameters["@woodId"].Value     = bos.BosId;
                            command.Parameters["@seqnr"].Value      = boomTeller;
                            command.Parameters["@treeId"].Value     = boom.Id;
                            command.Parameters["@x"].Value          = boom.X;
                            command.Parameters["@y"].Value          = boom.Y;
                            command.ExecuteNonQuery();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                finally
                {
                    connection.Close();
                }
                Console.WriteLine($"stop toevoegen monkeyrecords voor bos {bos.BosId}");
            }
        }
コード例 #6
0
        public async Task voegLogsToe(Bos bos)
        {
            Console.WriteLine($"start toevoegen logs voor bos {bos.BosId}");
            SqlConnection connection = getConnection();
            string        queryLogs  = "INSERT INTO dbo.logs(woodId, monkeyId, message) VALUES(@woodId, @monkeyId, @message)";

            using (SqlCommand command = connection.CreateCommand())
            {
                connection.Open();
                try
                {
                    command.Parameters.Add(new SqlParameter("@woodId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@monkeyId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@message", SqlDbType.NVarChar));
                    command.CommandText = queryLogs;
                    for (int aapTeller = 0; aapTeller < bos.Apen.Count; aapTeller++)
                    {
                        Aap aap = bos.Apen[aapTeller];
                        for (int boomTeller = 0; boomTeller < aap.bezochteBomen.Count; boomTeller++)
                        {
                            Boom boom = aap.bezochteBomen[boomTeller];
                            command.Parameters["@monkeyId"].Value = aap.Id;
                            command.Parameters["@woodId"].Value   = bos.BosId;
                            command.Parameters["@message"].Value  = $"{aap.Naam} is now in tree {boom.Id} at location ({boom.X},{boom.Y})";
                            command.ExecuteNonQuery();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                finally
                {
                    connection.Close();
                }
            }
            Console.WriteLine($"stop toevoegen logs voor bos {bos.BosId}");
        }
コード例 #7
0
        public async Task VoegWoodRecordToe(Bos bos)
        {
            Console.WriteLine($"start toevoegen woodrecords voor bos {bos.BosId}");
            SqlConnection connection = getConnection();
            string        queryWood  = "INSERT INTO dbo.WoodRecords(woodId,treeId,x,y) VALUES(@woodId, @treeId, @x, @y)";

            using (SqlCommand command = connection.CreateCommand())
            {
                connection.Open();
                try
                {
                    command.Parameters.Add(new SqlParameter("@woodId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@treeId", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@x", SqlDbType.Int));
                    command.Parameters.Add(new SqlParameter("@y", SqlDbType.Int));
                    command.CommandText = queryWood;
                    command.Parameters["@woodId"].Value = bos.BosId;
                    foreach (Boom boom in bos.Bomen)
                    {
                        command.Parameters["@treeId"].Value = boom.Id;
                        command.Parameters["@x"].Value      = boom.X;
                        command.Parameters["@y"].Value      = boom.Y;
                        command.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                finally
                {
                    connection.Close();
                }
            }
            Console.WriteLine($"stop toevoegen woodrecords voor bos {bos.BosId}");
        }