Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, 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 и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.