Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Некоторые функции работы с изображением на экране




Для рассматриваемых ниже функций графическая информация на экране представляет прямоугольную область с координатами:

 

x1, y1

 

 
  x2, y2

 

1) unsigned imagesize(int x1,int y1,int x2,int y2); - возвращает значение объема буфера для сохранения графической информации в окне экрана заданного размера;

2) void getimage(int x1,int y1,int x2,int y2,void *buf); - получение и сохранение области экрана в буфере (указатель buf) памяти;

3) void putimage(int x,int y,buf,int Код);   - вывод изображения из buf на экран начиная с заданной позиции; код определяет способ наложения выводимого изображения:

COPY_PUT (0) – простое перемещение;

XOR_PUT (1) – наложение с операцией “Исключающее ИЛИ”;

OR_PUT (2) – с выполнением операции “ИЛИ”;

AND_PUT (3) – с выполнением операции “И”;

NOT_PUT (4) – перемещение изображения с инверсией (отрицанием).

Рассмотрим некоторые дополнительные функции.

1) void sound(unsigned z); - вызывает звуковой сигнал с частотой (герц);

2) void nosound(void); - прекращает подачу звукового сигнала;

3) void delay(int x); - задерживает выполнение программы на х миллисекунд; прототипы этих функций описаны в библиотеке dos.h.

4) int bioskey(0); - ждет нажатия клавиши (int Код=0) и возвращает ее код; прототип описан в библиотеке bios.h.

 Пример программы

В центре экрана нарисовать картинку, например такую, клавишами «стрелки» управлять движением фигуры только до границ экрана. Текст программы может иметь следующий вид:

 

#include <stdio.h>

#include <graphics.h>

#include <conio.h>

#include <process.h>

#include <dos.h>

#include <bios.h>

#include <alloc.h>

 

void Move(int,int,int);

 

void main(void)

{

int g_driver=9,g_mode=2,g_error;

int x,y,key;

initgraph(&g_driver,&g_mode,"c:\\bc31\\bgi");

  g_error=graphresult();

  if(g_error!=grOk)

     { puts("error");

         printf("\n error=%d,reason=%s\n",g_error,grapherrormsg(g_error));

getch();     

exit(1);

     }

setbkcolor(1); setcolor(12); settextstyle(3,0,4);

x=getmaxx()/2;  

y=getmaxy()/2;

int r=50;

circle(x,y,r); circle(x,y,r-5);

outtextxy(x-28,y-17,"YES!");

              Move(x,y,r+5);

closegraph();

}

 

     void Move(int x,int y,int d)

{       

 int Fon,Color_Fon, x1,y1,Key;

 void *bufC;

 unsigned sizeC;

 sizeC=imagesize(x-d,y-d,x+d,y+d);

  bufC=malloc(sizeC);

getimage(x-d,y-d,x+d,y+d,bufC);

              Color_Fon=getbkcolor();

 while(1)

 {

  Key=bioskey(0);

setfillstyle(0,Color_Fon);

  bar(x-d,y-d,x+d,y+d);

switch(Key)

{

     case 283: free(bufC); 

return;                          // Нажата клавиша <Esc>

     case 19712: x+=20;

              if(x+d>getmaxx()) x=d; break; // - >

     case 19200: x-=20;

              if(x-d<0)x=getmaxx()-d;break; // <-

     case 20480: y+=10;

              if(y+d>getmaxy())y=d; break; // Down

     case 18432: y-=10;

              if(y-d<0)y=getmaxy()-d;break; // Up

    default: sound(1000); delay(500);

nosound(); break;

  }

putimage((x-d),(y-d),bufC,COPY_PUT);

}

return;

}

 

Варианты индивидуальных заданий

1. Составить программу вывода на экран дисплея схематичного изображения велосипедиста. При запуске программы велосипедист начинает движение, вращая ногами педали велосипеда.

2. Составить программу вывода на экран дисплея схематичного изображения человека. При запуске программы человек начинает идти, размахивая в такт движения руками.

3. Составить программу вывода в верхней части экрана дисплея изображения облака. При запуске программы облако начинает двигаться и из него начинает идти дождь. При этом размер облака постепенно уменьшается.

 4. Составить программу вывода в верхнюю часть экрана дисплея изображения тучи, а в нижнюю часть экрана дисплея - емкость для воды. При запуске программы начинает идти дождь. При этом размер тучи уменьшается, a емкость наполняется водой.

5. То же, что и в задании 4, но из тучи идет снег и внизу растут сугробы.

6. Составить программу вывода на экран дисплея изображения летящего самолета.

7. Составить программу вывода на экран дисплея изображения пушки. В правой части экрана появляется и исчезает (случайным образом) мишень. Нажатием клавиши ВВОД производится выстрел из пушки. Момент попадания фиксируется в виде взрыва.

