Вот мое предположение о том, как решить вашу проблему.
Иметь список организмов, которые представляют все возможные организмы в текущем поколении.
Каждый организм хранит свой генетический состав.Вам не нужны обратные ссылки на родительские организмы (вас не интересуют предыдущие поколения).
Затем, когда пользователь выбирает выбранную пару, очистите список и сгенерируйте новый список с этими двумя организмами, с каждымВозможная комбинация генов.
Затем нарисуйте список на экране и позвольте пользователю выбрать еще два.
РЕДАКТИРОВАТЬ
Также здесьэто случайное представление о том, как генерировать ваши гаметы для произвольного размера.Двоичные числа медленно перебирают все 0 и 1.Таким образом, если бы вы пошли от 0 до 7, вы бы проходили каждую комбинацию от 000 до 111. Таким образом, вы можете думать о 0 как о левом аллеле, а о 1 - как о правом аллеле (например, число 5,с представлением 101 будет означать гамету AbC для генотипа aAbBcC).Поэтому вы можете генерировать каждую возможную комбинацию аллелей, когда переходите от 0 до 2 ^ (numOfAlleles-1) (включительно).Это потребует сдвига битов, чтобы определить, какие биты установлены.
Остальное будет просто квадрат с ячейками.