private void Generation_Click(object sender, EventArgs e) { // horisontal: form width = max object width - 18 // vertical: form height = max object height - 48 // textBox1.Text = 3.ToString(); //MountainNumber.Text = 1.ToString(); //RiverNumber.Text = 1.ToString(); //ClinicNumber.Text = 10.ToString(); //PitNumber.Text = 10.ToString(); //proprietorExists.Checked = true; //eggExists.Checked = true; //elfExists.Checked = true; //hatExists.Checked = true; //ozoneExists.Checked = true; //combatForceOptions.SelectedIndex = 1; //killOptions.SelectedIndex = 2; if (killOptions.SelectedIndex < 0) { MessageBox.Show("Please choose kill options", "Warning: No choice of kill options"); return; } if (combatForceOptions.SelectedIndex < 0) { MessageBox.Show("Please choose combat force options", "Warning: No choice of combat options"); return; } Random random = new Random(Guid.NewGuid().GetHashCode()); BattleField.Top = groupBox1.Top; BattleField.Left = groupBox1.Left; BattleField.Width = Width - groupBox1.Left - 10 - 10; BattleField.Height = Height - groupBox1.Top - 35 - 10; groupBox1.Visible = false; //groupBox2.Visible = false; Result.Visible = false; BattleField.Visible = true; Result.Visible = false; Result.Rows.Clear(); #region player initialization players = new PlayerGroup(); StreamReader PlayerName; try { PlayerName = new StreamReader(@"./PlayerName.txt"); } catch (FileNotFoundException) { MessageBox.Show(@"请确认PlayerName.txt和此程序在同一路径。", "未发现PlayerName.txt"); CleanUp(); return; } int order = 0; string nameTemp = ""; while (!PlayerName.EndOfStream) { nameTemp = PlayerName.ReadToEnd(); } string[] names = nameTemp.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); if (names.Length <= 1) { MessageBox.Show("请添加至少2名玩家。", "玩家太少啦"); CleanUp(); return; } Player.PlayerNumber = names.Length; Player.PlayerRemainedNumber = names.Length; foreach (var name in names) { var p = new Player(order, combatForceOptions.SelectedIndex, BattleField, (int)TeamNumber.Value) { PlayerName = name }; p.PlayerLabel.Text = $"{p.Team.ToString()} {p.PlayerName} {p.CombatForceLevel.ToString()}"; players.AddPlayer(p); ++order; } PlayerName.Close(); if (proprietorExists.Checked) { proprieter = new Proprieter(BattleField); players.AddPlayer(proprieter); } if (eggExists.Checked) { egg = new Egg(BattleField); players.AddPlayer(egg); } if (elfExists.Checked) { elf = new Elf(BattleField); players.AddPlayer(elf); } if (hatExists.Checked) { hat = new Hat(combatForceOptions.SelectedIndex, BattleField); players.AddPlayer(hat); } if (ozoneExists.Checked) { ozone = new Ozone(combatForceOptions.SelectedIndex, BattleField); players.AddPlayer(ozone); } #endregion int Temp; if (!int.TryParse(MountainNumber.Text, out Temp)) { MessageBox.Show("Invalid mountain number"); CleanUp(); MountainNumber.Text = "山的数量"; return; } else { Temp = Temp <= 0 ? 1 : Temp; mountains = new Mountain[Temp]; double switchL = 5 * (Math.Atan(-Temp / 10) / 2 + Math.PI / 4); for (int i = 0; i < Temp; i++) { int rand = random.Next(5); mountains[i] = new Mountain(rand, switchL, BattleField); } }// Mountain if (!int.TryParse(RiverNumber.Text, out Temp)) { MessageBox.Show("Invalid river number"); CleanUp(); RiverNumber.Text = "河的数量"; return; } else { Temp = Temp <= 0 ? 1 : Temp; rivers = new River[Temp]; double switchL = 5 * (Math.Atan(-Temp / 10) / 8 + Math.PI / 16); for (int i = 0; i < Temp; i++) { rivers[i] = new River(switchL, BattleField); } }// River if (!int.TryParse(ClinicNumber.Text, out Temp)) { MessageBox.Show("Invalid clinic number"); CleanUp(); ClinicNumber.Text = "医疗站数量"; return; } else { Temp = Temp <= 0 ? 1 : Temp; clinics = new Clinic[Temp]; Clinic.NumberOfClinic = Temp; for (int i = 0; i < Temp; i++) { clinics[i] = new Clinic(10, 10, BattleField); } }// Clinic if (!int.TryParse(PitNumber.Text, out Temp)) { MessageBox.Show("Invalid pit number"); CleanUp(); PitNumber.Text = "坑的数量"; return; } else { Temp = Temp <= 0 ? 1 : Temp; pits = new Pit[Temp]; for (int i = 0; i < Temp; i++) { pits[i] = new Pit(i, 10, 10, BattleField); } }// Pit isGenerated = true; playerRemained.Text = players.Count.ToString(); Number.Text = Player.PlayerNumber.ToString(); RandomGeneration.Enabled = false; generation.Enabled = false; start.Enabled = true; clear.Enabled = true; }
private void Generation_Click(object sender, EventArgs e) { // horisontal: form width = max object width - 18 // vertical: form height = max object height - 48 textBox1.Text = 3.ToString(); MountainNumber.Text = 40.ToString(); RiverNumber.Text = 20.ToString(); ClinicNumber.Text = 10.ToString(); PitNumber.Text = 10.ToString(); proprietorExists.Checked = true; eggExists.Checked = true; elfExists.Checked = true; hatExists.Checked = true; ozoneExists.Checked = true; combatForceOptions.SelectedIndex = 2; if (combatForceOptions.SelectedIndex < 0) { MessageBox.Show("Please choose combat force options", "Warning: No choice of combat options"); return; } Random random = new Random(Guid.NewGuid().GetHashCode()); BattleField.Top = groupBox1.Top; BattleField.Left = groupBox1.Left; BattleField.Width = this.Width - groupBox1.Left - 10 - 10; BattleField.Height = this.Height - groupBox1.Top - 35 - 10; groupBox1.Visible = false; groupBox2.Visible = false; BattleField.Visible = true; int Temp = 0; if (!int.TryParse(textBox1.Text, out Temp)) { textBox1.Text = "Invalid input"; return; } else { Player.PlayerNumber = Temp; playerRemainedNumber = Temp; if (proprietorExists.Checked) { proprieter = new Proprieter(BattleField); } if (eggExists.Checked) { egg = new Egg(BattleField); } if (elfExists.Checked) { elf = new Elf(BattleField); } if (hatExists.Checked) { hat = new Hat(combatForceOptions.SelectedIndex, BattleField); } if (ozoneExists.Checked) { ozone = new Ozone(combatForceOptions.SelectedIndex, BattleField); } players = new Player[Temp]; StreamReader PlayerName = new StreamReader(@"./PlayerName.txt"); for (int i = 0; i < Temp; i++) { players[i] = new Player(i, combatForceOptions.SelectedIndex, BattleField); players[i].PlayerLabel.Text = PlayerName.ReadLine() + " " + players[i].CombatForceLevel.ToString(); } PlayerName.Close(); // Horizontal Order Sorting for (int i = 0; i < Player.PlayerNumber; i++) { for (int j = 0; j < Player.PlayerNumber; j++) { if (players[i].PlayerLabel.Left > players[j].PlayerLabel.Left && players[i].HorizontalOrder < players[j].HorizontalOrder) { int temp = players[i].HorizontalOrder; players[i].HorizontalOrder = players[j].HorizontalOrder; players[j].HorizontalOrder = temp; } } if (proprietorExists.Checked) { int temp = random.Next(14); if (temp == 0) { switch (proprieter.FistProprieter) { case 0: players[i].FingerGuessState = 2; break; case 1: players[i].FingerGuessState = 0; break; case 2: players[i].FingerGuessState = 1; break; default: break; } } else if (temp < 4) { players[i].FingerGuessState = proprieter.FistProprieter; } else { switch (proprieter.FistProprieter) { case 0: players[i].FingerGuessState = 1; break; case 1: players[i].FingerGuessState = 2; break; case 2: players[i].FingerGuessState = 0; break; default: break; } } } } }// player number if (!int.TryParse(MountainNumber.Text, out Temp)) { MountainNumber.Text = "Invalid input"; return; } else { mountains = new Mountain[Temp]; double switchL = 5 * (Math.Atan(-Temp / 10) / 2 + Math.PI / 4); for (int i = 0; i < Temp; i++) { mountains[i] = new Mountain(Temp, switchL, players[0], BattleField); } }// Mountain if (!int.TryParse(RiverNumber.Text, out Temp)) { RiverNumber.Text = "Invalid input"; return; } else { rivers = new River[Temp]; double switchL = 5 * (Math.Atan(-Temp / 10) / 8 + Math.PI / 16); for (int i = 0; i < Temp; i++) { rivers[i] = new River(Temp, switchL, players[0], BattleField); } }// River if (!int.TryParse(ClinicNumber.Text, out Temp)) { ClinicNumber.Text = "Invalid input"; return; } else { clinics = new Clinic[Temp]; for (int i = 0; i < Temp; i++) { clinics[i] = new Clinic(10, 10, BattleField); } }// Clinic if (!int.TryParse(PitNumber.Text, out Temp)) { PitNumber.Text = "Invalid input"; return; } else { pits = new Pit[Temp]; for (int i = 0; i < Temp; i++) { pits[i] = new Pit(10, 10, BattleField); } }// Pit isGenerated = true; playerRemained.Text = playerRemainedNumber.ToString(); generation.Enabled = false; start.Enabled = true; clear.Enabled = true; }