![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-tania- |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
Задача такая: на паскале пользователь вводит координаты четырех углов ромба. Нужно нарисовать ромб, в центре маленькую окружность, и по кнопкам вверх, вниз, вправо, влево ромб с окружностью должны соответственно двигаться. Задачка простая, но я не могу ее никак написать: ромб я нарисовала, рассчитала координаты центра окружности, акогда начала рисовать саму окружность
circle(xcentra,ycentra,r), то паскаль мне пишет ошибку type mismatch. xcentra,ycentra у меня real, но как округлять здесь числа я понятия не имею. Помогите пожалуйста! |
Tan |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
round(x) - округление до целого
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
-tania- |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
Я и так пробовала, пишут ту же самую ошибку.
|
mamont001 |
![]()
Сообщение
#4
|
![]() Вожак стада ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Реальное имя: кирилл Репутация: ![]() ![]() ![]() |
Можеш привести код программы?
-------------------- Админ наш,
Иже еси на серверах! Да святится имя Твое, Да приидет Unix Твой, Да будет воля Твоя, Как на земле , так и на небе. Пинг наш насущный дай нам на сей день; И прости нам счета наши, как и мы оставляем их должникам нашим; И не введи нас во искушение виндовое, Но избавь нас от лукавого Билли. И да пребудет с нами сила твоя великая, Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь! |
-tania- |
![]()
Сообщение
#5
|
|||
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
uses graph,crt;
|
|||
Tan |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Цитата Задача такая: на паскале пользователь вводит координаты четырех углов ромба Вероятно речь идёт о вершинах ромба. В таком случае не забывай что пользователь может ввести координаты фигуры, которая не будет ромбом. Сообщение отредактировано: Tan - 3.04.2007 20:14 -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
-tania- |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
Здесь она выдает мне ошибку, дальше вообще не знаю как.
Добавлено через 2 мин. Tan, и как в этом случае писать? Тогда вообще непонятно, как эту окружность туда впихнуть. |
Tan |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
circle (round(xc),round(yc),10). А ты по пифагору проверь, все ли стороны равны. Немного неправильно выразился, то есть используй теорему пифагора чтобы найти длины сторон фигуры и потом сравни их.
Сообщение отредактировано: Tan - 3.04.2007 20:29 -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
-tania- |
![]()
Сообщение
#9
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
окружность нарисовать получилось, а как тогда двигать целую фигуру, а не одну точку?
|
klem4 |
![]()
Сообщение
#10
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Есть несколько вариантов как можно перемещать ихображение оп экрану
- отрисоывать каждый раз заново, относительно некой базовой точки - отрисовать изображение 1 раз, захватить его с помощью GetImage, а за тем выводить где угодно с помощью PutImage Воспользуйся поиском, решалось много задач на движение фигур, шариков всяких ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Tan |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Притивно : идти по всем точкам экрана и проверять их цвет, если это цвет нарисованной фигуры, то двигаем пиксель в зависимости от клавиши, при этом ставя цвет точки на которую "напоролись" цветом экрана . То есть когда пройдёшь по всем точкам, они будут подвинуты. Но это не лучший вариант.
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
mamont001 |
![]()
Сообщение
#12
|
![]() Вожак стада ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Реальное имя: кирилл Репутация: ![]() ![]() ![]() |
Начнём из далека-считывание клавиши:
Добавлено через 3 мин. 2 Tan Цитата ... это не самый лучший вариант... Это не вариант это такой геморой ,что сложнее сложно было придумать... 2 klem4 Цитата ...getimage... Я сомневаюсь, что этот человек знает указатели.... Сообщение отредактировано: mamont001 - 3.04.2007 21:07 -------------------- Админ наш,
Иже еси на серверах! Да святится имя Твое, Да приидет Unix Твой, Да будет воля Твоя, Как на земле , так и на небе. Пинг наш насущный дай нам на сей день; И прости нам счета наши, как и мы оставляем их должникам нашим; И не введи нас во искушение виндовое, Но избавь нас от лукавого Билли. И да пребудет с нами сила твоя великая, Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь! |
-tania- |
![]()
Сообщение
#13
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
[tag=]uses graph,crt;
var d,m:integer;x1,x2,x3,x4,y1,y2,y3,y4:integer; xc,yc:real; c:char; begin clrscr; initgraph(d,m,''); readln(x1); readln(x2); readln(x3); readln(x4); readln(y1); readln(y2); readln(y3); readln(y4); repeat line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x4,y4); line(x4,y4,x1,y1); xc:=(x4+x2)/2; yc:=(y1+y3)/2; circle(round(xc),round(yc),10); gotoxy(x1,y1); c:=readkey; case c of 'd':if(x3+1)<640 then x1:=x1+1; 's':if(y2+1)<480 then y1:=y1+1; 'a':if (x4-1)>0 then x1:=x1-1; 'w':if(y1-1)>0 then y2:=y2-1; until c=chr(27); end. Добавлено через 1 мин. он мне подчеркивает где until и выдает какую-то ошибку |
Tan |
![]()
Сообщение
#14
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
end после case надо
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
-tania- |
![]()
Сообщение
#15
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
Я сейчас написала. Он мне двигает только точки которые в if, больше ничего не делает, только "растягивает" фигуру, а мне нужно чтобы она просто вся перерисовывалась.
|
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
Цитата Я сомневаюсь, что этот человек знает указатели.... А я сомневаюсь, что ты знаешь, что такое GetImage в таком случае, ибо для ее использования совершенно не нужны указатели... Буфер нужен, а вот указатели - совсем нет... |
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 18:17 |