Нарисовать ночное небо, через которое периодически будет пролетать НЛО. Выход с программы по нажатию клавиши - PascalABC.NET
Формулировка задачи:
Нарисовать ночное небо, через которое периодически будет пролетать НЛО. Выход с программы по нажатию клавиши.
Код у меня есть, но когда НЛО пролетает за ним остается след и я не знаю как это убрать. Есть функция Redraw, но я не понял как её использовать. Помогите убрать след от полёта)
Вот код:
Листинг программы
- Program Zipku;
- uses graphABC,crt;
- var i,k: integer;
- begin
- setpencolor(clwhite);
- setwindowsize(900,600);
- clearwindow(clblack);
- for i:=1 to 100 do //цикл для расположения звёзд на небе.
- begin
- setbrushcolor(clwhite);
- circle(random(900),random(900),3);
- end;
- setbrushcolor(clgray);
- circle(50,200,50);
- circle(50,200,100);
- for k:=1 to 90 do //цикл для движения нло.
- begin
- clrscr;
- circle(50+k*6,200,100);
- circle(50+k*6,200,50);
- sleep(200);
- end;
- end.
Решение задачи: «Нарисовать ночное небо, через которое периодически будет пролетать НЛО. Выход с программы по нажатию клавиши»
textual
Листинг программы
- uses graphABC,events;//с модулем Crt сильно мигает при настройке графического окна
- type mas=array[1..2,1..100] of integer;
- var f:boolean;
- procedure KeyPress(key:char);
- begin
- if key<>#0 then f:=false;
- end;
- procedure nebo(a:mas);
- var i:integer;
- begin
- setbrushcolor(clwhite);
- for i:=1 to 100 do //цикл для расположения звёзд на небе.
- circle(a[1,i],a[2,i],3);
- end;
- procedure nlo(x,y:integer);
- begin
- setpencolor(clwhite);
- setbrushcolor(clgray);
- circle(x,y,100);
- circle(x,y,50);
- end;
- var a:mas;
- i,x,y: integer;
- begin
- setwindowsize(900,600);
- centerwindow;
- clearwindow(clblack);
- for i:=1 to 100 do
- begin
- a[1,i]:=random(windowwidth);
- a[2,i]:=random(windowheight);
- end;
- f:=true;
- onkeypress:=KeyPress;
- lockdrawing;
- x:=100;
- y:=windowheight div 2;
- repeat
- clearwindow(clblack);
- nebo(a);
- nlo(x,y);
- sleep(50);
- x:=x+5;
- if x>=windowwidth+100 then x:=100;
- redraw;
- until not f;
- end.
Объяснение кода листинга программы
- Объявлены переменные:
- f: boolean;
- a: mas;
- i, x, y: integer;
- Установлены размеры окна и его расположение в центре экрана.
- Очищено окно.
- Заполнены массивы a[1,i] и a[2,i] случайными значениями.
- Установлен обработчик события нажатия клавиши.
- Начался цикл рисования, который повторяется до тех пор, пока не будет нажата клавиша.
- В начале каждого цикла рисуется ночное небо с звездами и НЛО.
- После каждой итерации цикла меняется положение НЛО, сдвигаясь вправо на 5 пикселей.
- Если положение НЛО выходит за пределы окна, оно возвращается к начальному положению (x=100).
- После каждой итерации цикла программа
спит
на 50 миллисекунд, чтобы создать эффект мигания НЛО. - По завершении цикла программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д