Написать программу, чтобы звездочка выходила из нижнего левого угла экрана, летела под углом 45 градусов до верхней границы экрана, потом отскакивала от верхней границы опять же под 45 градусов и летела вниз-вправо.потом она, наверное, удариться о боковую стенку, от неё опять под 45 градусов.и чтобы бегала до тех пор, пока не попадет в какой-нибудь угол — Pascal(Паскаль)



uses crt,graph;
type Tpoint=record
x,y:integer;
end;
procedure Zvezda(x1,y1,cv:integer);
var a,i:integer;
p:array[1..11] of Tpoint;
begin
a:=-18;
for i:=1 to 10 do
begin
if i mod 2=0 then
begin
p[i].x:=x1+round(20*cos(a*pi/180));
p[i].y:=y1-round(20*sin(a*pi/180));
end
else
begin
p[i].x:=x1+round(10*cos(a*pi/180));
p[i].y:=y1-round(10*sin(a*pi/180));
end;
a:=a+36;
end;
p[11].x:=p[1].x;
p[11].y:=p[1].y;
MoveTo(p[1].x,p[1].y);
SetColor(cv);
for i:=1 to 11 do
LineTo(p[i].x,p[i].y);
end;
var gd,gm,x,y,dx,dy:integer;
begin
clrscr;
InitGraph(gd,gm,'');
x:=40;y:=440;{началльное положение звезды}
dx:=5;dy:=-5;{шаг по оси Х и У}
repeat
Zvezda(x,y,12);
delay(50);
Zvezda(x,y,0);
x:=x+dx;y:=y+dy;{начинаем движение, при достижении краем звезды края экрана, меняется направление по оси, перпендикулярной стенке}
if y=20 then
dy:=-dyelse if x=620 then
dx:=-dx
else if y=460 then
dy:=-dy
else if x=20 then
dx:=-dx;
{[FONT=Times New Roman]при попадании в зону угла, заканчиваем движение}
until ((x=20)and(y=460))or((x=20)and(y=20))or((x=640)and(y=20))or((x=640)and(y=460));
Sound(880);{подаем звуковой сигнал, тон можете поменять}
delay(500);{слушаем пол-секунды}
NoSound; {выключаем}
CloseGraph;
end.

Вариант 2

uses crt;
var x,y,dx,dy:integer;
begin
clrscr;
x:=1;y:=25;dx:=1;dy:=-1;
repeat
GotoXY(x, y);
Write('*');
Delay(50);
GotoXY(X, Y);
Write(' ');
x:=x+dx;y:=y+dy;
if y<=1 then
dy:=-dy
else if x>=80 then
dx:=-dx
else if y>=25 then
dy:=-dy
else if x<=1 then
dx:=-dx;
until ((x=80)and(y=25))or((x=1)and(y=1))or((x=80)and(y=1))
or((x=80)and(y=25));
Sound(880);
delay(500);
NoSound;
end.

Leave a Comment

78 − 69 =