forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Вопросы по XNA. (http://forum.boolean.name/showthread.php?t=16854)

Nikich 26.06.2012 23:56

Ответ: Вопросы по XNA.
 
Спасибо.
Вот как раз вопрос по инициализации новых вещей. Возьмем к примеру класс Random. Почему, если в самом классе Game1 написать Random rnd; , а затем в методе Initialize() Random rnd= new Random(); то инициализация будет не полной, что ли. То есть в том же методе Update() уже нельзя будет написать rnd.Next(), будет писать что rnd null. А если написать в классе game1 random rnd=new random(), то уже и в методе update() можно использовать rnd?

pax 27.06.2012 00:45

Ответ: Вопросы по XNA.
 
вероятно надо объявлять как Random rnd = null;
Если ругается компилятор, то строка выше это поправит, если ошибка рантаймовая, то получается, что Update вызывается раньше Initialize()

PS: было бы хорошо приводить текст ошибки ;)

radiobutton 27.06.2012 01:18

Ответ: Вопросы по XNA.
 
а зачем тебе глобальная ссылка на объект рандом если ты его создаешь все равно для каждого случая отдельно?

Nikich 27.06.2012 10:02

Ответ: Вопросы по XNA.
 
Если я его для каждого случая отдельно создавать буду, какой же это рандом. Он одно и то же число выдавать будет.

pax 27.06.2012 10:04

Ответ: Вопросы по XNA.
 
Для разных чисел надо задавать разный сид.

radiobutton 27.06.2012 11:46

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Nikich (Сообщение 231589)
Если я его для каждого случая отдельно создавать буду, какой же это рандом. Он одно и то же число выдавать будет.

А ты и так его создаешь для каждого случая отдельно :)
пили тогда сразу Random rnd = new Random() глобально.

Но, когда ты создаешь новый объект Random, он и так сбивается.
Можешь вручную сбивать на time*1000.

Nikich 27.06.2012 11:51

Ответ: Вопросы по XNA.
 
Я не создаю для каждого случая отдельно. Создаю глобально. Мне не выгодно заново создавать, так как придется уж слишком много раз это делать:)

pax 27.06.2012 11:52

Ответ: Вопросы по XNA.
 
Рандом можно инициализировать примерно так:
PHP код:

new Random(unchecked((int) (DateTime.Now.Ticks >> 32))); 


Nikich 27.06.2012 11:54

Ответ: Вопросы по XNA.
 
А если просто New Random()? Разве там автоматически сид не выставляется на текущее время?

pax 27.06.2012 12:02

Ответ: Вопросы по XNA.
 
Если два раза подряд создать рандом, там будут одинаковые сиды, вот можно посмотреть пример с результатами:
http://msdn.microsoft.com/ru-ru/library/ctssatww.aspx (третий по счету)

Но да, он инициализируется текущим временем, если требуется точное не совпадение, лучше задавать вручную.

Nikich 27.06.2012 12:58

Ответ: Вопросы по XNA.
 
Ну ладно, с этим пока что всё нормально. Однако опять появился вопрос. Зачем использовать const? Это как-то память экономит, или просто для того, чтобы случайно не изменить?

radiobutton 27.06.2012 14:28

Ответ: Вопросы по XNA.
 
просто конструктор по умолчанию для рандома сбивает рандом по милисекундам. и поэтому если в одну и туже милисекунду создать, будут одинаковые числа. А если инициализировать тысячными милисекунды, то все норм в принципе =)

Цитата:

Сообщение от Nikich (Сообщение 231600)
Я не создаю для каждого случая отдельно. Создаю глобально. Мне не выгодно заново создавать, так как придется уж слишком много раз это делать:)

ты же вроде писал что у тя глобально тока Random rnd;
а rnd = new Random() в функциях типа Update пишешь.

Nikich 31.07.2012 14:29

Ответ: Вопросы по XNA.
 
Существует ли команда для сдвига одномерного массива?
К примеру, есть массив {1,2,2,2,0,1}, а мне нужно получить {1,2,2,2,1}. Или всё же нужно делать ручками?

pax 31.07.2012 14:32

Ответ: Вопросы по XNA.
 
Проще всего скопировать данные в новый массив, в любом случае надо новый размер массива. Так что Array.Copy

Nikich 31.07.2012 15:07

Ответ: Вопросы по XNA.
 
Можете подсказать, как изменить размер текстуры? Не скейл, а именно удалить из нее пиксель.


Часовой пояс GMT +4, время: 09:07.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot