Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Страница 1 из 11
Модератор форума: Peter, DEMBEL, YURIY 
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Создание игры (Попытка сделать игру судоку)
Создание игры
Woha28Дата: Пн, 03 Июня 2013, 05:48 | Сообщение # 1
Участник
Люди добрые помогите! Подскажите как при генерации случайных чисел (в моем случае от 1-9) отсеивать уже появившиеся. То есть если выпало число 5 то чтобы до конца цикла 5-ки больше не было, и так с каждым числом, че-то не мого понять как это реализовать.
Прикрепления: 3042354.zip(3Kb)


 
СообщениеЛюди добрые помогите! Подскажите как при генерации случайных чисел (в моем случае от 1-9) отсеивать уже появившиеся. То есть если выпало число 5 то чтобы до конца цикла 5-ки больше не было, и так с каждым числом, че-то не мого понять как это реализовать.

Автор - Woha28
Дата добавления - 03 Июня 2013 в 05:48
DEMBELДата: Пн, 03 Июня 2013, 07:36 | Сообщение # 2
Наш дизайнер
http://neobooker.ru/forum/22-1343-1

Добавлено (03 Июня 2013, 07:36)
---------------------------------------------
если вкратце, то вам нужно заполнить ListBox нужными числами (1-9) и доставать их оттуда по одному. Чтобы число не повторялось, нужно брать числа по очереди или вовсе удалять из списка если оно больше не нужно чтобы попадалось.


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

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениеhttp://neobooker.ru/forum/22-1343-1

Добавлено (03 Июня 2013, 07:36)
---------------------------------------------
если вкратце, то вам нужно заполнить ListBox нужными числами (1-9) и доставать их оттуда по одному. Чтобы число не повторялось, нужно брать числа по очереди или вовсе удалять из списка если оно больше не нужно чтобы попадалось.


