Помогите с кодом!!!

Gas
Posts: 4
Joined: Fri Mar 13, 2015 11:49 am
My devices: Programs

Помогите с кодом!!!

Post by Gas »

Пытаюсь сделать кнопки и чтобы по ним переходить в места, в которых создал картинки. В чем ошибка?
graphics
nach:
graphics clear
button r text "Флаг России" at 100,100 size 300,100
button "l" text "Флаг Люксембурга" at 100,400 size 300,100
button "f" text "Флаг Франции" at 500,100 size 300,100
button "n" text "Флаг Голандии" at 500,400 size 300,100
if button_pressed (r) then goto nach1
if button_pressed (l) then goto nach2
if button_pressed (f) then goto nach3
if button_pressed (n) then goto nach4
pause 300
nach1:
graphics clear
fill rect 100,100 to 500,150
fill color 0,0,1
fill rect 100,150 to 500,200
fill color 1,0,0
fill rect 100,200 to 500,250
button s text "Назад" at 500,50 size 100,100
if button_pressed (s) then goto nach
pause 300
nach2:
graphics clear
fill color 0.5,0,0
fill rect 100,100 to 500,150
fill color 1,1,1
fill rect 100,150 to 500,200
fill color 0,0,0.5
fill rect 100,200 to 500,250
button "s" text "Назад" at 500,50 size 100,100
if button_pressed (s) then goto nach
pause 300


nach3:
graphics clear
fill color 0,0,1
fill rect 100,100 to 200,300
fill color 1,1,1
fill rect 200,100 to 300,300
fill color 1,0,0
fill rect 300,100 to 400,300
button "s" text "Назад" at 500,50 size 100,100
if button_pressed (s) then goto nach
pause 300

nach4:
graphics clear
fill color 1,0,0
fill rect 100,100 to 500,150
fill color 1,1,1
fill rect 100,150 to 500,200
fill color 0,0,1
fill rect 100,200 to 500,250
button "s" text "Назад" at 500,50 size 100,100
if button_pressed (s) then goto nach
pause 300

User avatar
Mr. Kibernetik
Site Admin
Posts: 4782
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Помогите с кодом!!!

Post by Mr. Kibernetik »

Кнопки, как и любые другие объекты интерфейса, должны иметь уникальные СТРОКОВЫЕ имена. А у вас для этого используются то строки, то числа.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Помогите с кодом!!!

Post by Фант »

В данном коде у Вас очень много ошибок. Присутствует не понимание процесса...
1. Про название кнопок уже сказали: используйте кавычки к примеру: ("s").
2. Затяжные паузы у Вас полностью стопорят программу.
Простым языком скажу следующее:
Программа это текстовый файл. Ваше устройство "читает" текст программы пробегая указателем файла по определенным правилам с верху вниз по тексту. Считывая какие либо значения и команды устройство выполняет те или иные действия. Чтение и выполнение действий происходит с огромной скоростью.
Вы должны понимать, что если Вы поставили паузу 300-значит это 300 секунд указатель файла будет находиться именно в этой точке файла: тупо "смотреть" на команду PAUSE 300 и ничего больше не делать...хоть жмите на кнопку или не жмите....
Для того чтобы в программе сработала какая либо команда нужно добиться того чтобы эта команда была свовременно прочитана машиной... Для этого существуют цыклы, метки, переходы и т.д...

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Помогите с кодом!!!

Post by Фант »

Допустим Вы хотите чтобы при нажатии кнопки сработало какое либо действие. Тогда кнопка должна находиться в цикле и "ждать" своего применения.
Тоесть вот два примера (один типа Ваш один мой):

'Пример Ваш.
Button "s" title "" at 0,0 size 100,100
If button_pressed ("s") then 20
Pause 300
20 end

'Пример 2
Button "s" title "" at 0,0 size 100,100
Loop:
If button_pressed ("s") then 20
Goto loop
20 end

В Первом случае программа встает в паузу и ничего не происходит-Ваша команда нажатия кнопки осталась позади и она никогда уже не сработает..после истечения 300 секунд сработает команда end и программа завершится.
Второй вариант:
Команда нажатия кнопки находится в цикле и ждет своего нажатия. Тоесть указатель файла постоянно движется в цикле loop с бешеной скоростью и после нажатия на кнопку сразу выйдет из цикла на метку 20 и завершит программу командой END

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Помогите с кодом!!!

Post by Фант »

Тоесть Для получения какого либо результата Вы должны понимать в каком месте у Вас будет находиться указатель файла и какие команды он будет выполнять-тоесть должны представлять АЛГОРИТМ ДЕЙСТВИЙ программы...
Поняв АЛГОРИТМ ДЕЙСТВИЙ Намного проще заставить его работать с помощью команд.

Gas
Posts: 4
Joined: Fri Mar 13, 2015 11:49 am
My devices: Programs

Re: Помогите с кодом!!!

Post by Gas »

Спасибо. Вы мне очень помогли!

Gas
Posts: 4
Joined: Fri Mar 13, 2015 11:49 am
My devices: Programs

Re: Помогите с кодом!!!

Post by Gas »

Ещё одна проблема. Подскажите!
После нажатия на кнопку у меня программа переходит в цикл, в котором есть картинка и она пропадает. Что делать?

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Помогите с кодом!!!

Post by Фант »

Думайте!
Посмотрите внимательно на Ваш цикл: Какие команды у Вас выполняются в цикле и учтите-что эти команды выполняются с бешенной скоростью...
Мое предположение-флаг у Вас в цикле рисуется и сразу стирается командой очистки экрана graphics clear....
Алгоритм должен быть такой:
1.создали и Расположили кнопки флагов.
2. После нажатия любой кнопки происходит очистка экрана. кнопки интерфейса прячутся (удаляются).
3. Рисуется нужный флаг. Отображается кнопка возвращения в главное меню.
4. После нажатия кнопки выхода в меню очищается экран. Кнопка меню прячется(удаляется). Кнопки флагов появляются(создаются).

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Помогите с кодом!!!

Post by Фант »

Рекомендую следующий вариант:
1.создайте сразу все кнопки и меню и выхода в меню. Кнопку выхода в меню спрячьте.
2. Нажатие на кнопки-Это Ваш главный и единственный цикл.
3. После нажатия на любую кнопку запоминаете нажатие.
4. Далее переход-очистка экрана, кнопки меню прячутся, кнопка выхода появляется-это одна функция или подпрограмма.
5. Исходя из значения кнопки которое вы запомнили-переходите на нужную метку для отрисовки нужного флага и сразу возвращаетесь в главный цикл для ожидания нажатия кнопки выхода в меню.
6. После нажатия этой кнопки-экран очищается, кнопка прячется, кнопки флагов появляются-обратно в главный цикл..
Както так.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Помогите с кодом!!!

Post by Фант »

Чтобы это коасиво и изящно исполнить рекомендую кнопкам присвоить нумерацию, а не буквенные обозначения...
Тогда у Вас будет цикл выглядеть так:
Loop:
For i=1 to n
I$=i
If button_pressed (i$) then ...
Next i
goto loop

Здесь n-количество Ваших кнопок-хоть 4 хоть 20...к тому же после нажатия на кнопку-запоминаете значение i и используете для перехода на нужную метку изящной командой:
ON i GOTO 10, 20, 30, 40...

Post Reply