8. Составить программу вывода в верхней части экрана дисплея движущегося слева направо парусника с постоянной скоростью. Ее значение всякий раз задается генератором случайных чисел. В нижней части экрана дисплея расположена пушка. При нажатии клавиши ВВОД происходит выстрел торпедой с постоянной скоростью. При попадании торпеды в пушку смоделировать взрыв парусника и его исчезновение. При промахе парусник достигает правой границы экрана дисплея и начинает движение сначала с новой постоянной скоростью.

9. Составить программу вывода на экран дисплея схематичного изображения лыжника. При нажатии клавиши ВВОД он начинает движение классическим стилем.

10. Составить программу вывода на экран дисплея схематичного человека в положении готовности осуществить прыжок в длину. При нажатии клавиши ВВОД спортсмен начинает разбег и выполняет прыжок в длину.

11. Составить программу вывода изображения циферблата механических часов с секундной, минутной и часовой стрелками. Запуск часов осуществляется нажатием клавиши ВВОД, при этом перемещение секундной стрелки сопровождается характерным для часов звуком.

12. То же, что в задании 11, но предусмотреть режим будильника.

13. То же, что в задании 11, но в 6 и 12 часов на экране появляется изображение кукушки, затем подается соответствующее число сигналов.

14. То же, что в задании 11, но предусмотреть коррекцию времени путем ускоренного перемещения стрелок при нажатии клавиши курсор вправо и курсор влево.

15. Составить программу вывода на экран дисплея настольных электронных часов и изображения метронома. При нажатии клавиши ВВОД стрелка метронома начинает колебательное движение, синхронно с которым начинает изменяться показание электронных часов.

16. Составить программу вывода на экран дисплея песочных часов. При нажатии клавиши ВВОД моделируется процесс падения песчинок, уменьшение уровня песка в верхней части колбы и увеличение в нижней части колбы.

17. Составить программу вывода на экран дисплея треугольника. При нажатии клавиши курсор вправо треугольник вращается по часовой стрелке, клавиши курсор влево - против часовой стрелки.

18. Составить программу вывода на экран дисплея схематичного изображения бабочки. При нажатии клавиши ВВОД бабочка начинает полет, взмахивая крыльями.

19. Составить программу вывода на экран дисплея трех вложенных друг в друга окружностей, представляющих собой беговые дорожки. На линию старта выходят три спортсмена (произвольные фигуры). При нажатии клавиши ВВОД участники стартуют с одинаковой угловой скоростью. После старта угловые скорости участников забега изменяются по случайному закону. На финише указать место, занятое каждым участником забега.

20. То же, что в задании 19, но беговые дорожки представляют собой три одинаковых рядом расположенных окружностей.

 

Контрольные вопросы

 

1. Каким образом производится инициализация графического режима?

2. Назовите основные функции установки параметров изображения.

3. Как задать автоматический режим графики?

4. Какими функциями можно создать эффект движения изображения по экрану дисплея?

                                                       



ЛИТЕРАТУРА

 

1. Березин Б.И., Березин С.Б. Начальный курс С и С++. – М.: Диалог-МРТИ,1999. - 288 с.

2. Керниган Б., Ритчи Д. Язык программирования Си. - М.: Финансы и статистика,1992. - 271 с.

3. Касаткин А.И., Вольвачев А.Н. Профессиональное программирование на языке Си: Oт Turbo–C к Borland C++: Справочное пособие – Мн.: Выш.шк.,1992. - 240 с.

4. Страуструп Б. Язык программирования С++. 2-е изд.: В 2 т. Киев: ДиаСофт,1993.

5. Фьюэр А. Задачи по языку СИ. - М.: Финансы и статистика, 1985.

6. Хэнкок Л., Кригер М. Введение в программирование на языке СИ. - М.: Радио и связь,1986.

7. Берри В., Микинз Б. Язык СИ: введение для программистов. - М.: Финансы и статистика,1988.

8. Уэйт М., Прама С., Мартин Д. Язык СИ. Руководство для начинающих. - М.: Мир, 1988.

9. Больски М.Н. Язык программирования СИ. Справочник. - М.: Радио и связь, 1988.

10.  Юлин В.А., Булатова И.Р. Приглашение к СИ. - Мн.: Высш.шк., 1990.

11.  Уингер Р. Язык Турбо СИ. - М.: Мир, 1991.

12.  Романовская Л.М., Русс Т.В., Свитковский С.Г. Программирование в среде СИ для ПЭВМ ЕС. - М.: Финансы и статистика, 1992.

13.  Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ. - Мн.: Бест­принт, 2001. – 440 c.

14.  Аксенкин М.А., Целобенок О.Н. Язык С. - Мн.: Унiверсiтэцкае, 1995. – 302 c.

15.  Котлинская Г.П., Галиновский О.И. Программирование на языке СИ. - Мн.: Выш.шк., 1991. – 155 c.

