|
С# Средство разработки на платформе .Net |
26.06.2012, 23:56
|
#121
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
Спасибо.
Вот как раз вопрос по инициализации новых вещей. Возьмем к примеру класс Random. Почему, если в самом классе Game1 написать Random rnd; , а затем в методе Initialize() Random rnd= new Random(); то инициализация будет не полной, что ли. То есть в том же методе Update() уже нельзя будет написать rnd.Next(), будет писать что rnd null. А если написать в классе game1 random rnd=new random(), то уже и в методе update() можно использовать rnd?
|
(Offline)
|
|
27.06.2012, 00:45
|
#122
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы по XNA.
вероятно надо объявлять как Random rnd = null;
Если ругается компилятор, то строка выше это поправит, если ошибка рантаймовая, то получается, что Update вызывается раньше Initialize()
PS: было бы хорошо приводить текст ошибки
|
(Offline)
|
|
27.06.2012, 01:18
|
#123
|
Бывалый
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений (для 546 пользователей)
|
Ответ: Вопросы по XNA.
а зачем тебе глобальная ссылка на объект рандом если ты его создаешь все равно для каждого случая отдельно?
|
(Offline)
|
|
27.06.2012, 10:02
|
#124
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
Если я его для каждого случая отдельно создавать буду, какой же это рандом. Он одно и то же число выдавать будет.
|
(Offline)
|
|
27.06.2012, 10:04
|
#125
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы по XNA.
Для разных чисел надо задавать разный сид.
|
(Offline)
|
|
27.06.2012, 11:46
|
#126
|
Бывалый
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений (для 546 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от Nikich
Если я его для каждого случая отдельно создавать буду, какой же это рандом. Он одно и то же число выдавать будет.
|
А ты и так его создаешь для каждого случая отдельно
пили тогда сразу Random rnd = new Random() глобально.
Но, когда ты создаешь новый объект Random, он и так сбивается.
Можешь вручную сбивать на time*1000.
|
(Offline)
|
|
27.06.2012, 11:51
|
#127
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
Я не создаю для каждого случая отдельно. Создаю глобально. Мне не выгодно заново создавать, так как придется уж слишком много раз это делать
|
(Offline)
|
|
27.06.2012, 11:52
|
#128
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы по XNA.
Рандом можно инициализировать примерно так:
new Random(unchecked((int) (DateTime.Now.Ticks >> 32)));
|
(Offline)
|
|
27.06.2012, 11:54
|
#129
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
А если просто New Random()? Разве там автоматически сид не выставляется на текущее время?
|
(Offline)
|
|
27.06.2012, 12:02
|
#130
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы по XNA.
Если два раза подряд создать рандом, там будут одинаковые сиды, вот можно посмотреть пример с результатами:
http://msdn.microsoft.com/ru-ru/library/ctssatww.aspx (третий по счету)
Но да, он инициализируется текущим временем, если требуется точное не совпадение, лучше задавать вручную.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.06.2012, 12:58
|
#131
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
Ну ладно, с этим пока что всё нормально. Однако опять появился вопрос. Зачем использовать const? Это как-то память экономит, или просто для того, чтобы случайно не изменить?
|
(Offline)
|
|
27.06.2012, 14:28
|
#132
|
Бывалый
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений (для 546 пользователей)
|
Ответ: Вопросы по XNA.
просто конструктор по умолчанию для рандома сбивает рандом по милисекундам. и поэтому если в одну и туже милисекунду создать, будут одинаковые числа. А если инициализировать тысячными милисекунды, то все норм в принципе =)
Сообщение от Nikich
Я не создаю для каждого случая отдельно. Создаю глобально. Мне не выгодно заново создавать, так как придется уж слишком много раз это делать
|
ты же вроде писал что у тя глобально тока Random rnd;
а rnd = new Random() в функциях типа Update пишешь.
|
(Offline)
|
|
31.07.2012, 14:29
|
#133
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
Существует ли команда для сдвига одномерного массива?
К примеру, есть массив {1,2,2,2,0,1}, а мне нужно получить {1,2,2,2,1}. Или всё же нужно делать ручками?
|
(Offline)
|
|
31.07.2012, 14:32
|
#134
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы по XNA.
Проще всего скопировать данные в новый массив, в любом случае надо новый размер массива. Так что Array.Copy
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
31.07.2012, 15:07
|
#135
|
Бывалый
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений (для 275 пользователей)
|
Ответ: Вопросы по XNA.
Можете подсказать, как изменить размер текстуры? Не скейл, а именно удалить из нее пиксель.
Последний раз редактировалось Nikich, 31.07.2012 в 16:51.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:29.
|