Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
682.73 Кб
Скачать

Экзаменационный вопрос № 42. Программа для построения динамического объекта

Задание. Используя графические команды языка Turbo Pascal, составить программу для построения игрового поля с расстановкой и динамическим перемещением шашек в соответствии с позицией, а также предусмотреть реализацию указанных ходов.

Исходные данные.

Исходная расстановка

Ходы

Белые: 2, 6; 7, 5

Чёрные: 1, 5; 6, 6

Белые G5 бьют черные F6

Чёрные A5 бьют белые B6

Код программы.

PROGRAM primer2; {заголовок программы}

uses crt,graph; {подключение модулей graph.tpu и crt.tpu}

var

gd,gm,h,i,j,p,h1,h2,k:integer; {объявление целочисленных переменных типа integer}

begin

gd:=detect; {тип графического адаптера определяется автоматически}

gm:=1;

initgraph(gd,gm,''); {инициализация графического режима}

rectangle(20,20,getmaxy–20,getmaxy–20); {рисование квадратной области}

h:=(getmaxy–40) div 8; {определение длины ребра одного квадрата на

игральной доске}

for i:=1 to 7 do

begin

line(i*h+20,20,i*h+20,getmaxy–20);{рисование вертикальных линий}

line(20,i*h+20,getmaxy–20,i*h+20);{рисование горизонтальных линий}

end;

for i:=1 to 8 do

begin

outtextxy(i*h–10,10,chr(64+i)); {расстановка букв по горизонтальной оси}

outtextxy(10,i*h–10,chr(48+i)); {расстановка цифр по вертикальной оси}

end;

{цикл закраски квадратов на игральной доске}

for i:=1 to 8 do

for j:=1 to 8 do

begin

if (i+j) mod 2<>0 then p:=7 else p:=0;

setfillstyle(1,p);

floodfill(20+i*h–2,20+j*h–2,15);

end;

h1:=h div 2;

{Рисование белой шашки}

setcolor(1);

circle(2*h+20–h1,6*h+20–h1,h1–4);

setfillstyle(1,15);

floodfill(2*h+20–h1,6*h+20–h1,1);

{Рисование черной шашки}

circle(1*h+20–h1,5*h+20–h1,h1–4);

setfillstyle(1,6);

floodfill(1*h+20–h1,5*h+20–h1,1);

{Рисование белой шашки}

circle(7*h+20–h1,5*h+20–h1,h1–4);

setfillstyle(1,15);

floodfill(7*h+20–h1,5*h+20–h1,1);

{Рисование черной шашки}

circle(6*h+20–h1,6*h+20–h1,h1–4);

setfillstyle(1,6);

floodfill(6*h+20–h1,6*h+20–h1,1);

repeat

{пустой цикл выполняется до тех пор, пока не будет нажата клавиша «1»}

until (keypressed) and (readkey='1');

{Удаление белой шашки}

setcolor(0);

circle(7*h+20–h1,5*h+20–h1,h1–4);

setfillstyle(1,0);

floodfill(7*h+20–h1,5*h+20–h1,0);

{Рисование белой шашки}

setcolor(1);

circle(5*h+20–h1,7*h+20–h1,h1–4);

setfillstyle(1,15);

floodfill(5*h+20–h1,7*h+20–h1,1);

{Удаление черной шашки}

setcolor(0);

circle(6*h+20–h1,6*h+20–h1,h1–4);

setfillstyle(1,0);

floodfill(6*h+20–h1,6*h+20–h1,0);

repeat

{пустой цикл выполняется до тех пор, пока не будет нажата клавиша «2»}

until (keypressed)and(readkey='2');

{Удаление белой шашки}

setcolor(0);

circle(2*h+20–h1,6*h+20–h1,h1–4);

setfillstyle(1,0);

floodfill(2*h+20–h1,6*h+20–h1,0);

{Рисование черной шашки}

setcolor(1);

circle(3*h+20-h1,7*h+20-h1,h1-4);

setfillstyle(1,6);

floodfill(3*h+20–h1,7*h+20–h1,1);

{Удаление черной шашки }

setcolor(0);

circle(1*h+20–h1,5*h+20–h1,h1–4);

setfillstyle(1,0);

floodfill(1*h+20–h1,5*h+20–h1,0);

repeat

{пустой цикл выполняется до тех пор, пока не будет нажата клавиша «3»}

until (keypressed) and (readkey='3');

readln;

end.