// ---- Update skilova igraca ---- public double[] noviSkilovi(double[] team, bool domacin, int podeliSa) { Random rand = new Random(); string noveOcene = ""; // ---- Generisi random brojeve za oba tima naizmenicno ---- for (int i = 0; i < 11; i++) { int skill = rand.Next(1, 10); team[i] = Math.Round((team[i] + skill) / podeliSa, 1); noveOcene += team[i].ToString() + ';'; } noveOcene = noveOcene.TrimEnd(';'); // ---- Update-ovanje ocene timova na formi if (domacin) { delUpdateFormInformations updatePostava = new delUpdateFormInformations(forma.updateTeamDomacin); forma.RtbSastavDomacin.BeginInvoke(updatePostava, noveOcene); Thread.Sleep(500); } else { delUpdateFormInformations updatePostava = new delUpdateFormInformations(forma.updateTeamGost); forma.RtbSastavGost.BeginInvoke(updatePostava, noveOcene); Thread.Sleep(500); } return(team); }
// ---- Update sastava i skila u formi ---- void updateSastavForm(double[] teamSkills, string[] posAndSkill, bool domacin) { Random rand = new Random(); string noveOcene = ""; // ---- Generisi random brojeve za oba tima naizmenicno ---- string[] separators = new string[] { "<&>" }; for (int i = 0; i < teamSkills.Length; i++) { string[] posSkill = posAndSkill[i].Split(':'); int pos = Convert.ToInt32(posSkill[0]); if (domacin) { string[] podela = idsNamePosDomaci[pos].Split(separators, StringSplitOptions.None); noveOcene += (i + 1).ToString() + ". " + podela[1] + " " + teamSkills[i].ToString() + ';'; } else { string[] podela = idsNamePosGosti[pos].Split(separators, StringSplitOptions.None); noveOcene += (i + 1).ToString() + ". " + podela[1] + " " + teamSkills[i].ToString() + ';'; } } //noveOcene = noveOcene.TrimEnd(';'); // string rezervniIgraci = "" + Environment.NewLine; // rezervniIgraci += Environment.NewLine + "Rezervni igraci" + Environment.NewLine; string rezervniIgraci = ""; if (domacin) { foreach (string igrac in idsNamePosDomaci) { string[] podela = igrac.Split(separators, StringSplitOptions.None); if (!noveOcene.Contains(podela[1])) { rezervniIgraci += podela[1] + ";"; } } } else { foreach (string igrac in idsNamePosGosti) { string[] podela = igrac.Split(separators, StringSplitOptions.None); if (!noveOcene.Contains(podela[1])) { rezervniIgraci += podela[1] + ";"; } } } noveOcene += rezervniIgraci; noveOcene = noveOcene.TrimEnd(';'); // ---- Update-ovanje ocene timova na formi if (domacin) { delUpdateFormInformations updatePostava = new delUpdateFormInformations(forma.updateTeamDomacin); forma.RtbSastavDomacin.BeginInvoke(updatePostava, noveOcene); Thread.Sleep(500); } else { delUpdateFormInformations updatePostava = new delUpdateFormInformations(forma.updateTeamGost); forma.RtbSastavGost.BeginInvoke(updatePostava, noveOcene); Thread.Sleep(500); } }
// ---- Simuliranje utakmice ---- public void simulirajUtakmicu() { // ---- Brojaci za statistiku ---- int domaciPosed = 0; int gostiPosed = 0; int brojNapadaDomaci = 0; int brojNapadaGosti = 0; int brojSredinaDomaci = 0; int brojSredinaGosti = 0; int brojOdbranaDomaci = 0; int brojOdbranaGosti = 0; string[] domaciStartnih11 = new string[11]; int brojKoraka = 5; while (brojKoraka > 0) { domaciStartnih11 = izaberiIgrace(true); if (domaciStartnih11 != null) break; brojKoraka--; } // ---- Ukoliko postoji greska prilikom izbora tima ---- if (brojKoraka == 0) { delUpdateFormInformations simulacijaGreska = new delUpdateFormInformations(forma.SimulacijaGreska); forma.BeginInvoke(simulacijaGreska, "Doslo je do greske prilikom izbora prvog tima kod domacina!"); // MessageBox.Show("Doslo je do greske prilikom izbora prvog tima kod domacina!"); // forma.Close(); return; } Thread.Sleep(500); brojKoraka = 5; string[] gostiStartnih11 = new string[11]; while (brojKoraka > 0) { gostiStartnih11 = izaberiIgrace(false); if (gostiStartnih11 != null) break; brojKoraka--; } // ---- Ukoliko postoji greska prilikom izbora tima ---- if (brojKoraka == 0) { delUpdateFormInformations simulacijaGreska = new delUpdateFormInformations(forma.SimulacijaGreska); forma.BeginInvoke(simulacijaGreska, "Doslo je do greske prilikom izbora prvog tima kod gostiu!"); // MessageBox.Show("Doslo je do greske prilikom izbora prvog tima kod domacina!"); // forma.Close(); return; } double[] domacin = new double[11]; double[] gost = new double[11]; for (int i = 0; i < 11; i++) { string[] nameSkillDom = domaciStartnih11[i].Split(':'); domacin[i] = Convert.ToDouble(nameSkillDom[1]); string[] nameSkillGos = gostiStartnih11[i].Split(':'); gost[i] = Convert.ToDouble(nameSkillGos[1]); } updateSastavForm(domacin, domaciStartnih11, true); updateSastavForm(gost, gostiStartnih11, false); // ---- Dodela skilova ---- /* domacin = noviSkilovi(domacin, true, 1); gost = noviSkilovi(gost, false, 1); */ int domacinGolovi = 0; int gostGolovi = 0; delUpdateFormInformations updateDogadjaj = new delUpdateFormInformations(forma.updateDogadjaji); // ---- Krece utakmica ----- for (int i = 0; i < 90; i++) { // korak 1 int napadaTim = izborTimaKojiNapada(); Thread.Sleep(500); // Da se ne bi izgubio pointer u algoritam bool nastavakAkcije = false; bool nikoNemaAkciju = true; if (napadaTim == 1) { nastavakAkcije = true; nikoNemaAkciju = false; } else if (napadaTim == 2) { nastavakAkcije = true; nikoNemaAkciju = false; } if (!nikoNemaAkciju & nastavakAkcije) { // Korak 2 ---- da li je predjen centar if (napadaTim == 1) { nastavakAkcije = sredinaPobedjena(domacin, gost); domaciPosed += 1; brojNapadaDomaci++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i+1).ToString() + "' DOMACIN: Zapocinje akciju"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = sredinaPobedjena(gost, domacin); gostiPosed += 1; brojNapadaGosti++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Zapocinje akciju"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 3 ---- da li je predjena odbrana if (napadaTim == 1) { nastavakAkcije = odbranaPobedjena(domacin, gost); domaciPosed += 2; brojSredinaDomaci++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaPobedjena(gost, domacin); gostiPosed += 2; brojSredinaGosti++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 4 --- da li je dat gol if (napadaTim == 1) { nastavakAkcije = odbranaGolmana(domacin, gost); domaciPosed += 3; brojOdbranaDomaci++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Prolaze protivnicku odbranu"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaGolmana(gost, domacin); gostiPosed += 3; brojOdbranaGosti++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Prolaze protivnicku odbranu"); Thread.Sleep(500); } // ---- Postignu gol ---- if (nastavakAkcije) { if (napadaTim == 1) { string strelac = KoDajeGol(domacin, domaciStartnih11, true); domacinGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateDomacinRez); forma.RezultatDomacin.BeginInvoke(updateGol, domacinGolovi.ToString()); Thread.Sleep(500); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: GOOOL !!! Strelac: " + strelac); Thread.Sleep(1000); /*NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(goalSound)); Thread.Sleep(3000);*/ gost = noviSkilovi(gost, false, 2); updateSastavForm(gost, gostiStartnih11, false); // Thread.Sleep(500); // updateSastavForm(domacin, domaciStartnih11, true); } else if (napadaTim == 2) { string strelac = KoDajeGol(gost, gostiStartnih11, false); gostGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateGostRez); forma.RezultatGost.BeginInvoke(updateGol, gostGolovi.ToString()); Thread.Sleep(500); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: GOOOL !!! Strelac: " + strelac); Thread.Sleep(1000); /*NAudio.Wave.WaveStream pcm = NAudio.Wave.WaveFormatConversionStream.CreatePcmStream(new NAudio.Wave.Mp3FileReader(goalSound)); Thread.Sleep(3000);*/ domacin = noviSkilovi(domacin, true, 2); updateSastavForm(domacin, domaciStartnih11, true); //Thread.Sleep(500); // updateSastavForm(gost, gostiStartnih11, false); } } else { // Golman brani if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Kakva odbrana golmana"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Kakva odbrana golmana"); Thread.Sleep(500); } } } else { // Odbrana dobro reaguje if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Odbrana otklanja opasnost"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Odbrana otklanja opasnost"); Thread.Sleep(500); } } } else { // Oduzeta lopta na sredinu if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } } } // ---- Update minuta delUpdateFormInformations updateMin = new delUpdateFormInformations(forma.updateMinut); forma.Minuti.BeginInvoke(updateMin, (i+1).ToString() + "'"); Thread.Sleep(500); if (i+1 == 15 || i+1 == 30 || i+1 == 45 || i+1 == 60 || i+1 == 75) { // ---- Nova dodela skilova ---- domacin = noviSkilovi(domacin, true, 2); gost = noviSkilovi(gost, false, 2); updateSastavForm(domacin, domaciStartnih11, true); updateSastavForm(gost, gostiStartnih11, false); if (i+1 == 45) { forma.Minuti.BeginInvoke(updateMin, "HT"); Thread.Sleep(5000); } } } int ukupniPosed = domaciPosed + gostiPosed; int procenatDomaci = (int)Math.Round(Math.Round(domaciPosed / (double)ukupniPosed, 2)*100); int procenatGosti = 100 - procenatDomaci; string statistika = "STATISTIKA" + Environment.NewLine; statistika += Environment.NewLine + "Domaci - Gosti" + Environment.NewLine; statistika += procenatDomaci + " - Posed lopte - " + procenatGosti + Environment.NewLine; statistika += brojNapadaDomaci + " - Broj napada - " + brojNapadaGosti + Environment.NewLine; statistika += (brojNapadaDomaci - brojSredinaDomaci).ToString() + " - Broj izgubljenih lopti na sredini - " + (brojNapadaGosti - brojSredinaGosti).ToString() + Environment.NewLine; statistika += (brojSredinaGosti - brojOdbranaGosti).ToString() + " - Broj sprecenih gol sansi - " + (brojSredinaDomaci - brojOdbranaDomaci).ToString() + Environment.NewLine; statistika += brojOdbranaDomaci + " - Broj sansi za gol - " + brojOdbranaGosti + Environment.NewLine; // MessageBox.Show(statistika, "Statistika"); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, statistika); Thread.Sleep(5000); if (domacinGolovi > gostGolovi) { najboljiIgrac(domacin, domaciStartnih11, true); } else if (domacinGolovi < gostGolovi) { najboljiIgrac(gost, gostiStartnih11, true); } else { Random rand = new Random(); int broj = rand.Next(1, 2); if (broj == 1) { najboljiIgrac(domacin, domaciStartnih11, true); } else { najboljiIgrac(gost, gostiStartnih11, true); } } }
// ---- Simuliranje utakmice ---- public void simulirajUtakmicu() { // ---- Brojaci za statistiku ---- int domaciPosed = 0; int gostiPosed = 0; int brojNapadaDomaci = 0; int brojNapadaGosti = 0; int brojSredinaDomaci = 0; int brojSredinaGosti = 0; int brojOdbranaDomaci = 0; int brojOdbranaGosti = 0; string[] domaciStartnih11 = new string[11]; int brojKoraka = 5; while (brojKoraka > 0) { domaciStartnih11 = izaberiIgrace(true); if (domaciStartnih11 != null) { break; } brojKoraka--; } // ---- Ukoliko postoji greska prilikom izbora tima ---- if (brojKoraka == 0) { delUpdateFormInformations simulacijaGreska = new delUpdateFormInformations(forma.SimulacijaGreska); forma.BeginInvoke(simulacijaGreska, "Doslo je do greske prilikom izbora prvog tima kod domacina!"); // MessageBox.Show("Doslo je do greske prilikom izbora prvog tima kod domacina!"); // forma.Close(); return; } Thread.Sleep(500); brojKoraka = 5; string[] gostiStartnih11 = new string[11]; while (brojKoraka > 0) { gostiStartnih11 = izaberiIgrace(false); if (gostiStartnih11 != null) { break; } brojKoraka--; } // ---- Ukoliko postoji greska prilikom izbora tima ---- if (brojKoraka == 0) { delUpdateFormInformations simulacijaGreska = new delUpdateFormInformations(forma.SimulacijaGreska); forma.BeginInvoke(simulacijaGreska, "Doslo je do greske prilikom izbora prvog tima kod gostiu!"); // MessageBox.Show("Doslo je do greske prilikom izbora prvog tima kod domacina!"); // forma.Close(); return; } double[] domacin = new double[11]; double[] gost = new double[11]; for (int i = 0; i < 11; i++) { string[] nameSkillDom = domaciStartnih11[i].Split(':'); domacin[i] = Convert.ToDouble(nameSkillDom[1]); string[] nameSkillGos = gostiStartnih11[i].Split(':'); gost[i] = Convert.ToDouble(nameSkillGos[1]); } updateSastavForm(domacin, domaciStartnih11, true); updateSastavForm(gost, gostiStartnih11, false); // ---- Dodela skilova ---- /* domacin = noviSkilovi(domacin, true, 1); * gost = noviSkilovi(gost, false, 1); */ int domacinGolovi = 0; int gostGolovi = 0; delUpdateFormInformations updateDogadjaj = new delUpdateFormInformations(forma.updateDogadjaji); // ---- Krece utakmica ----- for (int i = 0; i < 90; i++) { // korak 1 int napadaTim = izborTimaKojiNapada(); Thread.Sleep(500); // Da se ne bi izgubio pointer u algoritam bool nastavakAkcije = false; bool nikoNemaAkciju = true; if (napadaTim == 1) { nastavakAkcije = true; nikoNemaAkciju = false; } else if (napadaTim == 2) { nastavakAkcije = true; nikoNemaAkciju = false; } if (!nikoNemaAkciju & nastavakAkcije) { // Korak 2 ---- da li je predjen centar if (napadaTim == 1) { nastavakAkcije = sredinaPobedjena(domacin, gost); domaciPosed += 1; brojNapadaDomaci++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Zapocinje akciju"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = sredinaPobedjena(gost, domacin); gostiPosed += 1; brojNapadaGosti++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Zapocinje akciju"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 3 ---- da li je predjena odbrana if (napadaTim == 1) { nastavakAkcije = odbranaPobedjena(domacin, gost); domaciPosed += 2; brojSredinaDomaci++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaPobedjena(gost, domacin); gostiPosed += 2; brojSredinaGosti++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 4 --- da li je dat gol if (napadaTim == 1) { nastavakAkcije = odbranaGolmana(domacin, gost); domaciPosed += 3; brojOdbranaDomaci++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Prolaze protivnicku odbranu"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaGolmana(gost, domacin); gostiPosed += 3; brojOdbranaGosti++; // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Prolaze protivnicku odbranu"); Thread.Sleep(500); } // ---- Postignu gol ---- if (nastavakAkcije) { if (napadaTim == 1) { string strelac = KoDajeGol(domacin, domaciStartnih11, true); domacinGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateDomacinRez); forma.RezultatDomacin.BeginInvoke(updateGol, domacinGolovi.ToString()); Thread.Sleep(500); GoalSoundPlay(); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: GOOOL !!! Strelac: " + strelac); // //this.DaLiSteZnali(strelac, "", ""); // Thread.Sleep(1000); gost = noviSkilovi(gost, false, 2); updateSastavForm(gost, gostiStartnih11, false); // Thread.Sleep(500); // updateSastavForm(domacin, domaciStartnih11, true); } else if (napadaTim == 2) { string strelac = KoDajeGol(gost, gostiStartnih11, false); gostGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateGostRez); forma.RezultatGost.BeginInvoke(updateGol, gostGolovi.ToString()); Thread.Sleep(500); //this.DaLiSteZnali(strelac, "", ""); GoalSoundPlay(); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: GOOOL !!! Strelac: " + strelac); Thread.Sleep(1000); domacin = noviSkilovi(domacin, true, 2); updateSastavForm(domacin, domaciStartnih11, true); //Thread.Sleep(500); // updateSastavForm(gost, gostiStartnih11, false); } } else { // Golman brani if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Kakva odbrana golmana"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Kakva odbrana golmana"); Thread.Sleep(500); } } } else { // Odbrana dobro reaguje if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Odbrana otklanja opasnost"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Odbrana otklanja opasnost"); Thread.Sleep(500); } } } else { // Oduzeta lopta na sredinu if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } } } // ---- Update minuta delUpdateFormInformations updateMin = new delUpdateFormInformations(forma.updateMinut); forma.Minuti.BeginInvoke(updateMin, (i + 1).ToString() + "'"); Thread.Sleep(500); if (i + 1 == 15 || i + 1 == 30 || i + 1 == 45 || i + 1 == 60 || i + 1 == 75) { // ---- Nova dodela skilova ---- domacin = noviSkilovi(domacin, true, 2); gost = noviSkilovi(gost, false, 2); updateSastavForm(domacin, domaciStartnih11, true); updateSastavForm(gost, gostiStartnih11, false); if (i + 1 == 45) { forma.Minuti.BeginInvoke(updateMin, "HT"); Thread.Sleep(5000); } } } int ukupniPosed = domaciPosed + gostiPosed; int procenatDomaci = (int)Math.Round(Math.Round(domaciPosed / (double)ukupniPosed, 2) * 100); int procenatGosti = 100 - procenatDomaci; string statistika = "STATISTIKA" + Environment.NewLine; statistika += Environment.NewLine + "Domaci - Gosti" + Environment.NewLine; statistika += procenatDomaci + " - Posed lopte - " + procenatGosti + Environment.NewLine; statistika += brojNapadaDomaci + " - Broj napada - " + brojNapadaGosti + Environment.NewLine; statistika += (brojNapadaDomaci - brojSredinaDomaci).ToString() + " - Broj izgubljenih lopti na sredini - " + (brojNapadaGosti - brojSredinaGosti).ToString() + Environment.NewLine; statistika += (brojSredinaGosti - brojOdbranaGosti).ToString() + " - Broj sprecenih gol sansi - " + (brojSredinaDomaci - brojOdbranaDomaci).ToString() + Environment.NewLine; statistika += brojOdbranaDomaci + " - Broj sansi za gol - " + brojOdbranaGosti + Environment.NewLine; // MessageBox.Show(statistika, "Statistika"); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, statistika); Thread.Sleep(5000); if (domacinGolovi > gostGolovi) { najboljiIgrac(domacin, domaciStartnih11, true); } else if (domacinGolovi < gostGolovi) { najboljiIgrac(gost, gostiStartnih11, true); } else { Random rand = new Random(); int broj = rand.Next(1, 2); if (broj == 1) { najboljiIgrac(domacin, domaciStartnih11, true); } else { najboljiIgrac(gost, gostiStartnih11, true); } } this.DisposeWave(); }
// ---- Simuliranje utakmice ---- public void simulirajUtakmicu() { double[] domacin = new double[11]; double[] gost = new double[11]; // ---- Dodela skilova ---- domacin = noviSkilovi(domacin, true, 1); gost = noviSkilovi(gost, false, 1); int domacinGolovi = 0; int gostGolovi = 0; delUpdateFormInformations updateDogadjaj = new delUpdateFormInformations(forma.updateDogadjaji); // ---- Krece utakmica ----- for (int i = 0; i < 90; i++) { // korak 1 int napadaTim = izborTimaKojiNapada(); Thread.Sleep(500); // Da se ne bi izgubio pointer u algoritam bool nastavakAkcije = false; bool nikoNemaAkciju = true; if (napadaTim == 1) { nastavakAkcije = true; nikoNemaAkciju = false; } else if (napadaTim == 2) { nastavakAkcije = true; nikoNemaAkciju = false; } if (!nikoNemaAkciju & nastavakAkcije) { // Korak 2 ---- da li je predjen centar if (napadaTim == 1) { nastavakAkcije = sredinaPobedjena(domacin, gost); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Zapocinje akciju"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = sredinaPobedjena(gost, domacin); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Zapocinje akciju"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 3 ---- da li je predjena odbrana if (napadaTim == 1) { nastavakAkcije = odbranaPobedjena(domacin, gost); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaPobedjena(gost, domacin); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 4 --- da li je dat gol if (napadaTim == 1) { nastavakAkcije = odbranaGolmana(domacin, gost); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Prolaze protivnicku odbranu"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaGolmana(gost, domacin); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Prolaze protivnicku odbranu"); Thread.Sleep(500); } // ---- Postignu gol ---- if (nastavakAkcije) { if (napadaTim == 1) { domacinGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateDomacinRez); forma.RezultatDomacin.BeginInvoke(updateGol, domacinGolovi.ToString()); Thread.Sleep(500); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: GOOOL !!!"); Thread.Sleep(500); gost = noviSkilovi(gost, false, 2); } else if (napadaTim == 2) { gostGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateGostRez); forma.RezultatGost.BeginInvoke(updateGol, gostGolovi.ToString()); Thread.Sleep(500); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: GOOOL !!!"); Thread.Sleep(500); domacin = noviSkilovi(domacin, true, 2); } } else { // Golman brani if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Kakva odbrana golmana"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Kakva odbrana golmana"); Thread.Sleep(500); } } } else { // Odbrana dobro reaguje if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Odbrana otklanja opasnost"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Odbrana otklanja opasnost"); Thread.Sleep(500); } } } else { // Oduzeta lopta na sredinu if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } } } // ---- Update minuta delUpdateFormInformations updateMin = new delUpdateFormInformations(forma.updateMinut); forma.Minuti.BeginInvoke(updateMin, (i + 1).ToString() + "'"); Thread.Sleep(500); if (i == 15 || i == 30 || i == 45 || i == 60 || i == 75) { // ---- Nova dodela skilova ---- domacin = noviSkilovi(domacin, true, 2); gost = noviSkilovi(gost, false, 2); } } }
// ---- Update skilova igraca ---- public double[] noviSkilovi(double[] team, bool domacin, int podeliSa) { Random rand = new Random(); string noveOcene = ""; // ---- Generisi random brojeve za oba tima naizmenicno ---- for (int i = 0; i < 11; i++) { int skill = rand.Next(1, 10); team[i] = Math.Round((team[i] + skill) / podeliSa, 1); noveOcene += team[i].ToString() + ';'; } noveOcene = noveOcene.TrimEnd(';'); // ---- Update-ovanje ocene timova na formi if (domacin) { delUpdateFormInformations updatePostava = new delUpdateFormInformations(forma.updateTeamDomacin); forma.RtbSastavDomacin.BeginInvoke(updatePostava, noveOcene); Thread.Sleep(500); } else { delUpdateFormInformations updatePostava = new delUpdateFormInformations(forma.updateTeamGost); forma.RtbSastavGost.BeginInvoke(updatePostava, noveOcene); Thread.Sleep(500); } return team; }
// ---- Simuliranje utakmice ---- public void simulirajUtakmicu() { double[] domacin = new double[11]; double[] gost = new double[11]; // ---- Dodela skilova ---- domacin = noviSkilovi(domacin, true, 1); gost = noviSkilovi(gost, false, 1); int domacinGolovi = 0; int gostGolovi = 0; delUpdateFormInformations updateDogadjaj = new delUpdateFormInformations(forma.updateDogadjaji); // ---- Krece utakmica ----- for (int i = 0; i < 90; i++) { // korak 1 int napadaTim = izborTimaKojiNapada(); Thread.Sleep(500); // Da se ne bi izgubio pointer u algoritam bool nastavakAkcije = false; bool nikoNemaAkciju = true; if (napadaTim == 1) { nastavakAkcije = true; nikoNemaAkciju = false; } else if (napadaTim == 2) { nastavakAkcije = true; nikoNemaAkciju = false; } if (!nikoNemaAkciju & nastavakAkcije) { // Korak 2 ---- da li je predjen centar if (napadaTim == 1) { nastavakAkcije = sredinaPobedjena(domacin, gost); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i+1).ToString() + "' DOMACIN: Zapocinje akciju"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = sredinaPobedjena(gost, domacin); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Zapocinje akciju"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 3 ---- da li je predjena odbrana if (napadaTim == 1) { nastavakAkcije = odbranaPobedjena(domacin, gost); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaPobedjena(gost, domacin); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Lepo razmenjuju pasove i prolaze centar"); Thread.Sleep(500); } if (nastavakAkcije) { // ---- Korak 4 --- da li je dat gol if (napadaTim == 1) { nastavakAkcije = odbranaGolmana(domacin, gost); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Prolaze protivnicku odbranu"); Thread.Sleep(500); } else if (napadaTim == 2) { nastavakAkcije = odbranaGolmana(gost, domacin); // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Prolaze protivnicku odbranu"); Thread.Sleep(500); } // ---- Postignu gol ---- if (nastavakAkcije) { if (napadaTim == 1) { domacinGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateDomacinRez); forma.RezultatDomacin.BeginInvoke(updateGol, domacinGolovi.ToString()); Thread.Sleep(500); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: GOOOL !!!"); Thread.Sleep(500); gost = noviSkilovi(gost, false, 2); } else if (napadaTim == 2) { gostGolovi++; // Update-ujemo dogadjaj na formu delUpdateFormInformations updateGol = new delUpdateFormInformations(forma.updateGostRez); forma.RezultatGost.BeginInvoke(updateGol, gostGolovi.ToString()); Thread.Sleep(500); forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: GOOOL !!!"); Thread.Sleep(500); domacin = noviSkilovi(domacin, true, 2); } } else { // Golman brani if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Kakva odbrana golmana"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Kakva odbrana golmana"); Thread.Sleep(500); } } } else { // Odbrana dobro reaguje if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Odbrana otklanja opasnost"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Odbrana otklanja opasnost"); Thread.Sleep(500); } } } else { // Oduzeta lopta na sredinu if (napadaTim == 1) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' GOST: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } else if (napadaTim == 2) { // Update-ujemo dogadjaj na formu forma.RtbDogadjaji.BeginInvoke(updateDogadjaj, (i + 1).ToString() + "' DOMACIN: Igraci sredine terena veoma dobro pokrivaju protivnike"); Thread.Sleep(500); } } } // ---- Update minuta delUpdateFormInformations updateMin = new delUpdateFormInformations(forma.updateMinut); forma.Minuti.BeginInvoke(updateMin, (i+1).ToString() + "'"); Thread.Sleep(500); if (i == 15 || i == 30 || i == 45 || i == 60 || i == 75) { // ---- Nova dodela skilova ---- domacin = noviSkilovi(domacin, true, 2); gost = noviSkilovi(gost, false, 2); } } }