Ответы пользователя по тегу C
  • Куда копать, игра 21 очко?

    Duha666
    @Duha666
    Если карты достаются не по очереди, а как в блекджеке. то могу предложить следующий вариант написания. Если не так, то думаю ты поправишь сам.

    Игрок №1 набирает карты. Делаем бесконечный цикл. В нем спрашиваем что игрок хочет сейчас - остановиться или брать. Если брать, то вызываем некоторую функцию getNewCard(), которую я опишу ниже. Она вернет очки за карту. Если перебор или игрок сказал остановиться, то выходим из цикла. Кстати при переборе количество очков можно приравнять к -1, так будет проще.

    Аналогично для игрока №2. Потом сравниваем итог.
    Теперь о функции getNewCard(). Ей нужно знать какие карты уже были выложены. Поэтому можно хранить хотя бы массив из 36 значений карт( для первого раза сойдет и так вариант, его легче понять) и еще один массив в котором храним, выдана ли это карта. Еще храним сколько карт осталось. Когда вызывается функция, то генерируем случайное число от 0 до количества оставшихся карт. Затем отсчитываем в массиве такую по счету неиспользованную карту. Помечаем ее использованной, возвращаем ее количество очков.
    Ответ написан
    6 комментариев