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 "); } } }
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 "); } } } }
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)); }
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 "); } } } }
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); }
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); }
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"); } } } } }
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)); }