Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Случайная сортировка (Random)
Случайная сортировка
KaktuzДата: Вс, 04 Сентября 2011, 23:04 | Сообщение # 1
Любопытный
Возникла проблема. К примеру есть у нас список из 9 переменных:
Code

SetVar "[R1]" "0,0"
SetVar "[R2]" "40,0"
SetVar "[R3]" "80,0"
SetVar "[R4]" "0,40"
SetVar "[R5]" "40,40"
SetVar "[R6]" "80,40"
SetVar "[R7]" "0,80"
SetVar "[R8]" "40,80"
SetVar "[R9]" "80,80"

Необходимо случайны образом выбрать одну из них и использовать в коде. При этом эта переменная не должна быть повторно использована. Пытался заумным кодом, но что-то току мало...
Code

:Refresh1
Random "9" "[X]"
If "[R[X]]" "<>" ""
SetVar "[N]" "[N]+1"
MoveObjectAlongPath "Push[N]" "0,0" "0" "Normal+LeftTop" ""
ClearVariables "[R[X]]"
If "[N]" "<>" "8"
GoSub "Refresh2"
EndIf
Else
GoSub "Refresh2"
EndIf
Return

:Refresh2
Random "9" "[X]"
If "[R[X]]" "<>" ""
SetVar "[N]" "[N]+1"
MoveObjectAlongPath "Push[N]" "0,0" "0" "Normal+LeftTop" ""
ClearVariables "[R[X]]"
If "[N]" "<>" "8"
GoSub "Refresh1"
EndIf
Else
GoSub "Refresh1"
EndIf
Return

Подумывал еще о том что бы их просто перемешивать в списке, но как это правильно оформить... хм...


NeoBook 5.7.1

Сообщение отредактировано
Kaktuz - Вс, 04 Сентября 2011, 23:05
 
СообщениеВозникла проблема. К примеру есть у нас список из 9 переменных:
Code

SetVar "[R1]" "0,0"
SetVar "[R2]" "40,0"
SetVar "[R3]" "80,0"
SetVar "[R4]" "0,40"
SetVar "[R5]" "40,40"
SetVar "[R6]" "80,40"
SetVar "[R7]" "0,80"
SetVar "[R8]" "40,80"
SetVar "[R9]" "80,80"

Необходимо случайны образом выбрать одну из них и использовать в коде. При этом эта переменная не должна быть повторно использована. Пытался заумным кодом, но что-то току мало...
Code

:Refresh1
Random "9" "[X]"
If "[R[X]]" "<>" ""
SetVar "[N]" "[N]+1"
MoveObjectAlongPath "Push[N]" "0,0" "0" "Normal+LeftTop" ""
ClearVariables "[R[X]]"
If "[N]" "<>" "8"
GoSub "Refresh2"
EndIf
Else
GoSub "Refresh2"
EndIf
Return

:Refresh2
Random "9" "[X]"
If "[R[X]]" "<>" ""
SetVar "[N]" "[N]+1"
MoveObjectAlongPath "Push[N]" "0,0" "0" "Normal+LeftTop" ""
ClearVariables "[R[X]]"
If "[N]" "<>" "8"
GoSub "Refresh1"
EndIf
Else
GoSub "Refresh1"
EndIf
Return

Подумывал еще о том что бы их просто перемешивать в списке, но как это правильно оформить... хм...

Автор - Kaktuz
Дата добавления - 04 Сентября 2011 в 23:04
DEMBELДата: Вс, 04 Сентября 2011, 23:46 | Сообщение # 2
Наш дизайнер
Quote (Kaktuz)
Подумывал еще о том что бы их просто перемешивать в списке, но как это правильно оформить... хм...

поиск есть на сайте
http://neobooker.ru/forum/22-2289-1
http://neobooker.ru/forum/22-1343-1


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение
Quote (Kaktuz)
Подумывал еще о том что бы их просто перемешивать в списке, но как это правильно оформить... хм...

