Початок

Олівець(1,0,255,0);

Пензель(1,0,255,0);

Прямокутник(0,0,250,250);

Xp:=100; Yp:=100;

Приціл(Xp,Yp);

Повторювати

Повідомлення(k,i,j);

Якщо k=1 то

Вибір i із

37 : Приціл(Xp-5,Yp); { стрілка вліво }

38 : Приціл(Xp,Yp-5); { стрілка вгору }

39 : Приціл(Xp+5,Yp); { стрілка вправо}

40 : Приціл(Xp,Yp+5); { стрілка вниз }

кінець

докиНе (k=1) та (i=27) { клавіша Esc }

кінець.

Таким чином, обидва об’єкти реалізовані, але окремо. Тепер об’єднаємо їх в одній програмі. Зрозуміло, що в розділі описів треба перелічити всі змінні та помістити обидві процедури.

Виникає ще одна проблема. Приціл повинен весь час перебувати на передньому плані. Якщо мішень пролітає через точку, в якій перебуває приціл, то вона не повинна затирати його. Щоб зробити так, поставимо перед оператором Пауза в процедурі МішеньЛетить перевірку. У випадку, коли мішень витерла частину прицілу, перемалюємо його. Відповідний оператор матиме такий вигляд:

Якщо (abs(Xm-Xp)<10) та (abs(Ym-Yp)<10) то

Приціл(Xp,Yp);

Поставимо першим оператором циклу керування прицілом оператор повторення польоту мішені:

Повторювати МішеньЛетить

докиНе Подія;

Нехай "постріл" здійснюється клавішею «пропуск», код символу якої 32. Додамо в оператор вибору опрацювання натискання клавіші пробілу. Ми не повинні перевіряти, чи в момент пострілу мішень та приціл мали однакові координати, бо тоді попасти в мішень буде практично неможливо. Досить щоб відстань між ними була менша за 10 пікселів. Наведемо цей фрагмент програми:

32 : { натиснений пробіл }

Якщо(Abs(Xm-Xp)<10) та (Abs(Ym-Yp)<10) то