Так... З чого почати? Напевно, варто згадати, що в грі буде 110 товарів, список яких цілком можна продовжувати розширювати, адже логіка випадкового вибору товару від цього ніяк не постраждає. І будь їх хоч 100500, гра все одно керуватиметься одним і тим же алгоритмом, просто його межі будуть ширші. Але це я так, ліричний відступ. Коли я тестував цей алгоритм, я перевіряв його на списку. Тобто я вставив у гру 110 товарів і 110 цін відповідно, і перевіряв, чи не з'являються дублікати одного й того самого товару.
Список зберігатися окремо від алгоритму, і він звертається до списку виходить 30 разів, щоб набрати потрібну кількість товарів. Звісно, на самому початку, коли я лише налагоджував алгоритм, дублікати були. Хоча начебто якщо замислитись, що складного випадковим чином вибрати 30 товарів зі 110. А ось виявляється є складності, але це тонкощі роботи процедури Random і в це ми лізти не будемо. Скажу лише те, що програма в деяких випадках могла вибрати один і той самий товар кілька разів.
Поки я налагоджував цей алгоритм, у мене траплялися порожні товари. Тобто гра пропускала якісь позиції із 30, і не заповнювала їх. Був і прикол із підстановкою ціни. Справа в тому, що у мене список товарів та список цін відокремлені один від одного. Зробив я це ось чому. Список товару це текстовий список, а список цін зберігається в цифрах. Зрозуміло, що можна зберігати те й інше в одному списку, текстовому, а потім програмно розділяти на дві частини і переводити ціну з тексту в цифру, але навіщо? У результаті підстановки ціни відбувався невеликий казус, і гра вибирала ціну від іншого товару.
Довелося, звичайно, значно ускладнити логіку вибору товару. Тепер при кожному виборі товару гра перевіряє, чи не був він уже обраний. Якщо такий товар вже було обрано, гра шукає будь-який інший товар. Ви можете сказати, що можна було спростити все. Наприклад брати спочатку перші 30 товарів, потім другі 30 товарів. Або зробити якийсь "крок", ну наприклад 1,5,9,13... А наступного разу брати 2,6,10,14... І так по колу...
.png)
І з одного боку ви будете праві. Це значно спрощує і процес написання гри з погляду програмного коду, і полегшує роботу самої гри, оскільки цей алгоритм статичний. Але саме через його статичність мені він і не подобається. Через 3-4 рази гравець вже знатиме напевно, які товари йому запропонує гра наступного разу. Я ж хочу, щоб у грі було більше випадковості, більше рандому. Що б гравець не знав, які товари на нього чекатимуть. Ні, я хочу це зробити не для ускладнення гри, а навпаки, для підживлення до неї інтересу. Особисто мені цікаво грати, коли ти не знаєш, напевно, що буде далі. Коли щоразу починаючи все спочатку, гра починається по-різному. Тому, і тільки з цього, у мене в грі буде дуже багато випадкових подій, які неможливо передбачити.