поиск есть на сайте
http://neobooker.ru/forum/22-2289-1
http://neobooker.ru/forum/22-1343-1

Автор - DEMBEL
Дата добавления - 04 Сентября 2011 в 23:46
KaktuzДата: Пн, 05 Сентября 2011, 00:30 | Сообщение # 3
Любопытный
Quote (DEMBEL)

мм.. не совсем то что нужно.
Викторина вообще полный бред, так и не понял к чему клонят. Вопросы одни и те же попадаются.
Генерация в списке лажа полная. Вписываю 9х9 он выдает мне 9 строк в списке, но если есть "0" в списке, то не будет какой-то другой цифры.


NeoBook 5.7.1

Сообщение отредактировано
Kaktuz - Пн, 05 Сентября 2011, 00:31
 
Сообщение
Quote (DEMBEL)

мм.. не совсем то что нужно.
Викторина вообще полный бред, так и не понял к чему клонят. Вопросы одни и те же попадаются.
Генерация в списке лажа полная. Вписываю 9х9 он выдает мне 9 строк в списке, но если есть "0" в списке, то не будет какой-то другой цифры.

Автор - Kaktuz
Дата добавления - 05 Сентября 2011 в 00:30
DEMBELДата: Пн, 05 Сентября 2011, 00:42 | Сообщение # 4
Наш дизайнер
сами думать не хотите значит... все что надо знать в тех темах есть.

кстати, а где и как в вашем коде используются полученные переменные R[x]? думаю должны подставляться вместо координаты где Push[N], но в чем логика когда она проверяется не пустая ли а в конце просто удаляется без использования?

Добавлено (05 Сентябрь 2011, 00:42)
---------------------------------------------
щас спать пора завтра посмотрим


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениесами думать не хотите значит... все что надо знать в тех темах есть.

кстати, а где и как в вашем коде используются полученные переменные R[x]? думаю должны подставляться вместо координаты где Push[N], но в чем логика когда она проверяется не пустая ли а в конце просто удаляется без использования?

Добавлено (05 Сентябрь 2011, 00:42)
---------------------------------------------
щас спать пора завтра посмотрим


Автор - DEMBEL
Дата добавления - 05 Сентября 2011 в 00:42
Format-X22Дата: Пн, 05 Сентября 2011, 12:39 | Сообщение # 5
Участник
http://neobooker.ru/forum/36-2339-2
Тут обсуждалось ещё.


Мой сайт - http://фирмы.онлайн
 
Сообщениеhttp://neobooker.ru/forum/36-2339-2
Тут обсуждалось ещё.

Автор - Format-X22
Дата добавления - 05 Сентября 2011 в 12:39
KaktuzДата: Пн, 05 Сентября 2011, 19:25 | Сообщение # 6
Любопытный
Quote (DEMBEL)
кстати, а где и как в вашем коде используются полученные переменные R[x]?

мда... вот тут то и косяк. вообще разобрался я что к чему и как. все довольно просто оказалось.
Это все запускается с кнопки
Code

SetVar "[PB1]" "0,0"
SetVar "[PB2]" "40,0"
SetVar "[PB3]" "80,0"
SetVar "[PB4]" "0,40"
SetVar "[PB5]" "40,40"
SetVar "[PB6]" "80,40"
SetVar "[PB7]" "0,80"
SetVar "[PB8]" "40,80"
SetVar "[PB9]" "80,80"
SetVar "[N]" "1"
GoSub "Random"

Подпрограммы
Code

:Random
Random "9" "[R]"
GoSub "Refresh"
Return

:Refresh
If "Push[N]" "=" "Push9"
    Return
EndIf
If "[PB[R]]" "<>" ""
    MoveObjectAlongPath "Push[N]" "[PB[R]]" "0" "Normal+LeftTop" ""
    ClearVariables "[PB[R]]"
    Math "[N]+1" "-1" "[N]"
    GoSub "Random"
Else
    GoSub "Random"
EndIf
Return

Вот и все. У меня работает, все нормально. Маленький, понятный, удобный код. :)


NeoBook 5.7.1
 
Сообщение
Quote (DEMBEL)
кстати, а где и как в вашем коде используются полученные переменные R[x]?

мда... вот тут то и косяк. вообще разобрался я что к чему и как. все довольно просто оказалось.
Это все запускается с кнопки
Code

SetVar "[PB1]" "0,0"
SetVar "[PB2]" "40,0"
SetVar "[PB3]" "80,0"
SetVar "[PB4]" "0,40"
SetVar "[PB5]" "40,40"
SetVar "[PB6]" "80,40"
SetVar "[PB7]" "0,80"
SetVar "[PB8]" "40,80"
SetVar "[PB9]" "80,80"
SetVar "[N]" "1"
GoSub "Random"

Подпрограммы
Code

:Random
Random "9" "[R]"
GoSub "Refresh"
Return

:Refresh
If "Push[N]" "=" "Push9"
    Return
EndIf
If "[PB[R]]" "<>" ""
    MoveObjectAlongPath "Push[N]" "[PB[R]]" "0" "Normal+LeftTop" ""
    ClearVariables "[PB[R]]"
    Math "[N]+1" "-1" "[N]"
    GoSub "Random"
Else
    GoSub "Random"
EndIf
Return

Вот и все. У меня работает, все нормально. Маленький, понятный, удобный код. :)

Автор - Kaktuz
Дата добавления - 05 Сентября 2011 в 19:25
mishemДата: Пн, 05 Сентября 2011, 22:20 | Сообщение # 7
Эксперт форума
Kaktuz, вообще то лучше было бы пример выложить.
Что то меня в этом коде смущает.
If "Push[N]" "=" "Push9"
Return
EndIf
Что такое Push?
.......
GoSub "Random"
Else
GoSub "Random"
.....
Замкнутый круг получается.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.


Сообщение отредактировано
mishem - Пн, 05 Сентября 2011, 22:25
 
СообщениеKaktuz, вообще то лучше было бы пример выложить.
Что то меня в этом коде смущает.
If "Push[N]" "=" "Push9"
Return
EndIf
Что такое Push?
.......
GoSub "Random"
Else
GoSub "Random"
.....
Замкнутый круг получается.

Автор - mishem
Дата добавления - 05 Сентября 2011 в 22:20
ВадимДата: Пн, 05 Сентября 2011, 22:35 | Сообщение # 8
Генератор идей
Прикрепления: 4925492.png (28.9 Kb)


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение

Автор - Вадим
Дата добавления - 05 Сентября 2011 в 22:35
mishemДата: Пн, 05 Сентября 2011, 22:37 | Сообщение # 9
Эксперт форума


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение

Автор - mishem
Дата добавления - 05 Сентября 2011 в 22:37
ВадимДата: Пн, 05 Сентября 2011, 22:45 | Сообщение # 10
Генератор идей


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение

Автор - Вадим
Дата добавления - 05 Сентября 2011 в 22:45
mishemДата: Пн, 05 Сентября 2011, 22:51 | Сообщение # 11
Эксперт форума


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение

Автор - mishem
Дата добавления - 05 Сентября 2011 в 22:51
ВадимДата: Пн, 05 Сентября 2011, 23:01 | Сообщение # 12
Генератор идей


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
 
Сообщение

Автор - Вадим
Дата добавления - 05 Сентября 2011 в 23:01
KaktuzДата: Пн, 05 Сентября 2011, 23:32 | Сообщение # 13
Любопытный
Quote (mishem)
Kaktuz, вообще то лучше было бы пример выложить.

Я позже выложу весь код. Это для одной маленькой игры.


NeoBook 5.7.1
 
