Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Програма Меню

  1. #1 Програма Меню 
    Новичок
    Регистрация
    02.08.2011
    Сообщений
    6
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Доброго времени суток Если кто может помоч нубу помогите Пытаюсь сделать Меню на qbasic

    10 CLS

    INPUT "PROGRAN Raning Plase Enter pasword to redactoring program ", a, b, c

    IF a = 1 THEN GOTO 20
    IF b = 2 THEN GOTO 30
    IF c = 3 THEN GOTO 40
    20 PRINT "aaaa"
    END
    30 PRINT "bbbb"
    END
    40 PRINT "cccc"
    Пытаюсь сделать так что при выборе Програма выводила Нудный принт
    Выбираю 1 Оно пишет aaaa
    Выбераю 2 оно пишет aaaa
    Выбераю 3 Оно пишет aaaa
    Помогите чтоб при выборе оно выберало нужные буквы помогите новичку пока команд знаю мало.
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Надо, где Input вместо a, b, c написать только а
    А где IF'ы, вместо a, b и с написать а
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  3. #3
    Новичок
    Регистрация
    02.08.2011
    Сообщений
    6
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Надо, где Input вместо a, b, c написать только а
    А где IF'ы, вместо a, b и с написать а
    Спасибо Огромное все получилось =)
    Ответить с цитированием  
     

  4. #4  
    Новичок
    Регистрация
    02.08.2011
    Сообщений
    6
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    10 CLS

    INPUT "1 = Programs, 2 GAME, 3 = DATA", a

    IF a = 1 THEN GOTO 20 ELSE GOTO 50
    IF a = 2 THEN GOTO 30 ELSE GOTO 50
    IF a = 3 THEN GOTO 40 ELSE GOTO 50
    20 PRINT "Programs"
    END
    30 PRINT "GAME"
    END
    40 PRINT "DATA"
    50 PRINT "HEBEPHO"
    60 SLEEP 5
    70 GOTO 10



    Теперь другая проблема хочу чтобы оно при выборе 2 -3 соответтвовало выбору а если я ввожу чило 4 5 6 7 8 неважно любое чтоб заного выбор был
    Ответить с цитированием  
     

  5. #5  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Надо вместо ELSE GOTO 50 написать ELSE GOTO 10
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  6. #6  
    Новичок
    Регистрация
    02.08.2011
    Сообщений
    6
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Kakos_nonos Посмотреть сообщение
    Надо вместо ELSE GOTO 50 написать ELSE GOTO 10
    Несовсем так когда нажимаю 2или 3 оно должно писать раздел 2 или 3 а оно возвращает вопрос по новой =(
    Ответить с цитированием  
     

  7. #7  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Понял, надо убрать все ELSE GOTO 50, а на том месте, где был последний ELSE написать просто GOTO 50.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  8. Пользователь сказал cпасибо:

    motoded (03.08.2011)

  9. #8  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,846
    Сказал(а) спасибо
    1,815
    Поблагодарили 945 раз(а) в 807 сообщениях
    Записей в блоге
    1
    Люди, забудьте эти дедовские способы с инпутом, это самый неудобнейший и неюзерский способ, т.е. просто издевательство над теми, кто будет пользоваться вашей программой.
    Вот возьмите мой код, разберитесь, он простейший, не сложнее того, что тут написано, основан на обычной логике и позволяет делать нормальные менюшки, на которые приятно смотреть.
    Код :
    Vib% = 0   ' Текущий выбор
    Drw% = 1   ' Нарисуем меню в самом начале
    DO   '  Это бесконечный цикл с постусловием
     
     
       Kb$ = INKEY$    '  Это получение нажатых клавиш
                       '  т.е. если клавиша была нажата, её
                       '  код в строковом выражении запишется
                       '  в строковую переменную Kb$, а если
                       '  не было нажатых клавиш, то соотв.
                       '  переменная будет пустым значением.
     
         '  Это мы проверяем нажата ли клавиша вверх(смотрим Kb$)
         '  и отнимаем единицу от значения выбранного пункта, если
         '  его значение больше нуля, т.е. не даём выйти за ноль.
         '  После изменения значения, ставим флаг отрисовки меню
     
       IF Kb$ = CHR$(0) + "H" AND Vib% > 0 THEN Vib% = Vib% - 1: Drw% = 1
     
         '  Это мы проверяем нажата ли клавиша вниз
         '  и прибавляем единицу к значению выбранного пункта, если
         '  его значение меньше двух, т.е. мы ограничиваем кол-во
         '  пунктов тремя значениями: 0, 1, 2
         '  Также после изменения значения, ставим флаг отрисовки меню
     
       IF Kb$ = CHR$(0) + "P" AND Vib% < 2 THEN Vib% = Vib% + 1: Drw% = 1
     
         '  Тут будет выбор пункта меню ENTER'ом
       IF Kb$ = CHR$(13) THEN
              '  Пусть надпись выводится вверху, жёлтым цветом
          LOCATE 1, 1: COLOR 14
              '  Селект кейзу скармливаем переменную,
              '  по значению которой нужно произвести выбор
              '  Далее пишем CASE, номер пункта и код для выполнения
              '  Двоеточие равносильно переводу на другую строку, т.е.
              '  если бы мы писали код на следующей строке.
          SELECT CASE Vib%
             CASE 0: PRINT "Punkt 1"
             CASE 1: PRINT "Punkt 2"
             CASE 2: PRINT "Punkt 3"
          CASE ELSE     ' Этой строчки требуют некоторые компиляторы
                        ' по сути это исключающее условие, т.е. если
                        ' ни один пункт не выбран, то выполнится код
                        ' между CASE ELSE и END SELECT.
          END SELECT
       END IF
     
             '  Это условие отрисовки меню
             '  после изменения выбранного пункта
             '  оно единоразово выполняется
     
             IF Drw% = 1 THEN
     
                          '  Сбросим флаг отрисовки, чтобы не
                          '  выполнять мног раз. Нам нужно
                          '  перерисовывать меню только тогда,
                Drw% = 0  '  когда выбранный пункт изменился.
     
              '  Тут ставим позицию печати в заданную точку(LOCATE)
              '  и проверяем ровняется ли значение выбранного пункта
              '  значению пункта которое в тек. момент отрисовываем.
              '  Если ровняется, значит это и есть выбранный пункт,
              '  помечаем его особым цветом(11), в противном случае ставим
              '  ему обычный цвет(8).
              '  Цвет задаётся оператором COLOR
     
              '  Пункт 1
              LOCATE 5, 10: IF Vib% = 0 THEN COLOR 11 ELSE COLOR 8
     
                   '  Печатаем наш пункт
                   PRINT "Programs"
     
              '  Пункт 2
              LOCATE 6, 10: IF Vib% = 1 THEN COLOR 11 ELSE COLOR 8
                   '  Печатаем наш пункт
                   PRINT "GAME"
     
              '  Пункт 3
              LOCATE 7, 10: IF Vib% = 2 THEN COLOR 11 ELSE COLOR 8
                   '  Печатаем наш пункт
                   PRINT "DATA"
     
             END IF  '  Конец отрисовки меню
     
         '  Тут код цикла заканчивается
         '  Заодно поставим постусловие на выход из цикла
         '  по нажатию клавиши ESCAPE
    LOOP UNTIL Kb$ = CHR$(27)
    CLS  '  Очистим экран, дальше никаких END'ов не надо
         '  интерпретатор и так поймёт что это конец программы.
    Последний раз редактировалось >Quiet Snow<; 03.08.2011 в 16:21. Причина: Добавил выбор ENTER'ом
    Ответить с цитированием  
     

  10. Пользователь сказал cпасибо:

    motoded (03.08.2011)

  11. #9  
    Новичок
    Регистрация
    02.08.2011
    Сообщений
    6
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    Люди, забудьте эти дедовские способы с инпутом, это самый неудобнейший и неюзерский способ, т.е. просто издевательство над теми, кто будет пользоваться вашей программой.
    Вот возьмите мой код, разберитесь, он простейший, не сложнее того, что тут написано, основан на обычной логике и позволяет делать нормальные менюшки, на которые приятно смотреть.
    Код :
    Vib% = 0   ' Текущий выбор
    Drw% = 1   ' Нарисуем меню в самом начале
    DO   '  Это бесконечный цикл с постусловием
     
     
       Kb$ = INKEY$    '  Это получение нажатых клавиш
                       '  т.е. если клавиша была нажата, её
                       '  код в строковом выражении запишется
                       '  в строковую переменную Kb$, а если
                       '  не было нажатых клавиш, то соотв.
                       '  переменная будет пустым значением.
     
         '  Это мы проверяем нажата ли клавиша вверх(смотрим Kb$)
         '  и отнимаем единицу от значения выбранного пункта, если
         '  его значение больше нуля, т.е. не даём выйти за ноль.
         '  После изменения значения, ставим флаг отрисовки меню
     
       IF Kb$ = CHR$(0) + "H" AND Vib% > 0 THEN Vib% = Vib% - 1: Drw% = 1
     
         '  Это мы проверяем нажата ли клавиша вниз
         '  и прибавляем единицу к значению выбранного пункта, если
         '  его значение меньше двух, т.е. мы ограничиваем кол-во
         '  пунктов тремя значениями: 0, 1, 2
         '  Также после изменения значения, ставим флаг отрисовки меню
     
       IF Kb$ = CHR$(0) + "P" AND Vib% < 2 THEN Vib% = Vib% + 1: Drw% = 1
     
         '  Тут будет выбор пункта меню ENTER'ом
       IF Kb$ = CHR$(13) THEN
              '  Пусть надпись выводится вверху, жёлтым цветом
          LOCATE 1, 1: COLOR 14
              '  Селект кейзу скармливаем переменную,
              '  по значению которой нужно произвести выбор
              '  Далее пишем CASE, номер пункта и код для выполнения
              '  Двоеточие равносильно переводу на другую строку, т.е.
              '  если бы мы писали код на следующей строке.
          SELECT CASE Vib%
             CASE 0: PRINT "Punkt 1"
             CASE 1: PRINT "Punkt 2"
             CASE 2: PRINT "Punkt 3"
          CASE ELSE     ' Этой строчки требуют некоторые компиляторы
                        ' по сути это исключающее условие, т.е. если
                        ' ни один пункт не выбран, то выполнится код
                        ' между CASE ELSE и END SELECT.
          END SELECT
       END IF
     
             '  Это условие отрисовки меню
             '  после изменения выбранного пункта
             '  оно единоразово выполняется
     
             IF Drw% = 1 THEN
     
                          '  Сбросим флаг отрисовки, чтобы не
                          '  выполнять мног раз. Нам нужно
                          '  перерисовывать меню только тогда,
                Drw% = 0  '  когда выбранный пункт изменился.
     
              '  Тут ставим позицию печати в заданную точку(LOCATE)
              '  и проверяем ровняется ли значение выбранного пункта
              '  значению пункта которое в тек. момент отрисовываем.
              '  Если ровняется, значит это и есть выбранный пункт,
              '  помечаем его особым цветом(11), в противном случае ставим
              '  ему обычный цвет(8).
              '  Цвет задаётся оператором COLOR
     
              '  Пункт 1
              LOCATE 5, 10: IF Vib% = 0 THEN COLOR 11 ELSE COLOR 8
     
                   '  Печатаем наш пункт
                   PRINT "Programs"
     
              '  Пункт 2
              LOCATE 6, 10: IF Vib% = 1 THEN COLOR 11 ELSE COLOR 8
                   '  Печатаем наш пункт
                   PRINT "GAME"
     
              '  Пункт 3
              LOCATE 7, 10: IF Vib% = 2 THEN COLOR 11 ELSE COLOR 8
                   '  Печатаем наш пункт
                   PRINT "DATA"
     
             END IF  '  Конец отрисовки меню
     
         '  Тут код цикла заканчивается
         '  Заодно поставим постусловие на выход из цикла
         '  по нажатию клавиши ESCAPE
    LOOP UNTIL Kb$ = CHR$(27)
    CLS  '  Очистим экран, дальше никаких END'ов не надо
         '  интерпретатор и так поймёт что это конец программы.





    Извените пожалуйста за мою тупость я только Начинаю чтото шурупать точнее переначинаю....
    Вы можете всю програму написать а то пишу в байсике
    DO
    И она выделяется красной и ниче нехочет делать
    IF Kb$ = CHR$(13) THEN
    Тут тоже =( Помоги если нетрудно валенку
    Ответить с цитированием  
     

  12. #10  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,846
    Сказал(а) спасибо
    1,815
    Поблагодарили 945 раз(а) в 807 сообщениях
    Записей в блоге
    1
    Это и есть вся программа, вы не руками переписывайте текст, а копируйте с экрана, весь текст копируйте(он ещё и внизу есть в этом окошке, т.е. скроллится).
    Да ещё, сохранять нужно редактором, который поддерживает русскую ASCII кодировку, я пользуюсь редактором Bred2, расширение у сохраняемого файла должно быть *.bas

    а то пишу в байсике
    Мой код ориентирован на QBasic\QuickBasic, а вы чем пользуетесь?
    Ответить с цитированием  
     

Страница 1 из 2 12 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. DVD меню
    от Kakos_nonos в разделе Софт
    Ответов: 2
    Последнее сообщение: 07.01.2013, 11:27
  2. Помогите с меню
    от Vladislav в разделе HTML, CSS
    Ответов: 8
    Последнее сообщение: 23.10.2012, 19:57
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •