В начале игры создаются 4 случайные карты, которые хранятся в массиве myArray. При прохождении цикла иногда создаются одинаковые карты. Как можно решить данный вопрос. Наверно вопрос легкий, но не могу его решить. Видимо вопрос не решим придется решать его по кривому(
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControllerCardHero : MonoBehaviour {
public GameObject[] myArray = new GameObject[6];
void Start () {
for ( int i = 0; i < 4; i++) {
int rand = Random.Range (0, myArray.Length);
Instantiate (myArray [rand], myArray [rand].transform.position, myArray [rand].transform.rotation);
}
}
}
по коду у вас получается, что всего карт на выбор у вас 6 (в myArray хранятся все имеющиеся карты). А в момент старта игры вы инициализируете 4 из них в случайном порядке. И удивляетесь что при следующем раунде у вас 2 карты совпадают с прошлым раундом...Это как я понимаю не совсем действительный код и на самом деле в myArray намного больше карт?
Сделаю предположение что на самом деле в myArray намного больше 6 карт, тогда можно применить связанный список, как хранилище "доступных к выбору карт", и получать случайный элемент путем вызова метода Next случайное кол-во раз, и после выбора удалять от из этого списка чтобы он не участвовал в следующем раунде. Когда в этом списке останется меньше карт, чем необходимо - необходимо переинициализировать его снова из массива myArray.
Вы можете сказать что не оптимально вызывать метод Next случайное кол-во раз, но я уверен что это использование операции О(n) не самое страшное в проекте, и всяко лучше пытаться отсеять уже выбранный элемент путем поиска его в другом списке... так как в этом случае в сложность будет точно выше О(n)(хотя математически я вам это не докажу), так как псевдослучайное число с большей вероятностью к концу колоды начнет выдать сериями уже игранные карты и выбор последних карт будет крайне долог.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь работать с базой данных SQLite при помощи EntityFramework на UnityНо получаю исключение:
У меня есть база данных SQL с таблицами, я создаю Модель ADONET EDM, получаю всю базу данных в виде сущностей
подскажите, как с помощью SQL запроса получить два поля из разных таблиц