• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Графика в Паскале.

Вовчик_11

Ученик
Регистрация
18 Окт 2009
Сообщения
6
Реакции
0
Баллы
0
Графика в Паскале.

Всем привет, помогите плиз составить задачку в паскале на графику. Нужно нарисовать кота..вот тут я че то набросал, но как-то страшно становится=))) :D

program kot;
uses crt, graph;
var gd,gm:integer;
x,y,dx,dy,r,color:integer;

procedure krug(dx,dy,color: integer);
begin
setcolor(6);

circle(x+dx, y+dy,r);
floodfill(x+dx, y+dy, 6);
end;

begin
gd:=detect;
initgraph(gd,gm, 'c:\tp7\bgi');
cleardevice;
x:=250; y:=150; dy:=20; dx:=40; r:=40;
krug (dx,dy,color); dy:=dy+40; color:=red;
x:=250; y:=100; dy:=20; dx:=40; r:=25;
krug (dx,dy,color); dy:=dy+40; color:=red;
x:=270; y:=150; dy:=20; dx:=20; r:=20;
krug (dx,dy,color); dy:=dy+40; color:=yellow;
x:=262; y:=102; dy:=20; dx:=20; r:=8;
krug (dx,dy,color); dy:=dy+40; color:=yellow;
readln;
closegraph;
end.
 
Нарисуй сначала в Paint. Просто слабо представляю себе как должен выглядить этот кот.
 
Уже Рисуем...
 
program kot;
uses crt, graph;
var gd,gm:integer;
x,y,dx,dy,r,color:integer;
begin
gm:=0;
gd:=detect;
initgraph(gd,gm, '');
cleardevice;
setbkcolor(white);
setcolor(8);
{ухо 1}
line(160,60,150,80);
line(160,60,170,80);
line(150,80,170,80);
{ухо 2}
line(200,60,190,80);
line(200,60,210,80);
line(190,80,210,80);
{голова}
circle(180,100,30);
{глаза}
circle(170,90,7);
circle(170,90,3);
circle(190,90,7);
circle(190,90,3);
{нос и усы}
circle(180,110,7);
line(173,110,130,100);line(173,110,130,110);line(173,110,130,120);
line(187,110,230,100);line(187,110,230,110);line(187,110,230,120);
{тело}
circle(180,180,50);
{внутр. круг тела}
circle(180,180,30);
{хвост}
fillellipse(110,205,30,15);
readkey;
closegraph;
end.

Наилучшее, что получилось. Переменные и процедуру не использовал, т.к. не нравится мне их использование при рисовании. а раскрасить котика думаю, сможете сами.
 
А вот мой вариант:

program kot;
uses crt, graph;
var gd,gm:integer;

begin
gd:=detect;
initgraph(gd,gm, 'c:\tp7\bgi');
cleardevice;
SetFillStyle(HatchFill,6);
SetColor(6);
FillEllipse(320,360,80,80);
SetFillStyle(EmptyFill,0);
FillEllipse(320,350,40,60);
SetFillStyle(HatchFill,6);
FillEllipse(320,245,40,40);
FillEllipse(170,400,80,10);
SetFillStyle(SolidFill,white);
FillEllipse(305,245,10,15);
FillEllipse(335,245,10,15);
SetFillStyle(EmptyFill,0);
FillEllipse(305,245,6,10);
FillEllipse(335,245,6,10);
SetColor(white);
SetLineStyle(SolidLn, 0, ThickWidth);
MoveTo(320,255);
LineTo(312,265);
LineTo(328,265);
LineTo(320,255);
LineTo(320,265);
Line(315,265,270,265);
Line(315,265,270,255);
Line(315,265,270,275);
Line(325,265,380,265);
Line(325,265,380,255);
Line(325,265,380,275);
SetColor(6);
MoveTo(280,230);
LineTo(290,180);
LineTo(300,210);
LineTo(280,230);
MoveTo(360,230);
LineTo(350,180);
LineTo(340,210);
LineTo(360,230);
Repeat Until KeyPressed;
ReadKey;
closegraph;
end.

Оба кота, по-моему, страшны, как смертный грех!
 
