IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> стрельба по самолету из зенитки
Legat1177
сообщение 6.12.2010 15:02
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Всем добрый день!

В задаче нужно попасть по движущемуся самолету из пушки.
выстрел происходит при нажатии клавиши со стрелкой вверх.
пейзаж, и циклически движущийся самолет и выстрел у меня получилось написать.
но не совсем так как хотелось бы.
причина в том что как только снаряд долетает до конца экрана пропадает и самолет и выстрелы больше невозможно сделать. да и программа перестает отвечать на заданные клавиши.

вот такой код я написал:
uses crt,graph;
const g=9.81;
var device,mode:integer;
    x_sam,y_sam:integer; {samolet}
    s,h,t,v,a:Real;
    x,y,z:integer; {yadro,vzriv}
    x_tree,y_tree,i:integer; {derevo}
    kl:Char;{upravlenie klsviaturoi}
Procedure tree; forward;
Procedure Landscape;
          begin
          {nebo}
          setfillstyle(1,cyan);
          bar(0,0,650,400);
          {zemlya}
          setfillstyle(1,green);
          bar(0,400,650,500);
          {sun}
          setcolor(yellow);
          setfillstyle(1,yellow);
          circle(580,40,30);
          floodfill(580,40,yellow);
          {dereva}
          x_tree:=100; y_tree:=400;
          tree;
          x_tree:=550; y_tree:=380;
          tree;
          end;
Procedure tree;
          begin
          setcolor(white); {krona}
          ellipse(x_tree,y_tree,0,360,15,30);
          setfillstyle(1,lightgreen);
          floodfill(x_tree,y_tree,white);
          setfillstyle(1,brown); {stvol}
          bar(x_tree-3,y_tree+30,x_tree+3,y_tree+60);
          end;
Procedure samolet;
          begin
          setcolor(red);
          setfillstyle(1,red);
          {telo samoleta}
          bar(x_sam,y_sam,x_sam+60,y_sam+20);
          {right krilo}
          line(x_sam+50,y_sam+20,x_sam+10,y_sam+50);
          line(x_sam+10,y_sam+50,x_sam+10,y_sam+20);
          floodfill(x_sam+30,y_sam+30,red);
          {left krilo}
          line(x_sam+50,y_sam,x_sam+10,y_sam-30);
          line(x_sam+10,y_sam-30,x_sam+10,y_sam);
          floodfill(x_sam+30,y_sam-10,red);
          delay(6000);
          setcolor(cyan);
          setfillstyle(1,cyan);
          {telo samoleta}
          bar(x_sam,y_sam,x_sam+60,y_sam+20);
          {right krilo}
          line(x_sam+50,y_sam+20,x_sam+10,y_sam+50);
          line(x_sam+10,y_sam+50,x_sam+10,y_sam+20);
          floodfill(x_sam+30,y_sam+30,cyan);
          {left krilo}
          line(x_sam+50,y_sam,x_sam+10,y_sam-30);
          line(x_sam+10,y_sam-30,x_sam+10,y_sam);
          floodfill(x_sam+30,y_sam-10,cyan);
          end;
Procedure pushka; {zenitka}
          begin
          setcolor(white); {obvod}
          ellipse(300,410,0,360,30,10);
          setfillstyle(8,brown);
          floodfill(300,410,white);
          end;
Procedure yadro;
          begin
          setcolor(white);
          setfillstyle(1,white);
          circle(x,y,20);
          floodfill(x,y,white);
          delay(6000);
          setcolor(cyan);
          setfillstyle(1,cyan);
          circle(x,y,20);
          floodfill(x,y,cyan);
          delay(100);
          y:=y-10;
          end;

BEGIN
     device:=0;
     initgraph(device,mode,'c:\tp71\bgi');
     directvideo:=false;
     clrscr;
     landscape;
     pushka;
     x:=300;
     y:=380;
     

repeat
     x_sam:=0;
     y_sam:=100;
     repeat
     x_sam:=x_sam+5;
     samolet;
     while keypressed do kl:=readkey;
      if kl=#072 then repeat
                     yadro;
                     until y>=0;
     delay(300);
     until x_sam>=650;
     until y_sam=0;


     readln;
     closegraph;
End.

как сделать так чтоб когда снаряд долетает до конца экрана самолет продолжал двигаться и можно было бы делать еще выстрелы? (текст где возможно ошибка пометил красным)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 30.07.2025 22:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"