Автор - DEMBEL
Дата добавления - 03 Июня 2013 в 07:36
Woha28Дата: Пн, 03 Июня 2013, 12:01 | Сообщение # 3
Участник
Отличная идея! thumbs_up Спасибо большое буду пробовать.
У меня еще вопрос, в связи с тем что как вы уверен знаете принцип судоку, цифры недолжны повторяться как в самом блоке из 9-ти клеток так и по горизонтале и вертикали не будет-ли Neobook тормозить из-за многочислинных проверок условий?
Просто я помню как-то делал прогу, для сохранения буфера в текстовый файл с именем первых 8 букв самого текста (из буфера) и проверка и замена запрещенных символов для имени файла в windows (\/:*?"<>|) занемала на мой взгляд слиском много времени.
За ранее благодарен!
P.S. Еще раз спасибо за идею.


 
СообщениеОтличная идея! thumbs_up Спасибо большое буду пробовать.
У меня еще вопрос, в связи с тем что как вы уверен знаете принцип судоку, цифры недолжны повторяться как в самом блоке из 9-ти клеток так и по горизонтале и вертикали не будет-ли Neobook тормозить из-за многочислинных проверок условий?
Просто я помню как-то делал прогу, для сохранения буфера в текстовый файл с именем первых 8 букв самого текста (из буфера) и проверка и замена запрещенных символов для имени файла в windows (\/:*?"<>|) занемала на мой взгляд слиском много времени.
За ранее благодарен!
P.S. Еще раз спасибо за идею.

Автор - Woha28
Дата добавления - 03 Июня 2013 в 12:01
DEMBELДата: Пн, 03 Июня 2013, 12:14 | Сообщение # 4
Наш дизайнер
будет или нет - зависит от алгоритма. можно такой ерунды понаписать, что...
думаю лучше сначала поискать в интернете оптимизированный рабочий алгоритм заполнения клеток и попытаться его реализовать средствами нб

Добавлено (03 Июня 2013, 12:14)
---------------------------------------------
_http://www.billybear4kids.com/Sudoku/Software.shtml вот вроде как на нб сделано, но точно не знаю, не ковырял


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

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениебудет или нет - зависит от алгоритма. можно такой ерунды понаписать, что...
думаю лучше сначала поискать в интернете оптимизированный рабочий алгоритм заполнения клеток и попытаться его реализовать средствами нб

Добавлено (03 Июня 2013, 12:14)
---------------------------------------------
_http://www.billybear4kids.com/Sudoku/Software.shtml вот вроде как на нб сделано, но точно не знаю, не ковырял


Автор - DEMBEL
Дата добавления - 03 Июня 2013 в 12:14
Woha28Дата: Пн, 03 Июня 2013, 20:41 | Сообщение # 5
Участник
Подскажите как сделать цикл чтобы цифры 1-9 ходили по кругу (123456789123456789123456789) причем начиная с любой цифры например: 89123456789, или 3456789123456789 короче чтобы после 9-ки было 1 а не 10 к примеру есть масив переменных типа:
Код
[D1] [D2] [D3] [D4] [D5] [D6] [D7] [D8] [D9] надо к примеру чтобы в [D1] = 9 в [D2] = 1 [D3] = 2
            9      1      2      3      4     5      6      7      8

и так далее. Чето немогу панять как это реализовать, что только не пробовал ничего не получается.
Помогите! help help help


 
СообщениеПодскажите как сделать цикл чтобы цифры 1-9 ходили по кругу (123456789123456789123456789) причем начиная с любой цифры например: 89123456789, или 3456789123456789 короче чтобы после 9-ки было 1 а не 10 к примеру есть масив переменных типа:
Код
[D1] [D2] [D3] [D4] [D5] [D6] [D7] [D8] [D9] надо к примеру чтобы в [D1] = 9 в [D2] = 1 [D3] = 2
            9      1      2      3      4     5      6      7      8

и так далее. Чето немогу панять как это реализовать, что только не пробовал ничего не получается.
Помогите! help help help

Автор - Woha28
Дата добавления - 03 Июня 2013 в 20:41
mishemДата: Пн, 03 Июня 2013, 20:50 | Сообщение # 6
Эксперт форума
Woha28, мой тебе совет. Не связывайся с судоку. Если только так, для общего развития или только для себя. Или найди готовые примеры которые сможешь загружать в программу. Правильное судоку должно иметь одно единственное решение, и ни как иначе. ;)
По вопросу, два цикла надо. Цикл в цикле.
Поищи лучше в интернете правильный алгоритм составления или построения судоку.
Что то мне подсказывает что интерес сразу отпадет. :D


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеWoha28, мой тебе совет. Не связывайся с судоку. Если только так, для общего развития или только для себя. Или найди готовые примеры которые сможешь загружать в программу. Правильное судоку должно иметь одно единственное решение, и ни как иначе. ;)
По вопросу, два цикла надо. Цикл в цикле.
Поищи лучше в интернете правильный алгоритм составления или построения судоку.
Что то мне подсказывает что интерес сразу отпадет. :D

Автор - mishem
Дата добавления - 03 Июня 2013 в 20:50
DEMBELДата: Пн, 03 Июня 2013, 21:07 | Сообщение # 7
Наш дизайнер
нужно крутить числа в списке, перемещая первый элемент в конец списка, тогда первым станет второй элемент и т.д. Чисто с массивами без списка трудно будет.

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

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениенужно крутить числа в списке, перемещая первый элемент в конец списка, тогда первым станет второй элемент и т.д. Чисто с массивами без списка трудно будет.

Автор - DEMBEL
Дата добавления - 03 Июня 2013 в 21:07
Woha28Дата: Пн, 03 Июня 2013, 21:13 | Сообщение # 8
Участник
На счет сложности я уже понял что очень трудно, а на счет алгаритма судоку я нашел решение, только в примере реализация алгаритма судоку приведена для Java а я теперь пытаюсь реализавать это в Neobook.
Судоку делаю для себя. А на счет цикла о котором я прошу то я и раньше сталкивался с подобной проблемой когда нужно чтобы определенные цифры ходили по кругу. Проблема всегда была в том что к примеру если создать такой масив
Код

Loop "1" "9" "[i]"
      SetVar "[D[i]]" "[i]"
EndLoop

то понятно что в переменных с [D1] по[D9] находяться нужные мне цифры (1,2,3,4,5,6,7,8,9) но я немогу понять как вытащить эти цифры в нужном мне порядке, к примеру начиная с 5 нужно вытащить 9 цифр (5,6,7,8,9,1,2,3,4)
Если вас не затруднит можете привести пример.
За ранее благодарен!


 
СообщениеНа счет сложности я уже понял что очень трудно, а на счет алгаритма судоку я нашел решение, только в примере реализация алгаритма судоку приведена для Java а я теперь пытаюсь реализавать это в Neobook.
Судоку делаю для себя. А на счет цикла о котором я прошу то я и раньше сталкивался с подобной проблемой когда нужно чтобы определенные цифры ходили по кругу. Проблема всегда была в том что к примеру если создать такой масив
Код

Loop "1" "9" "[i]"
      SetVar "[D[i]]" "[i]"
EndLoop

то понятно что в переменных с [D1] по[D9] находяться нужные мне цифры (1,2,3,4,5,6,7,8,9) но я немогу понять как вытащить эти цифры в нужном мне порядке, к примеру начиная с 5 нужно вытащить 9 цифр (5,6,7,8,9,1,2,3,4)
Если вас не затруднит можете привести пример.
За ранее благодарен!

Автор - Woha28
Дата добавления - 03 Июня 2013 в 21:13
mishemДата: Пн, 03 Июня 2013, 21:21 | Сообщение # 9
Эксперт форума
Вот тебе 49 000 готовых примеров. И не забивай себе голову. Но я не помню, по моему у них попадается несколько вариантов решения. Хотя автор заверял что одно. Есть хорошая программа simplesudoku, в ней по моему можно проверить сколько возможных решений есть.

Добавлено (03 Июня 2013, 21:21)
---------------------------------------------

Цитата (Woha28)
Если вас не затруднит

Затруднит. :)
Я в больнице когда лежал от нечего делать пытался составить алгоритм. Помню что бился долго и по моему решения так и не нашел. Так что возвращаться к решению желания нету. :)


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеВот тебе 49 000 готовых примеров. И не забивай себе голову. Но я не помню, по моему у них попадается несколько вариантов решения. Хотя автор заверял что одно. Есть хорошая программа simplesudoku, в ней по моему можно проверить сколько возможных решений есть.

Добавлено (03 Июня 2013, 21:21)
---------------------------------------------

Цитата (Woha28)
Если вас не затруднит

Затруднит. :)
Я в больнице когда лежал от нечего делать пытался составить алгоритм. Помню что бился долго и по моему решения так и не нашел. Так что возвращаться к решению желания нету. :)

Автор - mishem
Дата добавления - 03 Июня 2013 в 21:21
Woha28Дата: Пн, 03 Июня 2013, 21:47 | Сообщение # 10
Участник
Цитата (DEMBEL)
если вкратце, то вам нужно заполнить ListBox нужными числами (1-9) и доставать их оттуда по одному

Спасибо за подсказку через список получилось:
Код

       Loop "1" "9" "[i]"
            ListBoxAddItem "ListBox1" "0" "[i]"
       EndLoop
        SetVar "[n]" "9"
        Loop "1" "9" "[i]"
             If "[n]" ">" "9"
                SetVar "[n]" "1"
                ListBoxGetItem "ListBox1" "[n]" "[D[i]]"
                Math "[n]+1" "0" "[n]"
             Else
                ListBoxGetItem "ListBox1" "[n]" "[D[i]]"
                Math "[n]+1" "0" "[n]"
             EndIf
        EndLoop

еще раз спасибо.




Сообщение отредактировано
Woha28 - Пн, 03 Июня 2013, 21:48
 
Сообщение
Цитата (DEMBEL)
если вкратце, то вам нужно заполнить ListBox нужными числами (1-9) и доставать их оттуда по одному

Спасибо за подсказку через список получилось:
Код

       Loop "1" "9" "[i]"
            ListBoxAddItem "ListBox1" "0" "[i]"
       EndLoop
        SetVar "[n]" "9"
        Loop "1" "9" "[i]"
             If "[n]" ">" "9"
                SetVar "[n]" "1"
                ListBoxGetItem "ListBox1" "[n]" "[D[i]]"
                Math "[n]+1" "0" "[n]"
             Else
                ListBoxGetItem "ListBox1" "[n]" "[D[i]]"
                Math "[n]+1" "0" "[n]"
             EndIf
        EndLoop

еще раз спасибо.

Автор - Woha28
Дата добавления - 03 Июня 2013 в 21:47
mishemДата: Пн, 03 Июня 2013, 21:52 | Сообщение # 11
Эксперт форума
Не знаю...
Я б вот так бы реализовал без всяких листбоксов.

Код
SetVar "[Text]" "123456789"
Loop "1" "9" "[i]"
StrLen "[Text]" "[Kol_vo]"
Random "[Kol_vo]" "[Num]"
If "[Num]" "=" "0"
   SetVar "[Num]" "1"
EndIf
SubStr "[Text]" "[Num]" "1" "[[i]]"
StrDel "[Text]" "[Num]" "1" "[Text]"
EndLoop
ClearVariables "[i],[Kol_vo],[Num]"


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеНе знаю...
Я б вот так бы реализовал без всяких листбоксов.

Код
SetVar "[Text]" "123456789"
Loop "1" "9" "[i]"
StrLen "[Text]" "[Kol_vo]"
Random "[Kol_vo]" "[Num]"
If "[Num]" "=" "0"
   SetVar "[Num]" "1"
EndIf
SubStr "[Text]" "[Num]" "1" "[[i]]"
StrDel "[Text]" "[Num]" "1" "[Text]"
EndLoop
ClearVariables "[i],[Kol_vo],[Num]"

Автор - mishem
Дата добавления - 03 Июня 2013 в 21:52
DEMBELДата: Пн, 03 Июня 2013, 21:58 | Сообщение # 12
Наш дизайнер
так чтоли?
Прикрепления: alg.zip(2Kb)


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

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщениетак чтоли?

Автор - DEMBEL
Дата добавления - 03 Июня 2013 в 21:58
Woha28Дата: Пт, 07 Июня 2013, 02:53 | Сообщение # 13
Участник
Вроде более менее получилось прописать алгоритм и все остальное, но теперь возникла другая проблема.
По моей задумке при нажатии на пустую клетку (например с переменной [A1]) появляется 9 кнопок с цифрами от 1до 9 после нажатие на одну из кнопок в пустой клетке должна появится соответствующая цифра.Но не могу ни как сообразить как передать в какую переменную нужно внести соответствующую цифру.
Помогите кто нибудь разобраться!
Прикрепления: 7039863.zip(5Kb)


 
СообщениеВроде более менее получилось прописать алгоритм и все остальное, но теперь возникла другая проблема.
По моей задумке при нажатии на пустую клетку (например с переменной [A1]) появляется 9 кнопок с цифрами от 1до 9 после нажатие на одну из кнопок в пустой клетке должна появится соответствующая цифра.Но не могу ни как сообразить как передать в какую переменную нужно внести соответствующую цифру.
Помогите кто нибудь разобраться!

Автор - Woha28
Дата добавления - 07 Июня 2013 в 02:53
mishemДата: Пт, 07 Июня 2013, 03:07 | Сообщение # 14
Эксперт форума
Когда нажимаешь на пустую кнопку(да и вообще на любую) в перемнной [Self] находится имя объекта с которым в данный момент происходит какое либо действие. Например при клике на кнопку A1 в переменной [Self] будет находится А1. Пишешь в действии на левый клик например

