procedure Tform1Timer(Sender: TObject); //timer vizov peremennoy begin shar; end; end;
procedure TForm1.shape2ContextPopup(Sender: TObject; MousePos: TPoint; //sozdanie upravlenia paneley var Handled: Boolean); begin shape2.Top:=mouse.cursorPos.Y -Form1.ClientOrigin.Y; end;
end.
Компилятор вежливо интересуется, почему в одной из твоих функций просто написано "шар;" внутри:
ЦитатаRolexOsmiy ()
Код
procedure Tform1Timer(Sender: TObject); //timer vizov peremennoy begin shar; end; end;
Мне тоже интересно. Что ты хотел этим сказать? Возможно, эту строку стоит убрать? Ещё есть подозрения, что повторная строка "end;" после неё тоже лишняя.
Сообщение отредактировал YellowAfterlife - Вторник, 01 Декабря 2015, 17:38
Мне тоже интересно. Что ты хотел этим сказать? Возможно, эту строку стоит убрать? Ещё есть подозрения, что повторная строка "end;" после неё тоже лишняя.
видимо я как то неправильно вызываю процедуру. Но пустой begin end не прокатит) шар не полетит)
RolexOsmiy, компилятор Вам честно намекает, что из этого места shar "не виден". Посмотрите внимательно, к какой области видимости относится "shar" (и один ли он?). Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
компилятор Вам честно намекает, что из этого места shar "не виден". Посмотрите внимательно, к какой области видимости относится "shar" (и один ли он?).
погуглил не чего не нашел.
Возможно так ? Form1.shar;
Сообщение отредактировал RolexOsmiy - Вторник, 01 Декабря 2015, 18:11
объяснение простое - когда ты пишешь "TForm1." это означает зона видимости - в пространстве класса TForm1! А это значит, что все методы и поля этого класса будут видны, в том числе и метод shar! а как у тебя написано - это значит зона видимости - вне пространства класса... свободная процедура просто! Из нее метод класса (без указания его экземпляра) - не виден!! ну и объявление функции Timer должно быть в публишед разделе (там где у тебя "procedure FormCreate(Sender: TObject);") и плюс как сказал YellowAfterlife, лишний енд! ) Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Вторник, 01 Декабря 2015, 18:38
RolexOsmiy, есть два выхода: берете учебник по Паскалю <пардон, забыл сразу уточнить: разумеется, изначального Вирта> и честно читаете про области видимости, понимаете суть и потом разбираетесь в ООП-извратах "по смыслу"; или смотрите, как пользуются ООП другие, тупо запоминая прецеденты. Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
Сообщение отредактировал Gudleifr - Вторник, 01 Декабря 2015, 19:29
KamiRonin, не двигается шар. Странно я все пофиксил . Дальше стал дописывать все работает (ошибку свою с видимостью усвоил и поправляю теперь). Но шар все так же стоит на месте а не движется.
Добавлено (01 декабря 2015, 22:50) --------------------------------------------- Хеееелп люди. Вот код, почему у меня шар не двигается?
procedure Tform1Timer(Sender: TObject); var overlay: TRect; begin Form1.shar; if InterSectRect(overlay, Form1.shape2.BoundsRect, Form1.shape1.BoundsRect) then begin VelX:=-VelX-random(5); VelY:=-VelY-random(5); end; end;
Добавлено (02 декабря 2015, 15:54) --------------------------------------------- Делал по гайду создание пинг понга, шар стоит на месте где и был. Как заставить его двигаться не понимаю
Сообщение отредактировал RolexOsmiy - Вторник, 01 Декабря 2015, 22:04
RolexOsmiy, видимо, ни у кого нет под рукой нужного обезьянника, поэтому Вам остается одно: разбить проект на части и начать отладку, отвечая на "дурацкие" вопросы: таймер таймерит? форма формируется? рисователь рисует? координаты пересчитываются?
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
var Form1: TForm1; PosX, Posy, VelX, Vely: single; overlay:TRect;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Randomize; Posx:=120; PosY:=100; VelX:=5; VelY:=5; end;
procedure TForm1.shar; begin
PosX := PosX+VelX; PosY := PosY+VelY;
if PosX > ClientWidth - Shape1.Width then begin
PosX:= ClientWidth - Shape1.Width;
VelX:= - VelX; end else if PosX < 0 then begin POsX := 0; VelX := - VelX; end;
if PosY > ClientHeight - Shape1.Width then begin POsY:= ClientHeight - Shape1.Width; VelY:= - VelY; end else if PosY < 0 then begin POsY:= 0; VelY:= - VelY; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin shar;
if IntersectRect(Overlay, Shape2.BoundsRect, Shape1.BoundsRect) then begin VelX:=-VelX-Random(1); VelY:=-VelY-Random(1); end;
if IntersectRect(Overlay, Shape3.BoundsRect, Shape1.BoundsRect) then begin VelX:=-VelX-Random(1); VelY:=-VelY-Random(1); end; Shape2.Top:=Mouse.CursorPos.Y -Form1.ClientOrigin.Y; end;
procedure TForm1.Timer2Timer(Sender: TObject); begin if Shape3.Top > ClientHeight -Shape3.Height -40 then Shape3.Top:=Shape3.Top else begin if Shape1.Top > Shape3.Top then shape3.Top:=shape1.Top + Shape3.Width; end; if Shape1.Top < Shape3.Top then Shape3.Top:=Shape1.Top -shape1.Width; end;