Добавил:
@wequalwo Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОргЭВМ_лаб4

.docx
Скачиваний:
1
Добавлен:
08.09.2024
Размер:
49.13 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет имени В. И. Ленина

Кафедра Вычислительной техники

ОТЧЕТ

По лабораторной работе № 4 в дисциплине ОргЭВМ

Работу выполнил: Иванов Серафим Кириллович, 0392

Работу проверил: Ельчанинов М. Н

2021 год

Задание на работу:

  1. Разработать, написать и отладить программу управления перемещением символа

  2. Изменить программу, заменив стандартные функции библиотеки C++ своими

Код программы и результат ее работы:

#include <iostream>

#include <conio.h>

#include <windows.h>

static int x = 0;

static int y = 0;

void cursor(bool status)

{

HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_CURSOR_INFO info;

if (!status)

{

info.dwSize = 100;

info.bVisible = FALSE;

SetConsoleCursorInfo(consoleHandle, &info);

}

else

{

info.dwSize = 10;

info.bVisible = TRUE;

SetConsoleCursorInfo(consoleHandle, &info);

}

}

void reset(int dir)

{

switch (dir)

{

case 72:

y--;

break;

case 80:

y++;

break;

case 77:

x++;

break;

case 75:

x--;

break;

default:

return;

}

std::cout << "\b ";

if (y == -1)

{

y = 9;

}

else if (x == -1)

{

x = 29;

}

else

{

x = x % 30;

y = y % 10;

}

COORD position = { x,y }; //позиция x и y

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hConsole, position);

std::cout << "\x1b[36m*";

}

int main()

{

cursor(0);

//set(20, 0);

HANDLE out_handle = GetStdHandle(STD_OUTPUT_HANDLE);

COORD crd = { 31, 10 };

SMALL_RECT src = { 0, 0, crd.X - 1, crd.Y - 1 };

SetConsoleWindowInfo(out_handle, true, &src);

SetConsoleScreenBufferSize(out_handle, crd);

std::cout << "\x1b[36m*";

int choice = 0;

while (choice != 27)

{

choice = _getch();

if (choice == 224)

{

choice = _getch();

reset(choice);

}

}

return 0;

}

Соседние файлы в предмете Организация ЭВМ