Последнее редактирование:
Оба кота, по-моему, страшны, как смертный грех!
Действительно, таких ночью с просоня увидишь и офигеешь.
Но ведь паскаль и не создан для профессионального рисования.:)
 
Ладно, покажем народу этот кошмар (левый - от DDS, правый - мой) :D:D:D :
 

Вложения

  • Cat-1.webp
    Cat-1.webp
    4.4 KB · Просмотры: 1,011
  • Cat-2.webp
    Cat-2.webp
    13.2 KB · Просмотры: 2,311
Черный!! :D:D:D :
 
Всем большое спасибо за старание!=))) Но может кто может его нарисовать через процедуры? А то препод сказал, что нужно будет заставить его еще двигаться...вот.
Заранее благодарю!=)
 
И мышей он должен ловить?
 
Помогите пжалуйста доделать!

program kot;
uses crt, graph;
var gd,gm:integer;
x,y,dx,dy,r,x1,x2,y1,y2,color,n,h:integer;
procedure krug(dx,dy,color: integer);
begin
setcolor(color);
circle(x+dx, y+dy,r);
setfillstyle(1,3);
floodfill(x+dx, y+dy, color);
end;

procedure lin(dx,dy,color,h,n:integer); {us}
begin
setcolor(color);
Line(x+dx,y+dy,x+dx+n,y+dy+h);
end;
begin
gd:=detect;
initgraph(gd,gm, 'c:\BP1\bgi');
cleardevice;
x:=250; y:=150; dy:=20; dx:=40; r:=40;
color:=red; krug (dx,dy,color);
y:=y-60; r:=25;
krug (dx,dy,color);
y:=y-10; r:=8; x:=x-10;
color:=red; krug(dx,dy,color);
r:=5;
color:=red; krug(dx,dy,color);


krug (dx,dy,color); r:=8; x:=x+20;
color:=red; krug(dx,dy,color);
krug (dx,dy,color); r:=5;
color:=red; krug(dx,dy,color);


krug (dx,dy,color); r:=12; x:=x+10; y:=y-20;
color:=red; krug(dx,dy,color);

krug (dx,dy,color); r:=12; x:=x-40;
color:=red; krug(dx,dy,color);


y:=90; r:=25;x:=250;
h:=0; n:=40; color:=white;
Lin(dx,dy,color,h,n); {us }
h:=-7; n:=40;
lin(dx,dy,color,h,n);
Lin(dx,dy,color,h,n); {us }
h:=7; n:=40;
lin(dx,dy,color,h,n);


h:=0; n:=-40;
Lin(dx,dy,color,h,n); {us }
h:=-7; n:=-40;
lin(dx,dy,color,h,n);
Lin(dx,dy,color,h,n); {us }
h:=7; n:=-40;
lin(dx,dy,color,h,n);
readln;
closegraph;
end.
 
Помогите пжалуйста доделать!

Уважаемый Вовчик, Вам было предложено два варианта построения кота, но Вы решили действовать по-своему. Похвально. Вот только вряд ли мы сможем Вам чем-нибудь помочь. Сами начали - сами и заканчивайте. Успеха!
Пока же у Вас получился скорее не кот, а мышь Микки-Маус:
 

Вложения

  • AAA01.webp
    AAA01.webp
    2.9 KB · Просмотры: 70
Может кому интересно будет..писал сам от начала до конца.

Код:

program robokop;
uses crt,graph;
const step=0.1;
var
gd,gm,x,y,i,n,m,z,viz,akt,u,t,c:integer; p,a,b:real;
procedure nebo;
var m,n,c,i:integer;
begin
for i:=1 to 500 do begin
n:=random(640); m:=random(480); c:=random(15);
putpixel(n,m,c);
End;
end;

