ООП и графический редактор |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
ООП и графический редактор |
___ALex___ |
Сообщение
#21
|
Бывалый Группа: Пользователи Сообщений: 282 Репутация: 0 |
файл EGAVGA.OBJ нужен
|
trminator |
Сообщение
#22
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Вот что вышло у меня (неделю не было то Интернета, то компьютера )
Код unit Image; interface uses stack; const MaxStack = 100; type PImage = ^TImage; TImage = object(TStack) CurrColor : integer; {procedure WriteToFile (var filename : string);} procedure ReadFromFile(const filename : string); procedure draw; procedure DrawLast; procedure undo; constructor init; end; implementation uses graph; constructor TImage.init; begin inherited init; CurrColor := white; end; procedure TImage.ReadFromFile(const filename: string); var f: file of Integer; begin assign(f, filename); reset(f); while not EOF(f) do begin inc(top); read(f, stk[top]) end; end; procedure TImage.draw; var currOp: byte; begin currOp:=1; while CurrOp < top do begin if stk[CurrOp]= -1 then begin {-1 = PutPixel} PutPixel(stk[CurrOp+1], stk[CurrOp+2], CurrColor); CurrOp:=CurrOp+3 end else if stk[CurrOp] = -2 then begin {-2 = Circle} Circle(stk[CurrOp+1], stk[CurrOp+2], stk[CurrOp+3]); CurrOp:=CurrOp+4 end else if stk[CurrOp] = -3 then begin CurrColor:=stk[CurrOp+1]; SetColor(CurrColor); CurrOp:=CurrOp+2 end; end; end; procedure TImage.DrawLast; var CurrOp: integer; begin CurrOp:=top; while stk[CurrOp]>0 do dec(CurrOp); if stk[CurrOp]= -1 then {-1 = PutPixel} PutPixel(stk[CurrOp+1], stk[CurrOp+2], CurrColor) else if stk[CurrOp] = -2 then {-2 = Circle} Circle(stk[CurrOp+1], stk[CurrOp+2], stk[CurrOp+3]); end; procedure TImage.undo; begin while stk[top]>0 do dec(top); dec(top); end; end. Только он вроде иногда путает координаты - x и y, когда достает их из стека. ЗЫ: Интерфейс стека: Код unit Stack; interface type TStack = object stk : array[1..100] of Integer; top : integer; procedure push(x: integer); function pop : integer; function GetTopElem : integer; constructor init; end; -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
trminator |
Сообщение
#23
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
А сама программа в простейшем случае выглядит примерно так:
Код uses image, screen, crt, graph; var img1 : PImage; scr : PScreen; i, n : integer; code : string[20]; tmpstr : string; begin new(img1,init); new(scr, init); repeat ReadLn(code); gotoxy(1,1); if code = 'circle' then begin img1^.push(-2); for i:=1 to 3 do begin Read(n); img1^.push(n); end; img1^.DrawLast; end else if code = 'pixel' then begin img1^.push(-1); for i:=1 to 2 do begin Read(n); img1^.push(n); end; img1^.DrawLast; end else if code = 'undo' then begin img1^.undo; scr^.clear; img1^.draw end else if code = 'open' then begin Read(tmpstr); img1^.ReadFromFile(tmpstr); end else if code = 'color' then begin img1^.push(-3); Read(n); img1^.push(n); end; until code = 'quit'; dispose(scr, done); end. Пока это все рисует только точки и круги -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
trminator |
Сообщение
#24
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Ау! Есть тут кто живой? Куда делся автор этой темы ???
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
demon9999 |
Сообщение
#25
|
Новичок Группа: Пользователи Сообщений: 42 Пол: Мужской Репутация: 0 |
Прошу прощения за молчание - были проблемы с бесплатным интернетом.
Судя по потере и без того неважной активности, можно подводить итоги. Спасибо всем принявшим участие, но на первые два вопроса я ответы так и не получил. Что касается исходников, то для предложенного Sand'ом нужен некий файл egavga.obj (я даже разрешение такое вижу в первый раз), а произведение Trminator'а я не смог попробовать, так как не знаю как сделать файл *.tpu ??? Самостоятельно за это время я тоже ничего нового не изобрел А в сентябре сдавать :'( Все это наводит на грустные мысли. Модераторы, ... ... ..., кончайте свои разборки, примите посильное участие!!! -------------------- Все у нас получится!
|
___ALex___ |
Сообщение
#26
|
Бывалый Группа: Пользователи Сообщений: 282 Репутация: 0 |
сначала надо выбрать путь решения потом кодить
так какой путь ты выбрал? |
demon9999 |
Сообщение
#27
|
Новичок Группа: Пользователи Сообщений: 42 Пол: Мужской Репутация: 0 |
Alex'у
Все свои пожелания я уже высказал. Твоя идея с квадратиками конечно хороща, но где ты здесь видишь ООП? А основная цель - как раз ООП. -------------------- Все у нас получится!
|
Sir |
Сообщение
#28
|
Пионер Группа: Пользователи Сообщений: 95 Пол: Мужской Репутация: 1 |
tpu - это скомпиленный модуль
egavga.bgi стандартно подключай (bgi а не obj - так норм-но сойдёт) |
___ALex___ |
Сообщение
#29
|
Бывалый Группа: Пользователи Сообщений: 282 Репутация: 0 |
да объекты куда-нибудь засунули бы для галки если бы они так не потребовались...
|
demon9999 |
Сообщение
#30
|
Новичок Группа: Пользователи Сообщений: 42 Пол: Мужской Репутация: 0 |
tpu - это скомпиленный модуль
egavga.bgi стандартно подключай (bgi а не obj - так норм-но сойдёт) А поподробнее нельзя? Я пытался скомпилировать модули, но он выдает ошибку (неправильное окончание). А стандартно подключить - это как. Alex! Ну что ты как дите! Препод у меня не лох, а стандартный программер - с нечесанными власами и полной неспособностью что-нибудь объяснить по-русски. Он такую фишку просечет сразу и заставит переделывать. -------------------- Все у нас получится!
|
___ALex___ |
Сообщение
#31
|
Бывалый Группа: Пользователи Сообщений: 282 Репутация: 0 |
там будут объекты не бойся
хотя бы объект - стрелка ;D |
trminator |
Сообщение
#32
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
По поводу подключения модулей:
Ругаться он должен только на stack - там же только интерфейс модуля, т.е. что там хоть такое есть, без его реализации. Я считал, что стек ты сделаешь сам, если будет проблема - обращайся, но ИМХО сделать ты его должен сам И еще кидаю модуль screen - совсем про него забыл... Код unit Screen; interface uses graph; type PScreen = ^TScreen; TScreen = object maxx, maxy : integer; constructor init; destructor done; procedure clear; end; implementation constructor TScreen.init; var d, m:integer; begin d:=0; initgraph(d, m, 'c:bpbgi'); {Кстати, так подключается графика} {тут я не указываю явно, каким именно bgi-шником пользоваться, но он автоматически подключит тот самый egavga.bgi, используется автоопределение найболее подходящего драйвера (в строчке d:=0)} maxx:=GetMaxX; maxy:=GetMaxY end; destructor TScreen.done; begin CloseGraph end; procedure TScreen.clear; begin ClearDevice; end; begin end. -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
___ALex___ |
Сообщение
#33
|
Бывалый Группа: Пользователи Сообщений: 282 Репутация: 0 |
чё за бред объявлять конструкторы/деструкторы там где нет вирт-ых
и(или) дин-их методов? ;D |
trminator |
Сообщение
#34
|
Четыре квадратика Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Что значит - бред? Я это делал чтобы графика автоматом подключалась, когда я инициализирую scr в главной программе (new(scr, init)).
ЗЫ Извиняюсь если что не так - на Паскале в ООП я не супер. -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
pascal65536 |
Сообщение
#35
|
Пионер Группа: Пользователи Сообщений: 62 Пол: Мужской Репутация: 1 |
Хм. А я наверное и не в состоянии объяснить как я это написал. Давно это было. :(
|
buy prednisone online no perscri |
Сообщение
#36
|
Гость |
Why Is Propecia So Expensive
|
Текстовая версия | 28.04.2024 21:22 |