Делал лабы, решил побаловаться! Можно ли как-то прописать движение зрачков котейки в пределах глазниц по 2-м плоскостям)?
Вот мой пример, в одной плоскости:
uses GraphABC;
var x,y,kx,v: integer;
b: boolean;
procedure Fon;
begin
clearwindow;
// Тело
Line(220, 100, 200, 380);
Line(420, 100, 440, 380);
Line(200, 380, 440, 380);
Arc(320, 290, 140, 120, 60);
// Уши
Line(220, 100, 250, 170);
Line(420, 100, 390, 170);
// Глаза
SetBrushColor(Color.White);
Circle(290, 220, 30);
Circle(350, 220, 30);
// Нос
SetBrushColor(Color.Pink);
Circle(320, 240, 10);
// Рот
Line(320, 250, 320, 290);
Arc(320, 230, 60, -130, -50);
// Усы
Line(239, 270, 310, 245);
Line(239, 280, 310, 245);
Line(239, 290, 310, 245);
Line(329, 245, 400, 270);
Line(329, 245, 400, 280);
Line(329, 245, 400, 290);
// Лапы
Arc(250, 390, 30, 160, 20);
Arc(390, 390, 30, 160, 20);
Line(240, 380, 240, 370);
Line(250, 380, 250, 370);
Line(260, 380, 260, 370);
Line(380, 380, 380, 370);
Line(390, 380, 390, 370);
Line(400, 380, 400, 370);
end;
procedure Shar1(var xx,kkx: integer);
begin
if (xx<270) or (xx>310) then kkx:=kkx*(-1);
xx:=xx+kkx;
setbrushcolor(Color.Black);
circle(xx,220,5);
circle(xx+60,220,5);
end;
begin
lockdrawing;
v:=random(2);
case v of
0: kx:=1;
1: kx:=-1;
end;
x:=290;
y:=220;
repeat
Fon;
Shar1(x,kx);
sleep(1);
redraw;
b:=((x<45) and (y<45)) or ((x<45) and (y>355))
or ((x>455) and (y<45)) or ((x>455) and (y>355));
until b;
end.
Другие языки программирования и технологии
Pascal ABC! Анимация движения точки в пределах окружности!
uses GraphABC;
var b: boolean;
procedure Fon;
begin
clearwindow;
{радиус действия курсора, можно удалить, если все понимаешь}
SetBrushColor(Color.White);
setpencolor (clred);
Circle(320, 220, 150);
{конец радиуса действия курсора, только в зоне красной окружности кот следит за мышью}
{если мышь не движется - кот засыпает}
// Тело
setpencolor (clblack);
Line(220, 100, 200, 380);
Line(420, 100, 440, 380);
Line(200, 380, 440, 380);
Arc(320, 290, 140, 120, 60);
// Уши
Line(220, 100, 250, 170);
Line(420, 100, 390, 170);
// Глаза
SetBrushColor(Color.White);
Circle(290, 220, 30);
Circle(350, 220, 30);
// Нос
SetBrushColor(Color.Pink);
Circle(320, 240, 10);
// Рот
Line(320, 250, 320, 290);
Arc(320, 230, 60, -130, -50);
// Усы
Line(239, 270, 310, 245);
Line(239, 280, 310, 245);
Line(239, 290, 310, 245);
Line(329, 245, 400, 270);
Line(329, 245, 400, 280);
Line(329, 245, 400, 290);
// Лапы
Arc(250, 390, 30, 160, 20);
Arc(390, 390, 30, 160, 20);
Line(240, 380, 240, 370);
Line(250, 380, 250, 370);
Line(260, 380, 260, 370);
Line(380, 380, 380, 370);
Line(390, 380, 390, 370);
Line(400, 380, 400, 370);
end;
procedure MouseMove(x,y,mb: integer);
begin
if mb=0 then LineTo(x,y);
if sqr(x-320) + sqr(y-220) <= sqr(150) then
begin
setbrushcolor(Color.Black);
circle(290 + trunc((x-320) /5) ,220+trunc((y-220)/5),5);
circle(350 + trunc((x-320) /5),220 + trunc((y -220)/5),5);
end
else
begin
setbrushcolor(Color.Black);
circle(290,220,5);
circle(350,220,5);
end;
end;
begin
setwindowtitle ('СПЯЩИЙ КОТ-ПРИТВОРЩИК, КАРАУЛЯЩИЙ МЫШЬ ! ');
lockdrawing;
repeat
Fon;
OnMouseMove := MouseMove;
sleep(100);
redraw;
until b;
end.
var b: boolean;
procedure Fon;
begin
clearwindow;
{радиус действия курсора, можно удалить, если все понимаешь}
SetBrushColor(Color.White);
setpencolor (clred);
Circle(320, 220, 150);
{конец радиуса действия курсора, только в зоне красной окружности кот следит за мышью}
{если мышь не движется - кот засыпает}
// Тело
setpencolor (clblack);
Line(220, 100, 200, 380);
Line(420, 100, 440, 380);
Line(200, 380, 440, 380);
Arc(320, 290, 140, 120, 60);
// Уши
Line(220, 100, 250, 170);
Line(420, 100, 390, 170);
// Глаза
SetBrushColor(Color.White);
Circle(290, 220, 30);
Circle(350, 220, 30);
// Нос
SetBrushColor(Color.Pink);
Circle(320, 240, 10);
// Рот
Line(320, 250, 320, 290);
Arc(320, 230, 60, -130, -50);
// Усы
Line(239, 270, 310, 245);
Line(239, 280, 310, 245);
Line(239, 290, 310, 245);
Line(329, 245, 400, 270);
Line(329, 245, 400, 280);
Line(329, 245, 400, 290);
// Лапы
Arc(250, 390, 30, 160, 20);
Arc(390, 390, 30, 160, 20);
Line(240, 380, 240, 370);
Line(250, 380, 250, 370);
Line(260, 380, 260, 370);
Line(380, 380, 380, 370);
Line(390, 380, 390, 370);
Line(400, 380, 400, 370);
end;
procedure MouseMove(x,y,mb: integer);
begin
if mb=0 then LineTo(x,y);
if sqr(x-320) + sqr(y-220) <= sqr(150) then
begin
setbrushcolor(Color.Black);
circle(290 + trunc((x-320) /5) ,220+trunc((y-220)/5),5);
circle(350 + trunc((x-320) /5),220 + trunc((y -220)/5),5);
end
else
begin
setbrushcolor(Color.Black);
circle(290,220,5);
circle(350,220,5);
end;
end;
begin
setwindowtitle ('СПЯЩИЙ КОТ-ПРИТВОРЩИК, КАРАУЛЯЩИЙ МЫШЬ ! ');
lockdrawing;
repeat
Fon;
OnMouseMove := MouseMove;
sleep(100);
redraw;
until b;
end.
Похожие вопросы
- Проблема с программой в Pascal ABC,Встречено ';',а ожидалось ':'. Если менять, то вылетает ещё ошибка с if
- Программа в pascal abc
- Pascal abc и Pascal одно и тоже? Или разные языки программирования?
- Как в Pascal ABC на модуле Graph ABC провести вертикальную ось симметрии.
- Как в Pascal ABC с помощью модуля graph abc нарисовать это
- В чём отличия Pascal ABC, Free Pascal, Lazarus, Delphi?
- Напишите пожалуйста программы для Pascal ABC:
- Помогите пожалуйста решить задачу в Pascal ABC
- помогите с задачей по Pascal abc!!!
- Помогите написать простые программы и задачи в Pascal ABC. Алгоритмы ветвления. Информатика. Програмирование.
Program2.pas(73) : Ошибка времени выполнения: Область растрового изображения уже заблокирована.
Вы в курсе, что это значит?
1 - сопровождается потемнением глазниц...