procedure robot(x,y:integer);
begin
circle(x+10,y+10,20); {telo}
circle(x+10,y+45,30);
circle(x+4,y+6,5); {glaza}
circle(x+16,y+6,5);
circle(x+43,y+30,8); {ruki}
circle(x-23,y+30,8);
circle(x+25,y+68,8); {nogi}
circle(x-5,y+68,8);
setfillstyle(1,red);
floodfill(x+1,y+1,white);
arc(x+52,y+30,0,900,85);
Fillellipse(x-30,y+63,25,5); {xvost}
arc(x+10,y+15,15,8,3);
Line(x+2,y-12,x+8,y-5);
Line(x+2,y-12,x-2,y-3);
Line(x+20,y-12,x+16,y-5);
Line(x+20,y-12,x+24,y-2);
line(x+10,y+13,x-18,y+10); {ysi}
line(x+10,y+13,x-18,y+13);
line(x+10,y+13,x-18,y+16);
line(x+10,y+13,x+36,y+10);
line(x+10,y+13,x+36,y+13);
line(x+10,y+13,x+36,y+16);
setfillstyle(1,red);
floodfill(x+1,y+1,white);
{krolik}
circle(x+100,y+10,20);
circle(x+100,y+45,30);
circle(x+94,y+6,3);
circle(x+106,y+6,3);
circle(x+133,y+30,8);
circle(x+67,y+30,8);
FillEllipse(x+120,y+68,15,5);
fillEllipse(x+80,y+68,15,5);
FillEllipse(x+93,y-17,4,13);
FillEllipse(x+107,y-17,4,13);
Arc(x+100,y+15,15,8,3);
line(x+100,y+13,x+79,y+10);
line(x+100,y+13,x+79,y+13);
line(x+100,y+13,x+79,y+16);
line(x+100,y+13,x+121,y+10);
line(x+100,y+13,x+121,y+13);
line(x+100,y+13,x+121,y+16);
end;

procedure robot1(x,y:integer);
begin
circle(x+10,y+10,20); {telo}
circle(x+10,y+45,30);
circle(x+4,y+6,5); {glaza}
circle(x+16,y+6,5);
circle(x+43,y+30,8); {ruki}
circle(x-23,y+30,8);
circle(x+25,y+68,8); {nogi}
circle(x-5,y+68,8);
arc(x+52,y+30,900,0,85);
setfillstyle(1,red);
floodfill(x+1,y+1,white);
Fillellipse(x-30,y+63,25,5); {xvost}
arc(x+10,y+15,15,8,3);
Line(x+2,y-12,x+8,y-5);
Line(x+2,y-12,x-2,y-3);
Line(x+20,y-12,x+16,y-5);
Line(x+20,y-12,x+24,y-2);
line(x+15,y+13,x-18,y+10); {ysi}
line(x+15,y+13,x-18,y+13);
line(x+15,y+13,x-18,y+16);
line(x+15,y+13,x+36,y+10);
line(x+15,y+13,x+36,y+13);
line(x+15,y+13,x+36,y+16);
setfillstyle(1,red);
floodfill(x+1,y+1,white);
{Krolik}
circle(x+100,y+10,20);
circle(x+100,y+45,30);
circle(x+94,y+6,3);
circle(x+106,y+6,3);
circle(x+133,y+30,8);
circle(x+67,y+30,8);
FillEllipse(x+120,y+68,15,5);
fillEllipse(x+80,y+68,15,5);
FillEllipse(x+93,y-17,4,13);
FillEllipse(x+107,y-17,4,13);
Arc(x+100,y+15,15,8,3);
line(x+100,y+13,x+79,y+10);
line(x+100,y+13,x+79,y+13);
line(x+100,y+13,x+79,y+16);
line(x+100,y+13,x+121,y+10);
line(x+100,y+13,x+121,y+13);
line(x+100,y+13,x+121,y+16);
end;

begin
gd:=vga; gm:=vgamed;
initgraph(gd,gm,'c:\tp7\bgi');

x:=300; y:=100;
z:=1; viz:=1; akt:=0; p:=pi; a:=230; b:=110;
for i:=1 to 100 do
begin
u:=x+round(a*cos(p));
t:=y-round(b*sin(p));
setvisualpage(viz); setactivepage(akt);
delay(10000); cleardevice; nebo;
if z=1 then robot(u,t) else robot1(u,t+30); z:=-z;
delay(40000); p:=p+step;
if viz=0 then viz:=1 else viz:=0;
if akt=0 then akt:=1 else akt:=0;
end;
repeat until keypressed;
closegraph;
end.
 
Похвально. Очень хорошо, мне понравилось.
 
Спасибо) Учителю тоже понравилось) Да и самому тоже)
 
Назад
Сверху