Сообщение
Quote (mishem)
Kaktuz, вообще то лучше было бы пример выложить.

Я позже выложу весь код. Это для одной маленькой игры.

Автор - Kaktuz
Дата добавления - 05 Сентября 2011 в 23:32
mishemДата: Пн, 05 Сентября 2011, 23:46 | Сообщение # 14
Эксперт форума
Quote (Kaktuz)
горячую клавишу

Kaktuz, пользуй поиск. Тема была про клавиши. Немножко фантазии, и можно под свои нужды "заточить" Вкратце, создаешь кнопку за пределами окна, назначаешь горячии клавиши, и пишешь в ней код. Ну а более подробно, ищи на форуме.

Добавлено (05 Сентябрь 2011, 23:46)
---------------------------------------------

Quote (Kaktuz)
Я позже выложу весь код

Да весь не надо. Основной кусок. Подправь где то что то, и все.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Quote (Kaktuz)
горячую клавишу

Kaktuz, пользуй поиск. Тема была про клавиши. Немножко фантазии, и можно под свои нужды "заточить" Вкратце, создаешь кнопку за пределами окна, назначаешь горячии клавиши, и пишешь в ней код. Ну а более подробно, ищи на форуме.

Добавлено (05 Сентябрь 2011, 23:46)
---------------------------------------------

Quote (Kaktuz)
Я позже выложу весь код

Да весь не надо. Основной кусок. Подправь где то что то, и все.

Автор - mishem
Дата добавления - 05 Сентября 2011 в 23:46
KaktuzДата: Вт, 06 Сентября 2011, 01:19 | Сообщение # 15
Любопытный
Quote (mishem)
Да весь не надо. Основной кусок. Подправь где то что то, и все.

Объясню в деталях. Данный код написан под мой пример, для моего использования, а для общего примерно так.
Code

.Записываем переменные с данными, они потом будут сортироваться в различном порядке
SetVar "[PB1]" "0,0"
SetVar "[PB2]" "40,0"
SetVar "[PB3]" "80,0"
SetVar "[PB4]" "0,40"
SetVar "[PB5]" "40,40"
SetVar "[PB6]" "80,40"
SetVar "[PB7]" "0,80"
SetVar "[PB8]" "40,80"
SetVar "[PB9]" "80,80"
.Здесь указываем что начинать нужно с первого пункта
SetVar "[N]" "1"
GoSub "Random"

Продолжаем...
Code

:Random
.Здесь определяем случайное число. Число как вы понимаете должно равняться количеству наших пунктов
Random "9" "[R]"
GoSub "Refresh"
Return

  :Refresh
.Я использую 8 пунктов, хотя записано 9 так надо, можно изменить на 10 для использования всех 9 пунктов. Команда определяет когда нужно прекратить цикл
If "Push[N]" "=" "Push9"
    Return
EndIf
.Основа проверки. Проверяет не пустое ли значение которое случайно было сгенерировано, и если нет, то использует его иначе генерирует заново (тоесть повтор).
If "[PB[R]]" "<>" ""
.Вот первая команда которая у каждого своя. Как видно у меня она будет перемещать объект. Единственное что здесь неизменно это "[PB[R]]" это ключ остально подставное, куда и что нужно
    MoveObjectAlongPath "Push[N]" "[PB[R]]" "0" "Normal+LeftTop" ""
.Эти строчки оставляем, они удаляют уже использованые переменные и переходят к использованию другой переменной.
    ClearVariables "[PB[R]]"
    Math "[N]+1" "-1" "[N]"
    GoSub "Random"
Else
    GoSub "Random"
EndIf
Return

Даже и не знаю. Не уверен что получилось толково объяснить что к чему. Этот код как будто сгенерировался в моей голове и все :D главное работает и правильно работает.


NeoBook 5.7.1
 
Сообщение
Quote (mishem)
Да весь не надо. Основной кусок. Подправь где то что то, и все.

Объясню в деталях. Данный код написан под мой пример, для моего использования, а для общего примерно так.
Code

.Записываем переменные с данными, они потом будут сортироваться в различном порядке
SetVar "[PB1]" "0,0"
SetVar "[PB2]" "40,0"
SetVar "[PB3]" "80,0"
SetVar "[PB4]" "0,40"
SetVar "[PB5]" "40,40"
SetVar "[PB6]" "80,40"
SetVar "[PB7]" "0,80"
SetVar "[PB8]" "40,80"
SetVar "[PB9]" "80,80"
.Здесь указываем что начинать нужно с первого пункта
SetVar "[N]" "1"
GoSub "Random"

Продолжаем...
Code

:Random
.Здесь определяем случайное число. Число как вы понимаете должно равняться количеству наших пунктов
Random "9" "[R]"
GoSub "Refresh"
Return

  :Refresh
.Я использую 8 пунктов, хотя записано 9 так надо, можно изменить на 10 для использования всех 9 пунктов. Команда определяет когда нужно прекратить цикл
If "Push[N]" "=" "Push9"
    Return
EndIf
.Основа проверки. Проверяет не пустое ли значение которое случайно было сгенерировано, и если нет, то использует его иначе генерирует заново (тоесть повтор).
If "[PB[R]]" "<>" ""
.Вот первая команда которая у каждого своя. Как видно у меня она будет перемещать объект. Единственное что здесь неизменно это "[PB[R]]" это ключ остально подставное, куда и что нужно
    MoveObjectAlongPath "Push[N]" "[PB[R]]" "0" "Normal+LeftTop" ""
.Эти строчки оставляем, они удаляют уже использованые переменные и переходят к использованию другой переменной.
    ClearVariables "[PB[R]]"
    Math "[N]+1" "-1" "[N]"
    GoSub "Random"
Else
    GoSub "Random"
EndIf
Return

Даже и не знаю. Не уверен что получилось толково объяснить что к чему. Этот код как будто сгенерировался в моей голове и все :D главное работает и правильно работает.

Автор - Kaktuz
Дата добавления - 06 Сентября 2011 в 01:19
mishemДата: Вт, 06 Сентября 2011, 01:26 | Сообщение # 16
Эксперт форума
Ну, с моей стороны уже не сегодня. :)

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеНу, с моей стороны уже не сегодня. :)

Автор - mishem
Дата добавления - 06 Сентября 2011 в 01:26
СергейДата: Вт, 06 Сентября 2011, 10:55 | Сообщение # 17
Необукер
Kaktuz, пятнашки, пазл?!
вот этот код в указанном примере, Push можно убрать, т.к. нет смысла
Quote
If "Push[N]" "=" "Push9"
Return
EndIf


Сообщение отредактировано
Сергей - Вт, 06 Сентября 2011, 12:00
 
СообщениеKaktuz, пятнашки, пазл?!
вот этот код в указанном примере, Push можно убрать, т.к. нет смысла
Quote
If "Push[N]" "=" "Push9"
Return
EndIf

Автор - Сергей
Дата добавления - 06 Сентября 2011 в 10:55
KaktuzДата: Вт, 06 Сентября 2011, 13:14 | Сообщение # 18
Любопытный
Quote (Сергей)
Kaktuz, пятнашки, пазл?!

Они самые. Только тестирую изначально на 9 клетках.
Quote (Сергей)
вот этот код в указанном примере, Push можно убрать, т.к. нет смысла

Math "[N]+1" "-1" "[N]" добаляет по одному каждый раз, а этот код говорит нам когда будет достаточно проверок. Ибо так будет бесконечно проверятся.


NeoBook 5.7.1
 
Сообщение
Quote (Сергей)
Kaktuz, пятнашки, пазл?!

Они самые. Только тестирую изначально на 9 клетках.
Quote (Сергей)
вот этот код в указанном примере, Push можно убрать, т.к. нет смысла

