В институте задали написать такую программку. В принципе, ничего особо сложного, но я не имею никакого опыта создания псевдографических интерфейсов под консоль и поэтому прошу ваших советов по реализации.
Необходимо написать программу "матрицы".
Программа должна предоставлять возможность создания, хранения и загрузки из файлов матриц произвольной размерности (один файл - одна матрица). Редактирование матриц должно осуществляться посредством перемещения курсора по её ячейкам и вводом числа в выбранную ячейку (желательно предоставлять возможность прокрутки, иначе следует ограничить размерность матрицы так, чтобы она умещалась на экране). Программа должна позволять выполнять такие действия над созданными матрицами, как сложение, вычитание и умножение с предварительной проверкой возможности данной операции исходя из размерностей матриц (в случае невозможности операции должно быть выдано соотв. сообщение). Результат операции должен выводиться на экран и, при желании юзера, сохраняться в файле.
Пользовательский интерфейс должен быть текстовым. К программе приложить инструкцию пользователю.
Вообще интерфейс программы я представляю себе примерно так:
После запуска программы показываем пользователю меню:
- Калькулятор матриц
- Инструкция пользователю.
- Об авторе.
- Выход.
Далее пользователь выбирает пункт меню и открывается соответственно калькулятор, справка или выходим из проги.
Калькулятор запрашивает размерность новой матрицы. После ввода ширины и высоты программа выводит пустую табличку с заданной размерностью с нулями в её ячейках. Далее пользователь перемещает курсор по ячейкам и вводит туда нужные числа. После заполнения программа запрашивает вторую матрицу и выполняемое действие (сложение, вычитание, умножение)....
В любой момент времени пользователь может нажать для вызова справки F1. Должно открыться что то вроде окна с инструкцией. После нажатия на какую-нибудь клавишу окно должно закрыться и пользователь может продолжить заполнение матрицы.
Вот как раз с этим проблемы. С меню я разобрался частично сам, частично помог форум.
Но когда я выбираю пункт меню, то открывается по идее совершенно иная программа. И все нажатые клавиши будут выполнять уже совершенно иные действия (перемещение курсора по ячейкам таблицы, редактирование ячеек и т.п. вместо перемещения по пунктам меню). КАК вообще можно реализовать ТАКОЕ?? Я себе представляю только такое решение:
заводим что то вроде флага режима работы (чтобы определять, где мы находимся в данный момент и выполнять в зависимости от этого соотв. действия). Затем при перемещении по пунктам меню меняем флаг и в зависимости от флага и нажатой клавиши выполняем те или иные действия (рисуем табличку, запрашиваем данные и т.п...) Но что-то страшное решение получается.. даже толком не знаю в каком направлении копать... уже весь этот форум перерыл - ничего конкретного не нашел. Буду признателен, если кинетесь в меня ссылками на учебники/пособия/сайты в Инете по данной тематике или сами посоветуете, как проще и красивше можно реализовать подобное...
P.S. знаю,что существует модуль F_Mouse... думаю, может его заюзать? подскажите, где в Инете его найти можно, а то я поискал немного и не смог найти... а времени совсем нет его искать...
Заранее спасибо и респект всем откликнувшимся.