Использование библиотеки CRT. Программирование клавиатуры. Текстовый вывод на экран. Программирование звукового генератора

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Фрагмент текста работы

YY1: INTEGER; {ПЕРЕМЕННЫЕ ИСПОЛЬЗУЮТСЯ ДЛЯ КООРДИНАЦИИ КВАДРАТОВ}

2. Procedure exchange_furniture(KX, KY: integer Room: furniture)

Процедура предназначена для перестановки предметов мебели. в качестве параметров значений из основной программы передаются KX, KY : integer – текущие координаты курсора, и Room : furniture – массив мебели, процедура вычисляет координаты пустого квадрата и проверяет его соседство с выбранным элементом мебели.

в подпрограмме используются следующие переменные:

a : string; //элемент для поиска координат пустого квадрата

i, j: integer; //счетчики циклов.

3. Function Win(Room: Furniture) :boolean

Функция проверяет  выполнены ли условия победы. Результат функции логическое выражение. Если выполнены то выводится текстовое окно со словом «победа!!!» и игра заканчивается, в качестве параметра значения в функцию из основной программы передается  массив мебели Room: furniture.

В основной программе используются переменные

VAR

Room: Furniture;    массив мебели

KX,KY: integer;      текущие координаты курсора

Ch: char;                  код нажатой клавиши.

      Приложение А. Текст программы:

текст программы к модулю MENU:

{-----------ВЕРТИКАЛЬНОЕ МЕНЮ----------------}

{Вызов пунктов меню клавишами СТРЕЛКА-ВВЕРХ и СТРЕЛКА-ВНИЗ}

unit Menu;

interface

USES Crt;

CONST

NumberMenu = 3;

VAR

i,j         : integer;

TextMenu    : array[1..3] of string[28];

ch            : char;

EndWork     : boolean;

procedure Writemenu;

implementation

{-----Выводится пункт меню с заданным номером------}

PROCEDURE WriteMenu;

begin

GotoXY (2, i * 2) ;

Write (TextMenu[i]);

END;

BEGIN

TextMenu[1]:='   О программе   ';

TextMenu[2]:='   Как играть    ';

TextMenu[3]:='   В игру!!!!    ';

EndWork := false;

repeat

TextBackGround(3);

ClrScr;

{------Тень около окна вывода------}

Window(26,7,46,19);

TextBackGround(0);

ClrScr;

{-------Окно вывода меню-------}

Window(25,6,45,18);

TextBackGround(7) ;

ClrScr;

{------Вывод меню------}

TextColor(4);

for i:=1 to NumberMenu do WriteMenu;

i:=1;

TextColor(14) ;

TextBackGround(1);

WriteMenu;

repeat

ch:=ReadKey;

if ch = #0 then

begin

ch:=readkey;

case ch of

#72 : begin               { Стрелка вверх }

textcolor(4);

textbackground(7);

WriteMenu;

dec(i);

if i<1 then i:= NumberMenu;

textcolor(14);

textbackground(1);

WriteMenu;

end;

#80 : begin                  { Стрелка Вверх }

textcolor(4);

textbackground(7);

WriteMenu;

inc(i);

if i > NumberMenu then i:=1;

textcolor(14);

textbackground(1);

WriteMenu;

end;

end;

end;

until ch = #13; { код клавиши Enter }

case i of

1: begin

Window(1,1,80,25);

TextBackGround(1);

ClrScr;

TextColor(15);

Writeln(' Программа как практическая задача к курсовой работе ');

writeln(' за первый курс обучения в АлтГТУ на факультете "прикладная ');

writeln(' информатика в экономике" и представляет собой логическую игру ');

writeln(' программу разработал студент группы Зр-(з)-ПИЭ-81 ');

writeln(' Снежков Алексей Владимирович ');

Readln;

ClrScr;

end;

2: begin

Window(2,2,70,23);

TextBackGround(1);

ClrScr;

TextColor(15);

Writeln(' Для перемещения курсора по игровому полю используйте клавиши ');

writeln(' со стрелками. Для перемещения элемента наведите на него курсор' );

writeln(' и нажмите "enter", элемент переместится в пустой квадрат если ');

writeln(' он находится по-соседству по вертикали или горизонтали. ');

writeln(' для выхода из игры нажмите клавишу "esc" ');

Readln;

end;

3: EndWork:=true;

end;

until EndWork;

Window(1,1,80,25);

TextBackGround(0);

TextColor(15);

ClrScr;

END.

Текст основной программы:

PROGRAM CRT_GAME_FURNITURE;

Uses

Crt, MENU;

Const

x=30;      {координаты для определения     }

y=20;      {текстового окна                }

xx=40;     {у нас будет массив таких      }

yy=30;     {окон                          }

//======================================================

LU=#219;   {идентификаторам присваиваем   }

RU=#191;   {коды символов псевдографики   }

LD=#197;   {с их помощью будем оформлять  }

RD=#215;   { квадраты                      }

H=#196;    {                               }

V=#179;    {                               }

Type

FURNITURE = array [1..2,1..3] of string; {массив для работы с процедурами и функциями. и упрорядоченного вывода квадратов}

//==================================================================//

//в этой процедуре выводится на экран массив обстановки, квадрат

//другого цвета имитирует курсор и указывает какой элемент обстановки

//будет обработан

//==================

procedure DrawRoom(KX, KY: integer;{координаты курсора} Room:Furniture{массив обстановки});

var

i, j, k: integer; {переменные - счетчики циклов}

X1, Y1, XX1, YY1: INTEGER; {ПЕРЕМЕННЫЕ ИСПОЛЬЗУЮТСЯ ДЛЯ КООРДИНАЦИИ КВАДРАТОВ}

begin

clrscr;

X1:=x;

Y1:=y;

XX1:=xx;

YY1:=yy;

for i := 1 to 2 do

begin

for j := 1 to 3 do

begin

if (KX = i) and (KY = j) then  //это квадрат выбранный пользователем

TextBackGround(Green)  //для перестановки в другое место, принажатии 'enter'

else

TextBackGround(Yellow); //устанавливаем цвет невыбранного квадрата.

TextColor(black);         //цвет текста в квадратах

// рисуем квадрат, по условию цикла их будет 6 в виде многомерного массива

window(X1, Y1, XX1, YY1);

ClrScr;

//оформляем его рамкой

write(LU); {верхний левый угол}

//верхняя горизонтальная линия (т.к курсор в данный момент вверху окна

for k := X1+1 to XX1-1 do write (h);

// т.к. курсор находится в правом верхнем углу рисуем верхний правый угол

write(RU);

//вывод вертикальных линий

for k := Y1+1 to YY1-1 do

begin

GOTOXY(1, k-Y1+1); //курсор в левой позиции окна

// левая вертикальная линия

write(V);

GOTOXY(XX1-X1+1, WhereY); // курсор в правой границе

Write(V); //рисуем правую вертикальную линию

end;

write(LD); // левый нижний угол

//нижняя горизонтальная линия

GoToXY(2, YY1-Y1+1);

for k := X1+1 to XX1-1 do write(H);

write(RD); // правый нижний угол

// внутренняя часть окна

window(X1+1, Y1+1, XX1-1, YY1-1);

{вывод предмета мебели соответствующего координатам квадрата}

Write(Room[i, j]);

// координаты нового окна

X1 := X1+10;

XX1 := XX1+10;

end;

//координаты нового окна

Y1 := Y1+10; YY1 := YY1+10; X1 := x; XX1 := xx;

end;

end;

//================================================================================

//процедура перстановки мебели. вызывается нажатием 'enter' сначала прверяем       |

//есть ли в раионе выбранного квадрата пустой квадрат и если есть то ставим      |

// туда выбранный предмет                                                        |

//========================================                                       |

procedure exchange_furniture(KX, KY: integer; //координаты выбранного квадрата

var room: furniture);  //массиив обстановки

var

a : string; //элемент для поиска координат пустого квадрата

i, j: integer; //счетчики циклов.

begin

for i := 1 to 2 do

begin               // циклы перебора всех елементов массива для поиска

for j := 1 to 3 do   // координат пустого квадрата

if (Room[i, j] = '  ') then

begin

if (i+1 = KX) and (j=KY) or (i-1=KX) and (j=KY) then

a := '  ';

if (j+1=KY) and (i=KX) or (j-1=KY) and (i=KX) then

a := '  ';

if (a ='  ') then

begin

Room[i, j] := Room[KX, KY];

Room[KX, KY] :='  ';

end;

end;

end;

end;

//===========================================================================

// функция которая проверяет выполнена ли задача для выигрыша, результат

// функции логическое выражение

//==============================

function Win(Room: Furniture) :boolean;

begin

// по условию задачи, для победы, шкаф и кресло должны поменяться местами

if (Room[1, 3] = 'Кресло') and (Room[2, 3] = 'Шкаф') then

begin

window(20, 22, 29, 28); // определяем текстовое окно

TextBackGround(red);    // цвет фона  (красный)

TextColor(white+blink); // цвет текста  (белые мерцающие символы)

GotoXY(22, 25);         // перемещаем курсор в нужную позицию

writeln('Победа!!!');   // выводим сообщение

TextColor(lightGray);   // восстанавливаем цвет текста

win := true;    // присваиваем "истина"

end

else

Win := false;     // иначе ложь

end;

///////////////////////////////////////////////////////////////////////////////

//основная прграмма которая будет вызывать процедуры и функции и использовать /

// результаты их работы                                                       /

/////////////////////////////////////////////////////////                     /

VAR

Room: Furniture;

KX,KY: integer;

Ch: char;

BEGIN

ClrScr;

WriteMenu;

begin              {если нет то массив заполняется как в задании}

Room[1, 1]:='Стол'; Room[1, 2]:='Стул'; Room[1,3]:='Шкаф';

Room[2, 1]:='cтул'; Room[2, 2]:='  '; Room[2, 3]:='Кресло';

KX:=1; KY:=1;  {устанавливаем начальное положение курсора}

TextBackGround(cyan);

ClrScr;

DrawRoom(KX, KY, Room);

repeat

begin

ch:=ReadKey;

case ch of

#75:       {нажали клавишу "влево"}

begin

if KY <> 1 then

begin

KY:= KY - 1;

DrawRoom(KX, KY, Room);

end;

end;

#77:   {нажали "вправо"}

begin

if KY <> 3 then

begin

KY:=KY + 1;

DrawRoom(KX, KY, Room);

end;

end;

#80:    {нажали "вниз}

begin

if KX <> 2 then

begin

KX:=KX + 1;

DrawRoom(KX, KY, Room);

end;

end;

#72:   {нажали "вверх"}

begin

if KX <> 1 then

begin

KX:=KX - 1;

DrawRoom(KX, KY, Room);

end;

end;

#13:     {нажали "enter" если квадрат не пуст то перемещаем выбранный

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.