Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151

Рандом и тип Texture*

12.05.2014, 16:47. Показов 1712. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Сразу хочу отметить, что в Visual C++ я не знаю вообще ничего, поэтому пишу сюда.
У меня есть исходники open-source программы - космического симулятора, у нас проект по ее развитию, но в основном работаем над наполнением дистрибутива, исходный код модифицируем потихоньку, что умеем. Вобщем там в одном месте (файл render.cpp, строка 1263) есть переменная и ей присваивается адрес до файла с текстуркой.
C++
1
2
3
4
5
static Texture* glareTex = NULL;
 
...
 
glareTex = LoadTextureFromFile("textures/flare.jpg");
Где то этот glareTex уже конкретно применяется, но вот что необходимо сделать: массив из 10 текстурок, находящихся в папке textures/flares и чтобы там, где текстура конкретно применяется (а может хватит и того, места где к ней указывается путь), нужно сделать рандомный выбор одной текстуры из массива. Очень прошу кого-нибудь помочь.

Файл приложить не могу, он превышает размер, поэтому оставляю ссылку на репозиторий. Файл render.cpp находится по адресу: \src\celengine\render.cpp.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2014, 16:47
Ответы с готовыми решениями:

Рандом с появлением групбоксов, рандом с расположением ответов в программе тестирования
Дали задание сделать тест с рандом выдачей вопросов(групбокс) и рандом расположения ответов(радиобаттон), вопросы будут находится в самой...

Рандом в пайтон (аппаратный рандом для генерации паролей)
суть такова есть такой скрипт на питоне wavBuf = dwParam1.contents if wavBuf.dwBytesRecorded > 0 : bits =...

VBScript-овский рандом совсем не рандом
Не знаю, может я ошибаюсь, но по-моему VBScript-овский рандом совсем не рандом, т.е., генерит он вполне закономерно. Кто-нибудь слышал о...

18
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
13.05.2014, 13:12
C++
1
2
3
4
5
6
static Texture* glareTex[10] = NULL;
 
...
 
glareTex[i] = LoadTextureFromFile("textures/flare_i.jpg");
glareTex[i+1] = LoadTextureFromFile("textures/flare_i1.jpg");
Типа того чтоль?
1
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
13.05.2014, 13:17  [ТС]
SatanaXIII, верно, только без i.
C++
1
2
3
4
5
6
static Texture* glareTex[10] = NULL;
 
...
 
glareTex[1] = LoadTextureFromFile("textures/flare1.jpg");
glareTex[2] = LoadTextureFromFile("textures/flare2.jpg");
Так будет компилироваться? И с какого числа там нумерация, с нули или единицы?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
13.05.2014, 13:19
Нумерация с нуля:
C++
1
2
glareTex[0] = LoadTextureFromFile("textures/flare1.jpg");
glareTex[1] = LoadTextureFromFile("textures/flare2.jpg");
1
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
13.05.2014, 13:21  [ТС]
SatanaXIII, спасибо. Но вы проверяли, компилируется такой массив вообще? У меня просто нет VS, мне нужно уже рабочий код, чтобы человеку отправить))
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
13.05.2014, 13:24
Alexell, если ваш код из первого поста компилируется, то и этот должен. Конкретнее ответить не могу.
0
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 09:22  [ТС]
SatanaXIII, это не весь код, а вырезка...

Добавлено через 19 часов 30 минут
SatanaXIII, я чуть не забыл, мы разобрались с объявлением массива, хоть я еще и не проверил это, но забыли про рандомный выбор из массива.
Т.е. я сделаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
static Texture* glareTexMass[10] = NULL;
static Texture* glareTex = NULL;
 
...
 
glareTexMass[1] = LoadTextureFromFile("textures/flare1.jpg");
glareTexMass[2] = LoadTextureFromFile("textures/flare2.jpg");
 
...
 
glareTex = рандомный элемент glareTexMass.
Как это сделать?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.05.2014, 09:44
C++
11
glareTex = glareTexMass[ rand()%10 ];
1
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 09:46  [ТС]
SatanaXIII, спасибо. А randomize(); перед этим выполнять не надо?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.05.2014, 09:51
Лучший ответ Сообщение было отмечено Alexell как решение

