Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 26.06.2012, 23:56   #121
Nikich
Бывалый
 
Регистрация: 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
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

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

PS: было бы хорошо приводить текст ошибки
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 01:18   #123
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Вопросы по XNA.

а зачем тебе глобальная ссылка на объект рандом если ты его создаешь все равно для каждого случая отдельно?
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 10:02   #124
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Если я его для каждого случая отдельно создавать буду, какой же это рандом. Он одно и то же число выдавать будет.
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 10:04   #125
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

Для разных чисел надо задавать разный сид.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 11:46   #126
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Вопросы по XNA.

Сообщение от Nikich Посмотреть сообщение
Если я его для каждого случая отдельно создавать буду, какой же это рандом. Он одно и то же число выдавать будет.
А ты и так его создаешь для каждого случая отдельно
пили тогда сразу Random rnd = new Random() глобально.

Но, когда ты создаешь новый объект Random, он и так сбивается.
Можешь вручную сбивать на time*1000.
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 11:51   #127
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Я не создаю для каждого случая отдельно. Создаю глобально. Мне не выгодно заново создавать, так как придется уж слишком много раз это делать
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 11:52   #128
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

Рандом можно инициализировать примерно так:
new Random(unchecked((int) (DateTime.Now.Ticks >> 32))); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 11:54   #129
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

А если просто New Random()? Разве там автоматически сид не выставляется на текущее время?
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 12:02   #130
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

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

Но да, он инициализируется текущим временем, если требуется точное не совпадение, лучше задавать вручную.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (27.06.2012)
Старый 27.06.2012, 12:58   #131
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Ну ладно, с этим пока что всё нормально. Однако опять появился вопрос. Зачем использовать const? Это как-то память экономит, или просто для того, чтобы случайно не изменить?
(Offline)
 
Ответить с цитированием
Старый 27.06.2012, 14:28   #132
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Вопросы по XNA.

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

Сообщение от Nikich Посмотреть сообщение
Я не создаю для каждого случая отдельно. Создаю глобально. Мне не выгодно заново создавать, так как придется уж слишком много раз это делать
ты же вроде писал что у тя глобально тока Random rnd;
а rnd = new Random() в функциях типа Update пишешь.
(Offline)
 
Ответить с цитированием
Старый 31.07.2012, 14:29   #133
Nikich
Бывалый
 
Регистрация: 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
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

Проще всего скопировать данные в новый массив, в любом случае надо новый размер массива. Так что Array.Copy
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (31.07.2012)
Старый 31.07.2012, 15:07   #135
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

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

Последний раз редактировалось Nikich, 31.07.2012 в 16:51.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com