Главная страница
Навигация по странице:

  • Лабораторная работа № 2

  • //конструктор и деструктор MyWindow(); MyWindow();//функция, создающая окно int CreateWindow();//инициализация таймеров

  • //функция ассемблера static int asmFunction(void);//функции, обрабатывающие сигналы таймеров

  • //функция, отключающая таймеры

  • //прямоугольник, в который выводится текст SDL_Rect dest;//флаг, включающий/отключающий вывод текста bool showPosition=true;//сам текст

  • //конструктор и деструктор MyWindow(); MyWindow();// функция ассемблера

  • //функции, перемещающие кнопку вниз, вверх, влево или вправо по нажатию //стрелок

  • // перемещение кнопки в точку с координатами

  • События в sdl 0


    Скачать 375.48 Kb.
    НазваниеСобытия в sdl 0
    Дата01.04.2022
    Размер375.48 Kb.
    Формат файлаdocx
    Имя файлаLab2_otchet.docx
    ТипЛабораторная работа
    #433008


    Балтийский государственный технический университет «Военмех» им. Д. Ф. Устинова

    Кафедра И5

    «Информационные системы и программная инженерия»

    Лабораторная работа № 2
    по дисциплине «Программирование на ЯВУ»

    на тему «События в SDL 2.0»

    Выполнила:

    Студент Кирсанов Я. О.

    Группа И993

    Преподаватель:

    Спирин Д.О.

    Санкт-Петербург

    2021

    Задание 1.

    В файле l2.c приведен текст программы: разобраться и устранить возможные ошибки, проанализировать виды событий и причины их срабатывания. В программе перевести все сообщения на русский язык. Изменить логику построения и структуру программы, взяв за основу ЛР 1.
    В программе реализован класс MyWindow, содержащий следующие члены:
    //основное окно

    SDL_Window * windowContext = NULL;

    //таймеры, срабатывающие через 2 сек. И 10 сек.

    SDL_TimerID repeatOnceFunctionTimer;

    SDL_TimerID customEventFunctionTimer;

    //конструктор и деструктор

    MyWindow();

    MyWindow();

    //функция, создающая окно

    int CreateWindow();

    //инициализация таймеров

    int InitTimers();

    //функция ассемблера

    static int asmFunction(void);

    //функции, обрабатывающие сигналы таймеров

    static Uint32 repeatOnceFunction(Uint32 interval, void* param);

    static Uint32 customEventFunction(Uint32 interval, void* param);

    //функция, отключающая таймеры

    int StopTimers();
    Результат работы программы представлен на рис. 1 и рис. 2.


    Рис.1 Окно, меняющее цвет и отслеживающее движения мыши


    Рис. 2 Через 10 сек. срабатывает таймер, окно закрывается и выводится сообщение
    Задание 2.

    На основе полученных знаний написать программу, создающую два окна. В первом фиксируются движение мыши по экрану, во втором выводятся координаты положения курсора и наоборот. В каждом окне имеется кнопка, включающая/отключающая слежение за мышью с выводом соответствующего сообщения. Реализовать возможность перемещения кнопки в пределах окна.

    Аналогично заданию 1, в программе реализован класс MyWindow, содержащий следующие члены:

    //окно

    SDL_Window * windowContext = NULL;

    //рендерер

    SDL_Renderer * renderer;

    //прямоугольная кнопка

    SDL_Rect rBtn;

    //цвет кнопки

    int cBtn;

    //поверхность, текстура, шрифт

    SDL_Surface* screen;

    SDL_Texture* texture;

    TTF_Font* fnt;

    //прямоугольник, в который выводится текст

    SDL_Rect dest;

    //флаг, включающий/отключающий вывод текста

    bool showPosition=true;

    //сам текст

    char tmpch[100];

    //разность между координатами мышки в момент нажатия и координатами кнопки

    int DMousX, DMousY;

    //конструктор и деструктор

    MyWindow();

    MyWindow();

    //функция ассемблера

    static int asmFunction(void);

    //создание окна

    int CreateWindow();

    //создание кнопки

    int CreateButton(int X,int Y, int W, int H, int color);

    //функция, рисующая кнопку

    int DrawButton();

    //функции, перемещающие кнопку вниз, вверх, влево или вправо по нажатию //стрелок

    int MoveButtonDown();

    int MoveButtonUp();

    int MoveButtonLeft();

    int MoveButtonRight();

    // обработка нажатия на кнопку. При нажатии на кнопку она меняет цвет

    int ClickButton(int x, int y);

    // перемещение кнопки в точку с координатами

    int ButtonMoveTo(int x, int y);

    Результат работы программы представлен на рис. 3 и рис. 4.



    Рис.3 Два окна с кнопками. В каждом окне отслеживается положение курсора



    Рис. 4 При нажатии на кнопку отслеживание курсора отключается


    написать администратору сайта