Нарисовать ночное небо, через которое периодически будет пролетать НЛО. Выход с программы по нажатию клавиши - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Нарисовать ночное небо, через которое периодически будет пролетать НЛО. Выход с программы по нажатию клавиши. Код у меня есть, но когда НЛО пролетает за ним остается след и я не знаю как это убрать. Есть функция Redraw, но я не понял как её использовать. Помогите убрать след от полёта) Вот код:
Листинг программы
  1. Program Zipku;
  2. uses graphABC,crt;
  3. var i,k: integer;
  4. begin
  5. setpencolor(clwhite);
  6. setwindowsize(900,600);
  7. clearwindow(clblack);
  8. for i:=1 to 100 do //цикл для расположения звёзд на небе.
  9. begin
  10. setbrushcolor(clwhite);
  11. circle(random(900),random(900),3);
  12. end;
  13. setbrushcolor(clgray);
  14. circle(50,200,50);
  15. circle(50,200,100);
  16. for k:=1 to 90 do //цикл для движения нло.
  17. begin
  18. clrscr;
  19. circle(50+k*6,200,100);
  20. circle(50+k*6,200,50);
  21. sleep(200);
  22. end;
  23. end.

Решение задачи: «Нарисовать ночное небо, через которое периодически будет пролетать НЛО. Выход с программы по нажатию клавиши»

textual
Листинг программы
  1. uses graphABC,events;//с модулем Crt сильно мигает при настройке графического окна
  2. type mas=array[1..2,1..100] of integer;
  3. var f:boolean;
  4. procedure KeyPress(key:char);
  5. begin
  6. if key<>#0 then f:=false;
  7. end;
  8. procedure nebo(a:mas);
  9. var i:integer;
  10. begin
  11. setbrushcolor(clwhite);
  12. for i:=1 to 100 do //цикл для расположения звёзд на небе.
  13. circle(a[1,i],a[2,i],3);
  14. end;
  15. procedure nlo(x,y:integer);
  16. begin
  17. setpencolor(clwhite);
  18. setbrushcolor(clgray);
  19. circle(x,y,100);
  20. circle(x,y,50);
  21. end;
  22. var a:mas;
  23.     i,x,y: integer;
  24. begin
  25. setwindowsize(900,600);
  26. centerwindow;
  27. clearwindow(clblack);
  28. for i:=1 to 100 do
  29.  begin
  30.   a[1,i]:=random(windowwidth);
  31.   a[2,i]:=random(windowheight);
  32.  end;
  33. f:=true;
  34. onkeypress:=KeyPress;
  35. lockdrawing;
  36. x:=100;
  37. y:=windowheight div 2;
  38. repeat
  39. clearwindow(clblack);
  40. nebo(a);
  41. nlo(x,y);
  42. sleep(50);
  43. x:=x+5;
  44. if x>=windowwidth+100 then x:=100;
  45. redraw;
  46. until not f;
  47. end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • f: boolean;
    • a: mas;
    • i, x, y: integer;
  2. Установлены размеры окна и его расположение в центре экрана.
  3. Очищено окно.
  4. Заполнены массивы a[1,i] и a[2,i] случайными значениями.
  5. Установлен обработчик события нажатия клавиши.
  6. Начался цикл рисования, который повторяется до тех пор, пока не будет нажата клавиша.
  7. В начале каждого цикла рисуется ночное небо с звездами и НЛО.
  8. После каждой итерации цикла меняется положение НЛО, сдвигаясь вправо на 5 пикселей.
  9. Если положение НЛО выходит за пределы окна, оно возвращается к начальному положению (x=100).
  10. После каждой итерации цикла программа спит на 50 миллисекунд, чтобы создать эффект мигания НЛО.
  11. По завершении цикла программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы