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

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

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

> Процедуры и функции модуля Graph
Гость_Вадим
сообщение 14.11.2004 20:49
Сообщение #1


Гость






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

Код
[code]uses
crt,graph;
var
t,k,p,i,p0,p1:integer;
x,y:longint;
dx,dt:real;
Driver,Mode:integer;
Flag:boolean;
s:string;
procedure korabl(dx:integer);
begin
line(dx,130,dx+60,130);
line(dx,130,dx+15,150);
line(dx+15,150,dx+45,150);
line(dx+45,150,dx+60,130);
line(dx+20,130,dx+30,110);
line(dx+30,110,dx+40,130);
end;
procedure Pushka(p:integer);
begin
line(p,479,p+30,450);
line(p+30,450,p+60,479);
end;
procedure Torp(dt,p:integer);
begin
p:=p+29;
rectangle(p,479-dt,p+3,479-(dt+15));
end;
procedure ch(c:char);
begin
if c=#27 then halt(1);
if c=#77 then p:=p+2;
if c=#75 then p:=p-2;
if c='+' then t:=t+10;
if c='-' then t:=t-10;
if c=#13 then
begin
 flag:=true;
 p1:=p;
end;
if p<0   then p:=0;
if p>639 then p:=639;
if t<50  then t:=50;
if t>500 then t:=500;
setcolor(0);
outtextxy(20,20,s);
setcolor(5);
str(t,s);
outtextxy(20,20,s);
end;
begin
Driver:=VGA;
Mode:=VGAHi;
InitGraph(Driver,Mode,'C:\BP\BGI');
randomize;
settextstyle(4,0,5);
t:=300;
y:=0;
k:=random(64)+64;
x:=0;
p:=320;
p0:=p;
dx:=0;
dt:=0;
s:='300';
outtextxy(20,20,s);
setcolor(5);
Pushka(p);
repeat
 setcolor(0);
 Korabl( trunc(dx));
 dx:=x*k/100;
 setcolor(5);
 Korabl( trunc(dx));
 inc(x);
 if Flag then
 begin
  setcolor(0);
  Torp( trunc(dt),p1);
  dt:=y*t/100;
  setcolor(5);
  Torp( trunc(dt),p1);
  inc(y);
 end;
 for i:=1 to 50 do
 begin
  delay(1);
  if keypressed then
   ch(readkey);
 end;
 if p0<>p then
 begin
  setcolor(0);
  Pushka(p0);
  setcolor(5);
  Pushka(p);
  p0:=p;
 end;
 if 479-(dt+15)<=150 then
 begin
  if ((p1+29>=dx+15) and (p1+29<=dx+45)) then
  begin
   for i:=1 to 7 do
   begin
    setcolor(i);
    circle(p1+29,150,i*10);
   end;
   outtextxy(200,200,'B-----U-----M');
   readkey;
   halt(1);
  end
  else
  begin
   outtextxy(200,200,'M I S S');
   readkey;
   halt(1);
  end;
 end;
until trunc(dx)>=580;

readkey;
end.


Код надо заключать в теги !!!. GoodWind

Сообщение отредактировано: GoodWind - 14.11.2004 20:53
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Гость_Вадим   Процедуры и функции модуля Graph   14.11.2004 20:49
virt   uses crt,graph; var t,k,p,i,p0,p1:integer; ...   15.11.2004 12:03


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

 

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