public void generate_obj() { Random r = new Random(); //тут нужно добавить массив с разными id колдунов - СПИСОК АЙДИШНИКОВ //последний айди колдуна int last_id = arr_witches.GetUpperBound(0); //как минимум должно быть 5 колдуна, максимум - 6 bool original = false; int[] arr_id = new int[r.Next(5, 7)]; arr_id[0] = r.Next(0, last_id + 1); for (int i = 1; i < arr_id.Length; i++) { while (original == false) { arr_id[i] = r.Next(0, last_id + 1); original = true; for (int j = 0; j < i; j++) { if (arr_id[i] == arr_id[j]) { original = false; break; } } } original = false; } //уже сформирован лист со случайными айдишниками arr_matrix = new int[matrix_size, matrix_size]; //генерируем колдунов for (int i = 0; i < arr_id.Length; i++) { Witch human = new Witch(); human.name = arr_witches[arr_id[i], 0]; human.kind = arr_witches[arr_id[i], 1]; //нужен метод для интерактивного общения human.intro_msg = arr_witches[arr_id[i], 2]; human.just_msg = arr_witches[arr_id[i], 3]; human.bad_msg = arr_witches[arr_id[i], 4]; human.success_msg = arr_witches[arr_id[i], 5]; human.new_pos(create_pos("witch")); //генерируем предмет int id = -1; while (id == -1) { int x = r.Next(0, arr_items.GetUpperBound(0) + 1); //выбирает случайный айдишник предмета и проверяет нужен ли он колдуну if (arr_items[x, 1] == human.kind) { id = x; } } Item item = new Item(); item.name = arr_items[id, 0]; item.kind = arr_items[id, 1]; item.new_pos(create_pos("item")); items.Add(item); witches.Add(human); } // генерация ненужных предметов int id_excess = -1; int d = r.Next(3, 6); for (int j = 0; j < d; j++) { id_excess = -1; while (id_excess == -1) { int x = r.Next(0, arr_items.GetUpperBound(0) + 1); for (int k = 0; k < items.Count; k++) { if (arr_items[x, 0] != items[k].name) { id_excess = x; } } } Item excess_item = new Item(); excess_item.name = arr_items[id_excess, 0]; excess_item.kind = arr_items[id_excess, 1]; excess_item.new_pos(create_pos("item")); items.Add(excess_item); } }