|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.12.2009, 13:38 | #1 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
графика в паскале
парни помогите есть програмка, в ней движение окружности по окружности, и мне нужно переделать её что было движение прямоугольника по прямоугольнику
program LABA4; uses graph, crt; type mir = object driver, mode: integer; procedure create; procedure destroy; end; procedure mir.create; begin driver:= vga; mode:= vgahi; InitGraph(driver,mode,'C:\'); end; procedure mir.destroy; begin CloseGraph; end; type coord = object x, y: integer; constructor Init(ix,iy: integer); destructor Delete; function GetX: integer; function GetY: integer; procedure SetX(cx: integer); procedure SetY(cy: integer); end; procedure coord.SetX(cx: integer); begin x:= cx; end; procedure coord.SetY(cy: integer); begin y:= cy; end; function coord.GetX: integer; begin GetX:= x; end; function coord.GetY: integer; begin GetY:= y; end; destructor coord.Delete; begin x:= 0; y:= 0; end; constructor coord.Init(ix,iy: integer); begin x:= ix; y:= iy; end; type pt = object (coord) visible: boolean; color: integer; constructor PtInit(c,ix,iy:integer;v:boolean); procedure Draw; procedure Show; virtual; procedure Hide; virtual; end; constructor Pt.PtInit(c,ix,iy: integer;v:boolean); begin color:= c; x:= ix; y:= iy; visible:= v; end; procedure Pt.Show; begin visible:= true; putpixel(x,y,color); end; procedure Pt.Hide; begin visible:= false; putpixel(x,y,getBkColor); end; procedure Pt.Draw; begin if visible = true then putpixel(x,y,color); end; type circ = object (Pt) rad: integer; procedure move(dx,dy: integer); procedure show; virtual; procedure hide; virtual; constructor initialize(ix,iy,ic,irad:integer;iv :boolean); end; procedure circ.show; begin visible:= true; end; procedure circ.hide; begin visible:= false; end; constructor circ.initialize(ix,iy,ic,irad:integ er;iv:boolean); begin x:= ix; y:= iy; color:= ic; rad:= irad; visible:= iv; end; procedure circ.move(dx,dy: integer); begin x:= dx; y:= dy; end; type drawtype = object procedure drawing(cx: circ; c: integer); end; procedure drawtype.drawing(cx: circ; c: integer); begin setcolor(c); if cx.visible then circle(cx.x,cx.y,cx.rad); end; type sysobj = object sdelay: integer; procedure SetDelay(id: integer); function GetDelay: integer; procedure sysdelay; function ButtonPressed: boolean; procedure IncNum(var i: integer;n: integer); procedure SetIntValue(var i: integer; n: integer); end; procedure sysobj.SetIntValue(var i: integer; n: integer); begin i:=n; end; procedure sysobj.IncNum(var i: integer;n: integer); begin i:= i + n; end; function sysobj.ButtonPressed: boolean; begin if keypressed then buttonpressed:= true else buttonpressed:= false; end; procedure sysobj.SetDelay(id: integer); begin sdelay:= id; end; function sysobj.GetDelay: integer; begin GetDelay:= sdelay; end; procedure sysobj.sysdelay; begin delay(sdelay); end; type pcirc = ^circ; var world: mir; gm, gd, n, i, x, y: integer; c1,c2: pcirc; dr1: drawtype; sysob: sysobj; begin world.create; sysob.setintvalue(n,200); c1:= new(pcirc,initialize(0,0,8,20,true) ); c2:= new(pcirc,initialize(320,240,8,178, false)); sysob.setintvalue(i,0); sysob.setdelay(10000); while 1 = 1 do begin c1^.move(trunc(c2^.x+(c2^.rad+22)*c os(6.28*(i/n))),trunc(c2^.y-(c2^.rad+22)*sin(6.28*(i/n)))); dr1.drawing(c1^,9); dr1.drawing(c2^,9); sysob.sysdelay; dr1.drawing(c1^,0); sysob.incnum(i,1); if(sysob.ButtonPressed) then break; end; world.destroy; end. |
20.12.2009, 14:57 | #2 |
Ищу работу
Форумчанин
Регистрация: 16.02.2007
Сообщений: 269
|
неохота искать паскаль) написал на делфи, думаю сможешь переделать. там ничего сложного
Код:
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
|
20.12.2009, 15:07 | #3 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
не не смогу переделать, я даже не знаю чё такое делфи
|
20.12.2009, 17:04 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Александр, а что такое Pascal Вы знаете?
я полностью согласен, движение по кругу переделывать смысла нет. Вам предложили правильный, простой алгоритм, решающий Вашу задачу. перепишите его под Pascal и всё... Canvas.Rectangle(vlx-dx,i-dy,vlx+dx,i+dy); это нарисовать прямоугольник, задаются координаты x,y левого верхнего угла и правого нижнего. sleep(10) — это то же самое, что delay(10) в Pascal |
20.12.2009, 17:21 | #5 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
да я и паскаль толком не знаю, просто я не программист,у меня есть програмирование для общего развития оно идёт один семестр, поэтому мне тяжеловато переделать!!
|
20.12.2009, 17:29 | #6 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
а как вот это на паскале написать Canvas.Rectangle(vlx-dx,i-dy,vlx+dx,i+dy);
|
20.12.2009, 17:37 | #7 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
вот я тут переделал, но он мне выдаёт ошибку в конце посмотрите пожалуйста правельно ли я переделал?
program LABA4; uses graph, crt; type mir = object driver, mode: integer; procedure create; procedure destroy; end; procedure mir.create; begin driver:= vga; mode:= vgahi; InitGraph(driver,mode,'C:\'); end; procedure mir.destroy; begin CloseGraph; end; type coord = object x, y: integer; constructor Init(ix,iy: integer); destructor Delete; function GetX: integer; function GetY: integer; procedure SetX(cx: integer); procedure SetY(cy: integer); end; procedure coord.SetX(cx: integer); begin x:= cx; end; procedure coord.SetY(cy: integer); begin y:= cy; end; function coord.GetX: integer; begin GetX:= x; end; function coord.GetY: integer; begin GetY:= y; end; destructor coord.Delete; begin x:= 0; y:= 0; end; constructor coord.Init(ix,iy: integer); begin x:= ix; y:= iy; end; type pt = object (coord) visible: boolean; color: integer; constructor PtInit(c,ix,iy:integer;v:boolean); procedure Draw; procedure Show; virtual; procedure Hide; virtual; end; constructor Pt.PtInit(c,ix,iy: integer;v:boolean); begin color:= c; x:= ix; y:= iy; visible:= v; end; procedure Pt.Show; begin visible:= true; putpixel(x,y,color); end; procedure Pt.Hide; begin visible:= false; putpixel(x,y,getBkColor); end; procedure Pt.Draw; begin if visible = true then putpixel(x,y,color); end; type rect = object (Pt) y1: integer; procedure move(dx,dy: integer); procedure show; virtual; procedure hide; virtual; constructor initialize(ix1,iy1,ix2,iy2:integer; iv:boolean); end; procedure rect.show; begin visible:= true; end; procedure rect.hide; begin visible:= false; end; constructor rect.initialize(ix1,iy1,ix2,iy2:int eger;iv:boolean); begin ix1:= ix1; iy1:= iy1; ix2:= ix2; iy2:= iy2; visible:= iv; end; procedure rect.move(dx,dy: integer); begin x:= dx; y:= dy; end; type drawtype = object procedure drawing(cx: rect; c: integer); end; procedure drawtype.drawing(cx: rect; c: integer); begin setcolor(c); if cx.visible then bar(cx.x,cx.y,cx.x,cx.y); end; type sysobj = object sdelay: integer; procedure SetDelay(id: integer); function GetDelay: integer; procedure sysdelay; function ButtonPressed: boolean; procedure IncNum(var i: integer;n: integer); procedure SetIntValue(var i: integer; n: integer); end; procedure sysobj.SetIntValue(var i: integer; n: integer); begin i:=n; end; procedure sysobj.IncNum(var i: integer;n: integer); begin i:= i + n; end; function sysobj.ButtonPressed: boolean; begin if keypressed then buttonpressed:= true else buttonpressed:= false; end; procedure sysobj.SetDelay(id: integer); begin sdelay:= id; end; function sysobj.GetDelay: integer; begin GetDelay:= sdelay; end; procedure Button1Click(Sender: TObject); var dx,dy,i,vlx,vly,npx,npy:integer; begin vlx:=50;//ëåâàÿ âåðõíÿÿ êîîðäèíàòà âíåøíåãî ïðÿìîóãîëüíèêà vly:=50; npx:=450;//íèæíÿÿ ïðàâàÿ npy:=250; dx:=30;//øèðèíà ìåëêîãî êâàäðàòà dy:=20;//âûñîòà for i:=vlx to npx do begin bar(i-dx,vly-dy,i+dx,vly+dy); delay(10); end; for i:=vly to npy do begin bar(npx-dx,i-dy,npx+dx,i+dy); delay(10); end; for i:=npx downto vlx do begin bar(i-dx,npy-dy,i+dx,npy+dy); delay(10); end; for i:=npy downto vly do begin bar(vlx-dx,i-dy,vlx+dx,i+dy); delay(10); end; end; end. |
20.12.2009, 18:22 | #8 |
Ищу работу
Форумчанин
Регистрация: 16.02.2007
Сообщений: 269
|
ну почти... осталось пару строк удалить) но то что вставил до "end." это уже хорошо.
там готовый алгоритм. инициализируй граф режим и пиши все это дело без процедуры
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
|
20.12.2009, 18:33 | #9 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
т.е просто убрать последнюю процедуру??
и как инициализировать граф режим? |
20.12.2009, 18:50 | #10 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 15
|
ни чё не понимаю, вот так вот???
program LABA4; uses graph, crt; type mir = object driver, mode: integer; procedure create; procedure destroy; end; procedure mir.create; begin driver:= vga; mode:= vgahi; InitGraph(driver,mode,'C:\'); end; procedure mir.destroy; begin CloseGraph; end; type coord = object x, y: integer; constructor Init(ix,iy: integer); destructor Delete; function GetX: integer; function GetY: integer; procedure SetX(cx: integer); procedure SetY(cy: integer); end; procedure coord.SetX(cx: integer); begin x:= cx; end; procedure coord.SetY(cy: integer); begin y:= cy; end; function coord.GetX: integer; begin GetX:= x; end; function coord.GetY: integer; begin GetY:= y; end; destructor coord.Delete; begin x:= 0; y:= 0; end; constructor coord.Init(ix,iy: integer); begin x:= ix; y:= iy; end; type pt = object (coord) visible: boolean; color: integer; constructor PtInit(c,ix,iy:integer;v:boolean); procedure Draw; procedure Show; virtual; procedure Hide; virtual; end; constructor Pt.PtInit(c,ix,iy: integer;v:boolean); begin color:= c; x:= ix; y:= iy; visible:= v; end; procedure Pt.Show; begin visible:= true; putpixel(x,y,color); end; procedure Pt.Hide; begin visible:= false; putpixel(x,y,getBkColor); end; procedure Pt.Draw; begin if visible = true then putpixel(x,y,color); end; type rect = object (Pt) y1: integer; procedure move(dx,dy: integer); procedure show; virtual; procedure hide; virtual; constructor initialize(ix1,iy1,ix2,iy2:integer; iv:boolean); end; procedure rect.show; begin visible:= true; end; procedure rect.hide; begin visible:= false; end; constructor rect.initialize(ix1,iy1,ix2,iy2:int eger;iv:boolean); begin ix1:= ix1; iy1:= iy1; ix2:= ix2; iy2:= iy2; visible:= iv; end; procedure rect.move(dx,dy: integer); begin x:= dx; y:= dy; end; type drawtype = object procedure drawing(cx: rect; c: integer); end; procedure drawtype.drawing(cx: rect; c: integer); begin setcolor(c); if cx.visible then bar(cx.x,cx.y,cx.x,cx.y); end; type sysobj = object sdelay: integer; procedure SetDelay(id: integer); function GetDelay: integer; procedure sysdelay; function ButtonPressed: boolean; procedure IncNum(var i: integer;n: integer); procedure SetIntValue(var i: integer; n: integer); end; procedure sysobj.SetIntValue(var i: integer; n: integer); begin i:=n; end; procedure sysobj.IncNum(var i: integer;n: integer); begin i:= i + n; end; function sysobj.ButtonPressed: boolean; begin if keypressed then buttonpressed:= true else buttonpressed:= false; end; procedure sysobj.SetDelay(id: integer); begin sdelay:= id; end; function sysobj.GetDelay: integer; begin GetDelay:= sdelay; end; procedure sysobj.sysdelay; var dx,dy,i,vlx,vly,npx,npy:integer; begin vlx:=50;//ëåâàÿ âåðõíÿÿ êîîðäèíàòà âíåøíåãî ïðÿìîóãîëüíèêà vly:=50; npx:=450;//íèæíÿÿ ïðàâàÿ npy:=250; dx:=30;//øèðèíà ìåëêîãî êâàäðàòà dy:=20;//âûñîòà for i:=vlx to npx do begin bar(i-dx,vly-dy,i+dx,vly+dy); delay(10); end; for i:=vly to npy do begin bar(npx-dx,i-dy,npx+dx,i+dy); delay(10); end; for i:=npx downto vlx do begin bar(i-dx,npy-dy,i+dx,npy+dy); delay(10); end; for i:=npy downto vly do begin bar(vlx-dx,i-dy,vlx+dx,i+dy); delay(10); end; end; end. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Графика на паскале | Dark-cz | Помощь студентам | 0 | 13.12.2009 19:24 |
Графика в Паскале | Igomax | Помощь студентам | 0 | 04.06.2009 20:50 |
графика в паскале | Kravec | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 16.04.2009 17:27 |
Графика в Паскале | Win't | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 16.12.2007 21:54 |