Page 1 of 2
Помогите с кодом!!!
Posted: Wed Mar 18, 2015 2:43 pm
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
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 2:48 pm
by Mr. Kibernetik
Кнопки, как и любые другие объекты интерфейса, должны иметь уникальные СТРОКОВЫЕ имена. А у вас для этого используются то строки, то числа.
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 3:12 pm
by Фант
В данном коде у Вас очень много ошибок. Присутствует не понимание процесса...
1. Про название кнопок уже сказали: используйте кавычки к примеру: ("s").
2. Затяжные паузы у Вас полностью стопорят программу.
Простым языком скажу следующее:
Программа это текстовый файл. Ваше устройство "читает" текст программы пробегая указателем файла по определенным правилам с верху вниз по тексту. Считывая какие либо значения и команды устройство выполняет те или иные действия. Чтение и выполнение действий происходит с огромной скоростью.
Вы должны понимать, что если Вы поставили паузу 300-значит это 300 секунд указатель файла будет находиться именно в этой точке файла: тупо "смотреть" на команду PAUSE 300 и ничего больше не делать...хоть жмите на кнопку или не жмите....
Для того чтобы в программе сработала какая либо команда нужно добиться того чтобы эта команда была свовременно прочитана машиной... Для этого существуют цыклы, метки, переходы и т.д...
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 3:24 pm
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
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 3:31 pm
by Фант
Тоесть Для получения какого либо результата Вы должны понимать в каком месте у Вас будет находиться указатель файла и какие команды он будет выполнять-тоесть должны представлять АЛГОРИТМ ДЕЙСТВИЙ программы...
Поняв АЛГОРИТМ ДЕЙСТВИЙ Намного проще заставить его работать с помощью команд.
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 4:24 pm
by Gas
Спасибо. Вы мне очень помогли!
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 4:39 pm
by Gas
Ещё одна проблема. Подскажите!
После нажатия на кнопку у меня программа переходит в цикл, в котором есть картинка и она пропадает. Что делать?
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 4:48 pm
by Фант
Думайте!
Посмотрите внимательно на Ваш цикл: Какие команды у Вас выполняются в цикле и учтите-что эти команды выполняются с бешенной скоростью...
Мое предположение-флаг у Вас в цикле рисуется и сразу стирается командой очистки экрана graphics clear....
Алгоритм должен быть такой:
1.создали и Расположили кнопки флагов.
2. После нажатия любой кнопки происходит очистка экрана. кнопки интерфейса прячутся (удаляются).
3. Рисуется нужный флаг. Отображается кнопка возвращения в главное меню.
4. После нажатия кнопки выхода в меню очищается экран. Кнопка меню прячется(удаляется). Кнопки флагов появляются(создаются).
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 4:59 pm
by Фант
Рекомендую следующий вариант:
1.создайте сразу все кнопки и меню и выхода в меню. Кнопку выхода в меню спрячьте.
2. Нажатие на кнопки-Это Ваш главный и единственный цикл.
3. После нажатия на любую кнопку запоминаете нажатие.
4. Далее переход-очистка экрана, кнопки меню прячутся, кнопка выхода появляется-это одна функция или подпрограмма.
5. Исходя из значения кнопки которое вы запомнили-переходите на нужную метку для отрисовки нужного флага и сразу возвращаетесь в главный цикл для ожидания нажатия кнопки выхода в меню.
6. После нажатия этой кнопки-экран очищается, кнопка прячется, кнопки флагов появляются-обратно в главный цикл..
Както так.
Re: Помогите с кодом!!!
Posted: Wed Mar 18, 2015 5:05 pm
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...