Math "[N]+1" "-1" "[N]" добаляет по одному каждый раз, а этот код говорит нам когда будет достаточно проверок. Ибо так будет бесконечно проверятся.

Автор - Kaktuz
Дата добавления - 06 Сентября 2011 в 13:14
СергейДата: Вт, 06 Сентября 2011, 13:27 | Сообщение # 19
Необукер
Quote (Kaktuz)
Ибо так будет бесконечно проверятся.
естественно, но я об этом :)
 
Сообщение
Quote (Kaktuz)
Ибо так будет бесконечно проверятся.
естественно, но я об этом :)

Автор - Сергей
Дата добавления - 06 Сентября 2011 в 13:27
KaktuzДата: Вт, 06 Сентября 2011, 13:48 | Сообщение # 20
Любопытный
mda в таком случае придется переписывать несколько строк кода... и то.. это завершится ошибкой или тогда будет на много больше кодов.
Вить мы грузим один SetVar "[N]" "1" и математически добавляем каждый раз еще один Math "[N]+1" "-1" "[N]". Я даже не представляю как оно будет тогда работать.
Думаю Вы Сергей не совсем прониклись в суть кода. Возможно я ошибаюсь... хотя навряд ли.
P.S. Тут же задействованы еще и кнопки не забывайте про них. Нужно знать какую кнопку перемещать и на какой остановится.


NeoBook 5.7.1
 
Сообщениеmda в таком случае придется переписывать несколько строк кода... и то.. это завершится ошибкой или тогда будет на много больше кодов.
Вить мы грузим один SetVar "[N]" "1" и математически добавляем каждый раз еще один Math "[N]+1" "-1" "[N]". Я даже не представляю как оно будет тогда работать.
Думаю Вы Сергей не совсем прониклись в суть кода. Возможно я ошибаюсь... хотя навряд ли.
P.S. Тут же задействованы еще и кнопки не забывайте про них. Нужно знать какую кнопку перемещать и на какой остановится.

Автор - Kaktuz
Дата добавления - 06 Сентября 2011 в 13:48
СергейДата: Вт, 06 Сентября 2011, 20:52 | Сообщение # 21
Необукер
 
Сообщение

Автор - Сергей
Дата добавления - 06 Сентября 2011 в 20:52
KaktuzДата: Вт, 06 Сентября 2011, 23:02 | Сообщение # 22
Любопытный


NeoBook 5.7.1
 
Сообщение

Автор - Kaktuz
Дата добавления - 06 Сентября 2011 в 23:02
mishemДата: Ср, 07 Сентября 2011, 11:28 | Сообщение # 23
Эксперт форума


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение

Автор - mishem
Дата добавления - 07 Сентября 2011 в 11:28
wikslДата: Вт, 27 Сентября 2011, 17:48 | Сообщение # 24
Участник
:Random
.Здесь определяем случайное число. Число как вы понимаете должно равняться количеству наших пунктов
Random "9" "[R]"
GoSub "Refresh"
Return

если заменить
Random "9" "[R]" на Random "8" "[R]"
и потом увеличит r на 1, то не надо проверять пустое ли значение выпало, так как интервал значений будет от 1 до 9.


Вик

Сообщение отредактировано
wiksl - Ср, 28 Сентября 2011, 13:50
 
Сообщение:Random
.Здесь определяем случайное число. Число как вы понимаете должно равняться количеству наших пунктов
Random "9" "[R]"
GoSub "Refresh"
Return

если заменить
Random "9" "[R]" на Random "8" "[R]"
и потом увеличит r на 1, то не надо проверять пустое ли значение выпало, так как интервал значений будет от 1 до 9.

Автор - wiksl
Дата добавления - 27 Сентября 2011 в 17:48
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Случайная сортировка (Random)
  • Страница 1 из 1
  • 1
Поиск: