![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Dmi3_j |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Изучаю по книжке ООП, программа должна двигать точку, а она ее просто отображает:
Код Uses Graph, CRT; Type GraphObj = object X,Y: Integer; Color: Word; Constructor Init(aX,aY:Integer;AColor:Word); Procedure Draw(aColor:Word); Virtual; Procedure Show; Procedure Hide; Procedure Move(dX,dY:Integer); end; Constructor GraphObj.Init; begin X:=aX; Y:=aY; end; Procedure GraphObj.Draw; begin end; Procedure GraphObj.Show; begin Draw(Color); end; Procedure GraphObj.Hide; begin Draw(GetBkColor); end; Procedure GraphObj.Move; begin Hide; X:=X+dX; Y:=Y+dY; Show end; Type Point = object(GraphObj) Procedure Draw(aColor:Word); Virtual; end; Procedure Point.Draw; begin PutPixel(520,290,white); end; Var d,r,q:Integer; ln:Line; begin D:=Detect; InitGraph(d,r,''); Ln.Init(200,200,white); Ln.Draw(red); Repeat ln.Move(-10,10); Until q>100; End. |
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Во первых, стнанная у тебя основная чать, начальное значение q не известно и в цикле repeat оно не меняется, хотя цил по этой переменой +
Procedure Point.Draw; У тебя же постоянно получается что точка выводится в одном и том-же месте ... Сообщение отредактировано: klem4 - 22.01.2006 12:16 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
![]() Procedure Point.Draw; Это во-первых... Во-вторых, и самое главное, ты забыл определить конструктор для Point, а ведь этот объект содержит виртуальные методы, так что конструктор ему просто необходим для инициализации VMT... И что такое за тип Line? Ты уж если приводишь исходник, то приводи полностью... То, что бы привел - даже не скомпилируется, не говоря уже о правильной работе... |
Dmi3_j |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код {.......} Point = object(GraphObj) Constructor Init(aX,aY:Integer;aColor:Word); Procedure Draw(aColor:Word); Virtual; end; Constructor Point.Init; begin Inherited Init(aX,aY,aColor); X:=aX; Y:=aY; end; Procedure Point.Draw; begin PutPixel(X,Y,Color); end; Var d,r,q:Integer; Pt:Point; begin D:=Detect; InitGraph(d,r,''); q:=1; Pt.Init(200,200,red); Pt.Draw(red); Repeat Pt.Move(-10,10);q:=q+1;Delay(100); Until q>100; End. Точка не отображается. Сообщение отредактировано: Dmi3_j - 22.01.2006 13:10 |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Не знаю, как у тебя, у меня вот так все прекрасно отображается:
Uses Graph, CRT; Я добавил рамку, чтобы ты видел, инициализировался у тебя вообще граф. режим, или нет, и чтобы удобнее было следить за точкой - она начинает двигаться только после того, как нажмешь на Enter... Сам сдвиг я тоже уменьшил, т.к. при сдвиге -10 у тебя после 20-го шага точка уже за пределами экрана... |
Dmi3_j |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо огромное!!!!!!!!
Сообщение отредактировано: Dmi3_j - 22.01.2006 14:20 |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 13:51 |