16.  Подбельский В.В. Язык С++. - M.: ФиС, 2001. - 559 c.

17.  Климова Л.И. С++. Практическое программирование. - М.: Кудиц-Образ, 2001. – 587 c.

18.  Шилд Г. Программирование на Borland С++. - Мн.: ПОПУРРИ, 1999. – 800 c.

19. Тимофеев В.В. Программирование в среде С++ Builder 5. - М.: БИНОМ, 2000.



Приложение

Интегрированная среда программирования Borland C++

 

    Интегрированная среда (Integrated Development Environment – IDE) – это программа, имеющая встроенный редактор текстов, подсистему работы с файлами, систему помощи, встроенный отладчик, подсистему управления компиляцией и редактированием связей, а также компилятор и редактор связей. Другими словами, IDE дает возможность получить ЕХЕ-файл, не используя другие программы. IDE запускается файлом ВС.ЕХЕ.

    После запуска на исполнение файла ВС.ЕХЕ на экране отображается основное окно IDE (рис. 1).

Верхняя строка окна – это главное меню. Опции меню позволяют обратиться к подменю и выбрать соответствующую команду.

 

Рис.1

 

Нижняя строка экрана отведена под строку состояния, где выделены назначения “горячих” клавиш, воспринимаемых на данном этапе работы.

    Выбрать любую из команд меню можно одним из трех способов:

1. Нажать клавишу F10 и с помощью клавиш со стрелками выбрать необходимую команду.

2. Установить курсор мыши на любое ключевое слово меню и нажать левую кнопку мыши.

3. Использовать «горячие» клавиши (метод скорейшего вызова команды).

Одновременно нажатие клавиши Alt и «горячей» (клавиша, подсвеченная другим цветом).

    Окно – это ограниченная рамкой область экрана. Его можно открыть, переместить, покрыть другими окнами, изменить размеры, закрыть. Активное окно (то, которое воспринимает нажатия клавиш) обозначается двойной линией. Активное окно изображается всегда поверх других окон. В любой момент только одно окно может быть активным. Каждое окно имеет заголовок и номер, показанные в его верхней строке. Для активного окна там же расположены два управляющих поля, заключенных в квадратные скобки: поле справа используется для раскрытия окна мышью на полный экран, а поле слева – для закрытия окна. Многие окна для управления положение текста имеют по правой и нижней границам вертикальную и горизонтальную полосы прокрутки (скроллинга). Поля изменений размеров окна – это символы нижних углов рамки окна.

    Операции с окнами могут выполняться тремя способами:

1. Через команды главного меню Window.

2. С помощью манипулятора мышь.

3. При помощи «горячих» клавиш.

Закрыть можно только активное окно. Для этого либо выбирается в меню Windows команда Close, либо нажимается «горячая» клавиша Alt+F3, либо мышью выбирается поле [·] на окне.

    Переключение между окнами осуществляется так. Выбирается команда List… из меню Window или нажимается “горячая” клавиша Alt+0. Открывается окно диалога, в котором можно выбрать любое из открытых и ранее закрытых окон. Если на экране отображена хотя бы небольшая часть необходимого окна, достаточно в эту область установить мышь и нажать ее левую кнопку, чтобы окно стало активным. Циклический просмотр окон возможен при помощи клавиши F6.

    Активное окно может быть раскрыто на весь экран либо выбором Window-Zoom, либо нажатием клавиши F5, либо выбором мышью поля [­].

    Для просмотра результатов выполнения программы, если вывод выполняется в текстовом режиме, используется переключение в окно вывода (Window-Output). Для просмотра результатов как в текстовом, так и графическом режимах, следует активизировать окно экрана пользователя (Window- User screen) или воспользоваться одновременным нажатием клавиш Alt+F5. Возврат в среду происходит при нажатии любой клавиши.

    Переключение в режим редактирования выполняется автоматически при выборе команды New в меню File или при открытии файла. Для возврата из меню в режим редактирования достаточно нажать клавишу Esc.


Команды вставки и удаления

Под блоком понимается выделенное подмножество символов.

Ins         – режим вставки/замены;

Del        – удалить символ в позиции курсора;

Backspase – удалить символ слева от курсора;

Ctrl+Y   – удалить строку;

Ctrl+N   – вставить строку.

Команды работы с блоками

Shift+клавиши со стрелками – выделение блока текста;

Ctrl+Ins – копировать блок в буфер обмена;

Shift_Ins – копировать блок из буфера обмена в текущую позицию курсора;

Ctrl+Del – удалить блок;

Shift+Del – вырезать блок в буфер обмена.

Система программирования Borland C++ включает:

1. Интегрированную среду программирования (IDE).

2. Компилятор исходного текста программы.

3. Редактор связей (компоновщик).

4. Библиотеки заголовочных файлов.

5. Библиотеки функций.

6. Программы-утилиты.

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 279.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...