SetVar "[Name]" "[Self]"

А в кнопках с цифрами

SetVar "[[Name]]" "1"

Как то так...


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

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



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеКогда нажимаешь на пустую кнопку(да и вообще на любую) в перемнной [Self] находится имя объекта с которым в данный момент происходит какое либо действие. Например при клике на кнопку A1 в переменной [Self] будет находится А1. Пишешь в действии на левый клик например

SetVar "[Name]" "[Self]"

А в кнопках с цифрами

SetVar "[[Name]]" "1"

Как то так...

Автор - mishem
Дата добавления - 07 Июня 2013 в 03:07
DEMBELДата: Пт, 07 Июня 2013, 03:12 | Сообщение # 15
Наш дизайнер
Ну вот постепенно начинается геморрой...
В момент щелчка по клетке, причем любой клетке, еще до показа группы с цифрами, ты уже должен определить по какой клетке щелкнули. Чтобы потом, при нажатии на цифру, скрипт в цифре уже знал куда надо передавать выбранное значение.

Для этого проще всего в каждой клетке прописать идентификатор, переменную, куда класть имя щелкнутой клетки, например для A1:
Setvar "[CELL]" "A1"
Теперь в кнопках уже будет известно какую клетку выбрали и куда записывать цифру, прописать в каждой кнопке, напр. для 5:
SetVar "[[CELL]]" "5"
Обрати внимание на двойные скобки - в [CELL] лежит только имя переменной для клетки, а [[CELL]] превращает это имя в... действующую переменную: [[CELL]] = [A1], куда и записывается щелкнутая цифра (5).

На этом твои проблемы не кончаются, т.к. в момент показа блока с цифрами нужно проверять горизонталь и вертикаль и деактивировать кнопки с уже имеющимися в клетках цифрами, не давая вводить их повторно. Дальше все еще хуже...

Добавлено (07 Июня 2013, 03:12)
---------------------------------------------

Цитата (mishem)
SetVar "[[Name]]" "1"

шаришь )


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

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
СообщениеНу вот постепенно начинается геморрой...
В момент щелчка по клетке, причем любой клетке, еще до показа группы с цифрами, ты уже должен определить по какой клетке щелкнули. Чтобы потом, при нажатии на цифру, скрипт в цифре уже знал куда надо передавать выбранное значение.

Для этого проще всего в каждой клетке прописать идентификатор, переменную, куда класть имя щелкнутой клетки, например для A1:
Setvar "[CELL]" "A1"
Теперь в кнопках уже будет известно какую клетку выбрали и куда записывать цифру, прописать в каждой кнопке, напр. для 5:
SetVar "[[CELL]]" "5"
Обрати внимание на двойные скобки - в [CELL] лежит только имя переменной для клетки, а [[CELL]] превращает это имя в... действующую переменную: [[CELL]] = [A1], куда и записывается щелкнутая цифра (5).

На этом твои проблемы не кончаются, т.к. в момент показа блока с цифрами нужно проверять горизонталь и вертикаль и деактивировать кнопки с уже имеющимися в клетках цифрами, не давая вводить их повторно. Дальше все еще хуже...

Добавлено (07 Июня 2013, 03:12)
---------------------------------------------

Цитата (mishem)
SetVar "[[Name]]" "1"

шаришь )

Автор - DEMBEL
Дата добавления - 07 Июня 2013 в 03:12
Woha28Дата: Пт, 07 Июня 2013, 03:35 | Сообщение # 16
Участник
Спасибо всем сейчас буду пробовать!

 
СообщениеСпасибо всем сейчас буду пробовать!

Автор - Woha28
Дата добавления - 07 Июня 2013 в 03:35
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » Создание игры (Попытка сделать игру судоку)
Страница 1 из 11
Поиск: