Так... С чего бы начать? Наверно стоит вспомнить, что в игре будет 110 товаров, список которых вполне можно продолжать расширять, ведь логика случайного выбора товара от этого никак не пострадает. И будь их хоть 100500, игра будет все равно руководствоваться одним и тем же алгоритмом, просто его пределы будут более широкие. Но это я так, лирическое отступление. Когда я тестировал этот алгоритм, я проверял его просто на списке. То есть я вставил в игру 110 товаров и 110 цен соответственно, и проверял, не появляются ли дубликаты одного и того же товара.
Список храниться отдельно от алгоритма, и он обращается к списку получается 30-ть раз, что бы набрать нужное количество товаров. Естественно в самом начале, когда я только отлаживал алгоритм, дубликаты были. Хотя вроде бы если задуматься, что сложного случайным образом выбрать 30 товаров из 110. А вот оказывается есть сложности, но это тонкости работы процедуры Random и в это мы лезть не будем. Скажу лишь то, что программа в некоторых случаях могла выбрать один и тот же товар несколько раз.
Пока я отлаживал этот алгоритм, у меня случались и пустые товары. То есть игра пропускала какие-то позиции из 30, и не заполняла их. Был и прикол с подстановкой цены. Дело в том, что у меня список товаров и список цен отделены друг от друга. Сделал я это вот по какой причине. Список товара, это текстовый список, а список цен храниться в цифрах. Понятное дело, что можно хранить и то и другое в одном списке, текстовом, а потом программно разделять на две части и переводить цену из текста в цифру, но зачем? В итоге при подстановки цены происходил небольшой казус, и игра выбирала цену от другого товара.
Пришлось конечно значительно усложнить логику выбора товара. Теперь при каждом выборе товара, игра проверяет, не был ли он уже выбран. Если такой товар уже был выбран, игра ищет любой другой товар. Вы можете сказать, что можно было все упростить. Например брать сначала первые 30-ть товаров, потом вторые 30-ть товаров. Или же сделать какой-то "шаг", ну к примеру 1,5,9,13... А в следующий раз брать 2,6,10,14... И так по кругу...
.png)
И с одной стороны вы будите правы. Это значительно упрощает и сам процесс написание игры с точки зрения программного кода, и облегчает работу самой игры, так как этот алгоритм статичный. Но как раз таки из-за его статичности мне он и не нравиться. Через 3-4 раза игрок уже будет знать наверняка, какие товары ему предложит игра в следующий раз. Я же хочу, что бы в игре было больше случайности, больше рандома. Что бы игрок не знал, какие товары его буду ждать. Нет, я хочу это сделать не для усложнения игры, а наоборот, для подпитки к ней интереса. Лично мне интересно играть, когда ты не знаешь наверняка, что будет дальше. Когда каждый раз начиная все сначала, игра начинается по разному. Поэтому, и только по этому, у меня в игре будет очень много случайных событий, которые невозможно будет предугадать.