Решение

Цитата Сообщение от Alexell Посмотреть сообщение
А randomize(); перед этим выполнять не надо?
Конечно пригодится. Только не randomize, а
C++
1
2
3
#include <time.h>
 
srand(time(NULL)); // Где-нибудь в начале прграммы
1
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 09:56  [ТС]
SatanaXIII, спасибо. Наверное придется самому скачать VS и попробовать, чтоб человеку зря не кидать не проверенный код.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.05.2014, 09:59
Цитата Сообщение от Alexell Посмотреть сообщение
самому скачать VS и попробовать, чтоб человеку зря не кидать не проверенный код.
Вот это верное решение.
0
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 12:06  [ТС]
SatanaXIII, попробовал иошибка:
C++
1
2
.\src\celengine\render.cpp(177) : error C2440: 'initializing' : cannot convert from 'int' to 'Texture *[5]'
        There are no conversions to array types, although there are conversions to references or pointers to arrays
Строка 177: static Texture* glareTexMass[5] = NULL; //Alexell
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.05.2014, 12:12
Это значит, что надо инициализировать элементы массива glareTexMass не целочисленным значением, а значением, имеющим тип Texture.
0
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 12:13  [ТС]
SatanaXIII, и как это сделать?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.05.2014, 12:24
Черт его знает. Нужен конструктор этого класса. С помощью которого и создать экземпляр, который уже поместить в массив. Без остального кода я ничего не могу сказать.
0
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 12:38  [ТС]
SatanaXIII, в первом сообщении я дал ссылку на репозиторий. Сейчас попробовал вот так:
C++
1
static Texture* glareTexMass[5] = {NULL,NULL,NULL,NULL,NULL}; //Alexell
Компилировалось без ошибок, но блики вообще пропали, не загружаются...

Добавлено через 11 минут
SatanaXIII, я вот что придумал, думаю это будет лучше:
C++
1
2
3
4
5
int glareR; //Alexell
static Texture* glareTex = NULL;
...
glareR = rand()%5;
glareTex = LoadTextureFromFile("textures/flares/flare"+glareR+".jpg");
Только я не знаю как приклеить значение glareR, оператор "+" как C++ Builder не работат. Подскажи, как приклеить?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
14.05.2014, 12:50
Как вариант:
C++
1
LoadTextureFromFile("textures/flares/flare"+IntToStr(glareR)+".jpg");
Добавлено через 1 минуту
Хотя постойте. А чего вы забыли в ветке по Visual C++, когда у вас Builder?
0
Мы сами всего творцы!
 Аватар для Alexell
60 / 23 / 1
Регистрация: 06.06.2012
Сообщений: 151
14.05.2014, 13:54  [ТС]
SatanaXIII, error C3861: 'IntToStr': identifier not found

Добавлено через 35 секунд
SatanaXIII, я пользуюсь Builder, но сейчас мне именно в VS надо сделать, потому я здесь. VS не знаю вовсем(

Добавлено через 1 час 2 минуты
Все, сделал наконец, были с рандомом проблемы, но исправил. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2014, 13:54
Помогаю со студенческими работами здесь

Sf::Texture::GetMaximumSize()
Как правильно воспользоваться этой командой ? Где и как её написать чтоб у меня загрузилась текстура ( ошибка failed to create texture,...

Assimp texture
Здравствуйте уважаемые форумчане for (unsigned int i = 0; i &lt; scene-&gt;mNumMeshes; ++i) { aiMesh *mesh = scene-&gt;mMeshes; ...

Не обновляется RawImage.texture
Привет! Недавно приступил к освоению Unity. Встала задача отображения прицела. Создал Canvas, на него повесил RawImage. К RawImage...

SFML Texture loadFromFile
Программа компилируется, но вылетает при вызове tile1.loadFromFile(&quot;white16.png&quot;);(Файлы находятся в директории). В MSVS 2010...

Texture Format.Yuy2
Прошу помощи, не могу создать текстуру и device3d с форматом данных Yuy2? вот этот код всегда выдаёт ошибку. Версия DX.NET ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru