![]() |
|
||||||||||
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
Всем привет
создаю цикл,хочу что бы 10 элементов mine добавилось рандомно на поле,c этим проблем не возникает,НО мне понадобилось,что бы рандомные координаты были каждый раз кратны 30 например (то есть число выдаваемое рандомом должно делится на 30) пока что элементы просто разбрасываются в любые координаты от 0-300. вот такой есть код: package{ import flash.display.MovieClip; public class Random extends MovieClip{ private var n:Number; private var m:Number; public function Random () { for(k=0;k<10;k++){ var mine = new Mine(); addChild(mine); n=Math.floor(Math.random()*300); m=Math.floor(Math.random()*300); trace (m); trace(n); mine.x=n; mine.y=m; } } } } |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
var k:uint = 0; var n:uint = 0; var m:uint = 0; var grid_step:uint = 30; var grid_count:uint = 10; for(k=0;k<10;k++){ n=Math.floor(Math.random()*grid_step*(grid_count+1)); m = Math.floor(Math.random()*grid_step*(grid_count+1)); n = n - n % grid_step; m = m - m % grid_step; trace (m); trace(n); } если вам нужно исключать дубликаты-то просто запоминайте уже примененную расстановку, при получении того же результата просто повтор continue, вместо for-while |
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
Цитата:
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
Если у вас поле 300 на 300 px, и шаг 30-то это поле 10 на 10 квадратиков, grid_count это и отражает.
% -остаток от целочисленного деления, для 35 будет так- 35-(35%30)=35-5=30. Просто забавно, задачка-то сильно простая. |
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
Цитата:
здесь вы считаем рандомное число от 0 до 1 так? умножаем это число на =30 умножаем полученное произведение на =11 далее присваиваем значению n - n%grid_step - вот эту вещь вообще не понимаю |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
Math.random()*30*11= диапазон от 0 до 330. Так? Так.
n = n - n % grid_step; Берем число. Отнимаем от него целочисленный остаток от деления на 30. Получается число, кратное 30. Почему? Потому что его целочисленный остаток от деления теперь равен 0(мы как раз этот остаток и вычли). По определению, число кратно числу, если остаток от целочисленного деления==0. Если у вас это такие трудности вызывает, можно кучу альтернатив предложить. |
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
Цитата:
![]() Почему то осознаю всё,когда на форуме вопрос начинаю писать ![]() спасибо |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
А что бы написать проверку на совпадения координат что за continue ипользовать и как это реализовывается на каком либо простом примере хотя бы покажите или на моем.
Я не понимаю что значит запомнить уже примененную расстановку ![]() я вроде итак ведь ее запоминаю каждую итерацию в цикле,либо это не то? |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
Конечно, проще. Но скучно.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|