Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Олівець(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) то
Дата публикования: 2014-11-04; Прочитано: 437 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!