На втором пикрилейтед — задача из учебника по C++. Вопрос такой: а че от меня хотят-то? Ну, создал я вектор с "рандомными" значениями. Но что значит "целесообразно позволить пользователю самому вводить некоторые значения"? Написать пользователю что-то вроде "введи рандомную последовательность камней, бумаг и ножниц плеез"? Или имеется ввиду, что значения, которые он вводит - это просто его ход (то есть, юзер выбирает предмет, компутер отвечает рандомно выбранным предметом, и определяется, кто победил)? Если все же последнее, то без нормального генератора случайных чисел (по условию задачи, низзя использовать настоящий генератор случайных чисел) как минимум первый ответ компутера не получится сделать непредсказуемым. Максимум, что я смогу сделать — как-то использовать для рандомизации то, что введет пользователь: камень, бумагу или ножницы. Что думаешь ты, анон? Как бы ты решил эту задачу? Код не требую, просто опиши.
>>185781011 (OP) Как по мне - задача тупая. От тебя хотят простую игру, но при этом требуют нагородить генератора псевдослучайных чисел в виде предопределенной последовательности. А ведь можно было бы использовать что-то из стандартной библиотеки.
>Как бы ты решил эту задачу? Дпропнул бы ее с такими тупыми условиями.
Считываешь с клавы число cin >> num от 0 до 2, 0 камень, 1 ножницы 2 бумага, else cout << "wrong input"; далее рандомишь число и находишь остаток от деления на 3, сравниваешь и выводишь результат победителя
>>185782358 Я не правильно понял твои слова: >в каждой новой игре Я думал, ты имеешь ввиду после перезапуска программы. Так — да, норм решение, спасибо.
>>185781011 (OP) Проиграл с мамкиного программиста итт. Вместо алгоритмов, языков и фреймворков ты тратишь время на говно, и к окончанию своей шараги будешь знать только cout << "хуй";
>>185782468 > норм решение Забыл добавить: норм решение, за исключением того, что при первом запуске программы первый ход компутера можно предугадать. Наверное, это неизбежно.
>>185782714 Как тогда просят написать игру, основанную на рандоме, без использования rand? Принеси преподу вариант с rand и дополни его ещё srand(time(NULL)), чтобы не предъявлял. Скажешь, что не понял вектор, сделал как лучше и как проще Это как просить решить квадратное уравнение, но юзер не знает умножения, поэтому делай по-другому
>>185781011 (OP) Заполняешь за вектор, потом читаешь ввод пользователя и выбираешь ответ в зависимости от ввода пользователя и значения из вектора. Например, если пользователь ввел камень, то выбираешь значение из вектора стоящее через 1 от текущего, если ножницы -- то через 2, бумага -- через 5, к примеру.
Есть костыль, что ты заполняшь вектор заранее известными числами, и в зависимости от ввода юзера по какой-нибудь неебически сложной формуле выбираешь какой-то элемент вектора. Со стороны будет казаться довольно рандомно. А вот по какой формуле - это сам гугли. Может типа вначале запускаешь таймер, потом число юзера умножаешь на таймер, находишь остаток от деления на длину вектора и выдаёшь число
>>185782964 >>185783120 Не учусь пока, сам решил попробовать учиться по книжке. Язык (основы) знаю, с программированием знаком, но думал, что, возможно, прочитав от корки до корки учебник, я узнаю побольше о языке. Пока только приходится ебаться с тупыми задачками.
>>185781011 (OP) 1) пользователю на инпут камень, ножницы, бумага 2) у тебя есть массив с тремя значениями 3) после инпута дергаешь элемент массива с рандомным индексом (не помню, если ли в плюсах рандомгенератор из коробки)
Что думаете о таком подходе: объявляю переменную seed, равную нулю. К ней с каждой новой игрой буду прибавлять то, что вводит пользователь (значение от 1 до 3). Затем применяю формулу на пикриле. 25 - длина вектора; цикл нужен только для того, чтобы продемонстрировать, то, что выдает формула для разных значений seed. Что думаете?
>>185781011 (OP) Помню в своей шараге эту задачу решал, так ещё и усложнял её до китайского варианта, или какого-то там. Интерфейс ещё делал, всякое говно.
3 кнопки внизу, 1 вверху. Если игрок выбирает ножницы и текущее время (милисекунды) от 0 до 333, то враг выбирает ножницы. Если игрок выбирает ножницы и текущее время (милисекунды) от 334 до 666, то враг выбирает бумагу. Если игрок выбирает ножницы и текущее время (милисекунды) от 667 до 999, то враг выбирает камень.
Если игрок выбирает бумагу и текущее время (милисекунды) от 0 до 333, то враг выбирает камень. Если игрок выбирает бумагу и текущее время (милисекунды) от 334 до 666, то враг выбирает ножницы. Если игрок выбирает бумагу и текущее время (милисекунды) от 667 до 999, то враг выбирает бумагу.
Если игрок выбирает камень и текущее время (милисекунды) от 0 до 333, то враг выбирает бумагу. Если игрок выбирает камень и текущее время (милисекунды) от 334 до 666, то враг выбирает камень. Если игрок выбирает камень и текущее время (милисекунды) от 667 до 999, то враг выбирает ножницы. ...
>>185787718 Я понимаю. Его описали в целом, а мне интересно, норм ли конкретно эта функция, или можно улучшить? И не надо кидаться оскорблениями, это неправильно.
На втором пикрилейтед — задача из учебника по C++. Вопрос такой: а че от меня хотят-то? Ну, создал я вектор с "рандомными" значениями. Но что значит "целесообразно позволить пользователю самому вводить некоторые значения"? Написать пользователю что-то вроде "введи рандомную последовательность камней, бумаг и ножниц плеез"? Или имеется ввиду, что значения, которые он вводит - это просто его ход (то есть, юзер выбирает предмет, компутер отвечает рандомно выбранным предметом, и определяется, кто победил)? Если все же последнее, то без нормального генератора случайных чисел (по условию задачи, низзя использовать настоящий генератор случайных чисел) как минимум первый ответ компутера не получится сделать непредсказуемым. Максимум, что я смогу сделать — как-то использовать для рандомизации то, что введет пользователь: камень, бумагу или ножницы. Что думаешь ты, анон? Как бы ты решил эту задачу? Код не требую, просто опиши.