
- •Экзаменационный вопрос №1 базовые понятия алгоритмизации
- •Экзаменационный вопрос №2 средства изображения алгоритмов
- •Экзаменационный вопрос № 3 базовые канонические структуры алгоритмов
- •Экзаменационный вопрос № 16. Общая характеристика языка программирования паскаль
- •Экзаменационный вопрос № 17. Программирование ввода-вывода данных различного типа
- •Экзаменационный вопрос № 18. Программирование линейных вычислительных процессов
- •Экзаменационный вопрос № 19. Программирование разветвляющихся вычислительных процессов с использованием if -then –else
- •Экзаменационный вопрос № 20. Программирование разветвляющихся вычислительных процессов с использованием оператора case
- •Экзаменационный вопрос № 21.
- •Экзаменационный вопрос № 22. Программа вычисления корней квадратного уравнения
- •Экзаменационный вопрос № 23. Программирование разветвляющихся структур с использованием в цикле операторов repeat – until
- •Экзаменационный вопрос № 24. Программа вычисления суммы бесконечного ряда
- •Экзаменационный вопрос № 25. Программирование циклических вычислительных структур
- •Экзаменационный вопрос № 26. Программирование с использованием цикла с параметрами
- •Экзаменационный вопрос № 27. Программирование циклов с постусловием
- •Экзаменационный вопрос № 28. Программирование с использованием подпрограмм
- •Экзаменационный вопрос № 29. Алгоритмы нахождения корней уравнений
- •Экзаменационный вопрос № 30. Алгоритмы численного интегрирования
- •Экзаменационный вопрос № 31. Программа вычисления определенного интеграла методом прямоугольников
- •Экзаменационный вопрос № 32. Программа вычисления определенного интеграла методом трапеций
- •Экзаменационный вопрос № 33. Программа вычисления определенного интеграла методом симпсона
- •Экзаменационный вопрос № 34. Программа вычисления корней алгебраического уравнения методом половинного деления
- •Экзаменационный вопрос № 35. Программа вычисления корней алгебраического уравнения методом ньютона
- •Экзаменационный вопрос № 36. Программа вычисления корней алгебраического уравнения методом хорд
- •Экзаменационный вопрос № 37. Программирование операций в одномерных массивах
- •Экзаменационный вопрос № 38. Программирование операций в двумерных массивах (На примере задания 1)
- •Экзаменационный вопрос № 39. Программирование операций в двумерных массивах (На примере задания 2)
- •Экзаменационный вопрос № 40. Построение графических изображений
- •Экзаменационный вопрос № 41. Программа для построения объекта с циклическим изменением цвета
- •Экзаменационный вопрос № 42. Программа для построения динамического объекта
Экзаменационный вопрос № 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.