русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пример организации светового меню


Дата добавления: 2014-02-04; просмотров: 902; Нарушение авторских прав


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

Экран IBM PC имеет 25 строк и 80 позиций. Нумерация строк и позиций начинается с 1. Первая строка находится вверху, первая позиция слева. Все необходимые функции работы с экраном IBM PC имеются в библиотеке компилятора, их прототипы находятся в файле conio.h. Рассмотрим некоторые из этих функций:

 

void clrscr( void ); - осуществляет стирание экрана;

void gotoxy( int x, int y ); - перемещает курсор в позицию x строки y;

void cprintf( char *format, ... ); - выполняет то же самое, что и printf, но выводит информацию, используя установленный цвет фона и цвет символа;

void textcolor( int color ); - установка цвета символа с кодом color;

void textbackground( int color ); - установка цвета фона с кодом color;

 

Последние функции не изменяют цвет уже выведенных символов. Их влияние распространяется на все последующие выводы с помощью функции cprintf.

При установке цвета допускается использовать шестнадцать цветов символа с кодами 0...15, и восемь цветов фона с кодами 0...7. Для удобства работы с цветами в conio.h определены мнемонические имена для цветов:

 

enum COLORS {

/* цвета для символов и фона */

BLACK /* черный */, BLUE /* синий */,

GREEN /* зеленый */, CYAN /* салатовый */,

RED /* красный */, MAGENTA /* малиновый */,

BROWN /* коричневый */, LIGHTGRAY /* светло-серый */,

/* цвета только для символов */

DARKGRAY /*темно-серый */, LIGHTBLUE /* ярко-синий */,

LIGHTGREEN /*ярко-зеленый*/, LIGHTCYAN /*ярко-салатовый*/,

LIGHTRED /*ярко-красный*/, LIGHTMAGENTA /*ярко-малиновый*/,



YELLOW /* желтый */, WHITE /* белый */ };

Приведенная ниже программа вычисляет функции sin(x), cos(x) и tan(x) в зависимости от выбора пользователя. Выбор осуществляется с помощью светового меню. Движение светового окна организуется путем перерисовки пункта меню другим цветом фона. Основной цикл этой программы управляет изменением переменной choice, в которой хранится текущий выбор пользователя.

 

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include "keyboard.h"

 

#define N 4

#define ROW 10

#define COL 35

#define TEXT_C WHITE

#define TEXT_BG BLACK

#define CHOICE_BG LIGHTGRAY

 

void out_str( int num, int bg_color );

 

/* Организация светового меню */

void main ( void )

{

int loop; /* Флаг конца работы */

int choice; /* Текущий выбор пункта меню */

int old_choice; /* Старый выбор пункта меню */

double fun, x; /* Значения функции и аргумента */

int i;

textbackground( TEXT_BG ); textcolor( TEXT_C );

clrscr(); gotoxy( COL, ROW-1 );

cprintf( "Аргумент x=" ); scanf( "%lf", &x );

/* Начальный вывод всех пунктов меню */

i=1; while( i <= N ) { out_str( i, TEXT_BG ); i++; }

loop = 1; choice = 1; old_choice = 2;

while ( loop )

{

out_str( old_choice, TEXT_BG );

out_str( choice, CHOICE_BG );

old_choice = choice;

switch( GetCh() )

{

case kbUp :

if ( choice>1 ) choice--; else choice = N; break;

case kbDown :

if ( choice<N ) choice++; else choice = 1; break;

case kbEnter :

switch ( choice )

{

case 1 : fun=sin(x); break;

case 2 : fun=cos(x); break;

case 3 : fun=tan(x); break;

case 4 : loop=0; continue;

}

textbackground( TEXT_BG ); gotoxy( COL-5, ROW+6 );

cprintf( "Значение функции %lf\n", fun );

}

}

}


 

/* Функция вывода строки меню с указанным цветом фона */

void out_str( int num, int bg_color )

{

textbackground( bg_color ); gotoxy( COL, ROW+num );

switch( num )

{

case 1: cprintf( "1. sin(x) " ); break;

case 2: cprintf( "2. cos(x) " ); break;

case 3: cprintf( "3. tan(x) " ); break;

case 4: cprintf( "4. Конец работы" ); break;

}

}

 

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



<== предыдущая лекция | следующая лекция ==>
Перечисления. Работа с клавиатурой IBM PC | Ввод-вывод массива


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.055 сек.