|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
||||||
Повторный возврат рандомного значения ,без изменения значения21.10.2016, 11:06. Показов 1090. Ответов 15
Метки нет (Все метки)
Добрый день.
Пишу простую консольную игру Кости. Есть 4-е функции прорисовки костей (2-е на кости игрока и 2-е на кости ПК). Каждая из этих функций берет рандомное значение из 4-х соотв.функций. Проблема в том, что для сравнения результатов я обращаюсь к функции рандома ,но она заново отрабатывается и дает уже не то значение, которое ранее давала для варианта кости. Подскажите, как получить то значение которое использует функция прорисовки кости для сравнения очков так , что бы онор соответствовало выпавшей кости.Прилагаю код,там по прорисовке только для 2-х костей,2-ва других аналогичны. Спасибо.
0
|
||||||
| 21.10.2016, 11:06 | |
|
Ответы с готовыми решениями:
15
Повторный возврат нового значения Вычислить обратные значения тех чисел, значения которых не равны нулю, остальные оставить без изменения Возврат более одного найденного значения без повторений |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 21.10.2016, 14:42 | |
|
Ну сохраняй его, чтобы функцию не вызывать два раза.
0
|
|
|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
|
| 21.10.2016, 15:26 [ТС] | |
|
Ну вот я не понимаю как это сделать.
1.Функция рандома после выполнения возвращает значение. 2.Это значение принимается функцией прорисовки и она выполняется. Так вот я не знаю как мне сохранить значение из пункта 1. ,не обращаясь к функции заново, помогите, пожалуйста.
0
|
|
|
Вездепух
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,219
|
||
| 21.10.2016, 18:35 | ||
srand(time(0)) перед вызовом rand().srand должен вызываться один раз на старте программы. Ни в коем случае нельзя вызывать srand перед каждым rand, а уж в варианте srand(time(0)) - и подавно. Неудивительно, что получается одно и то же число...
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 21.10.2016, 19:30 | |
|
0
|
|
|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
|||||||
| 21.10.2016, 20:36 [ТС] | |||||||
|
Только как ? Ну вот :
Но если потом эта переменная является каким-либо операндом,то она по-любому обращается к той функции и получает Новое значение.Я вот и не понимаю как один раз выдать рандом, а потом его использовать как просто число, а не возвращаемое значение функции.Как-то так.(
0
|
|||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 21.10.2016, 20:39 | |
|
Переменная не может никуда обратиться сама по себе.
В каких именно строках этот двойной вызов происходит?
0
|
|
|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
|||||||||
| 21.10.2016, 20:58 [ТС] | |||||||||
|
Добавлено через 1 минуту
get_random_pc_dice_1() - функция возвращающая рандомное число от 1 до 6 другой функции,которая , в зависимости от полученного значения, оператором switch выбирает соответствующий полученному значению case, в котором выполняется прорисовка кубика(кости). get_random_pc_dice_2() - то же,что и предыдущее, только для второго кубика. Так вот после прорисовки кубиков, я хочу сложить их значения, то есть значения полученные ранее из 2-х указанных функций и сохранить эту сумму в переменную pc_score.Но проходя дебаггером, я на этапе сложения вижу ,что возвращаемые значения не соответствуют тем,что получали функции прорисовки, соответственно результат не верный.
0
|
|||||||||
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
|||
| 21.10.2016, 21:08 | |||
|
Если правильно понял, ты эти значения хочешь сохранить, чтобы потом складывать (это из pc_dice_1() и pc_dice_2)?
0
|
|||
|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
||
| 21.10.2016, 22:39 [ТС] | ||
|
Совершенно верно. Хочу сложить pc_dice_1() и pc_dice_2) и get_random_player_dice_1() и get_random_player_dice_2() И сравнить суммы.
0
|
||
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
||
| 21.10.2016, 22:45 | ||
|
1) сделай возврат этих переменных из функций; 2) создавай pc_chance_1 и pc_chance_2 не в функциях, а в main(), а в функции передавай их по ссылке;
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 21.10.2016, 22:47 | |
|
Сделай, чтобы pc_dice_1() возвращала полученное от get_random_pc_dice_1() значение, сохраняй его, а повторный вызов не делай.
Добавлено через 1 минуту И то, о чём TheCalligrapher писал, не забудь.
0
|
|
|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
||||||||
| 22.10.2016, 20:03 [ТС] | ||||||||
Ребят ,может вы мне пример какой-то напишите простой, с подобными условиями,для обьяснения.
0
|
||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 22.10.2016, 20:52 | |
|
Строки 11-17 вставь перед 26-й.
1
|
|
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
|||||||
| 22.10.2016, 21:12 | |||||||
1
|
|||||||
|
2 / 2 / 2
Регистрация: 21.10.2016
Сообщений: 68
|
|||||
| 22.10.2016, 22:02 [ТС] | |||||
|
Считает правильно. На этом этапе спасибо ВСЕМ. Добавлено через 25 минут Добавлено через 6 минут У меня была проблема в том,что я сначала выполнял pc_dice_1() для прорисовки кубика, а потом опять к ней обращался для сохранения возвращаемого ею значения и вот в этот момент она отрабатывалась по 2-му кругу... Спасибо.
0
|
|||||
| 22.10.2016, 22:02 | |
|
Помогаю со студенческими работами здесь
16
Если (x+y+z) > 10, то умножить на 10 наименьшее из x, y, z. Иначе значения x, y, z оставить без изменения Изменение текста элементов привязанному к данным ComboBox без изменения его значения
Вывод рандомного значения в одинаковых блоках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|