Работа с графикой. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Работа с графикой. |
Atreides |
Сообщение
#1
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Пропустил лекцию по графики в Паскале, не знаю, как решить задачу, помогите!!!
Разработать программу, перемещающую четырехугольник в круге размером Z в правой половине экрана. Спасибо за внимание. -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Уточните пожалуйста, как просиходит перемещение в правой части экрана?
Это четырехугольник перемещается по окружности радиусом Z или фигура четырехугольник вписанный в окружность радиусом Z двиедется по экрану? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atreides |
Сообщение
#3
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Четырехугольник в круге радиусом Z и вся эта конструкция должна находиться в правой части экрана, но не двигаться.
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Altair |
Сообщение
#4
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Цитата перемещающую четырехугольник то есть перемещать по нажатию клавиш что-ли? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atreides |
Сообщение
#5
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Нет, нужно вводить круг диаметром Z, который вводится с клавиатуры пользователем.
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Altair |
Сообщение
#6
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Так, а как-же двигать эту конструкцию? Вы не можете сразу дать полное, однозначное условие?
Сначала Вы сказали: Цитата Разработать программу, перемещающую четырехугольник в круге размером Z в правой половине экрана Потом Вы сказали: Цитата Четырехугольник в круге радиусом Z и вся эта конструкция должна находиться в правой части экрана, но не двигаться. Так должна двигаться контсрукция или не должна? Как я сечас понял: с клавиатуры вводится диаметр. Туда вписывается произвольный четырехугольник (верно?) и вся эта конструкция что должна делать? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atreides |
Сообщение
#7
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Вот именно, круг не двигается. Его диаметр вводится в коде программы. А четырехугольник произвольный, только главное что бы размер был меньше круга, это само собой понятно.
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
GoodWind |
Сообщение
#8
|
Автооответчик Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: 16 |
а четырехугольник двигается внутри круга ?
-------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Altair |
Сообщение
#9
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
ану все ясно... только последнее - многоугольник движется линейно в случайном направлениеи, пока не втсретит окружность, а поомрикошетит, так?
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atreides |
Сообщение
#10
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Круг, не в центре, а в правой верхней части экрана, в нем произвольно движется четырехугольник. Размеры произвольны, меняются пользователем в коде программы.
Цитата ану все ясно... только последнее - многоугольник движется линейно в случайном направлениеи, пока не втсретит окружность, а поомрикошетит, так? Да, что-то вроде отталкивания от стенок круга. Сообщение отредактировано: Atreides - -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Altair |
Сообщение
#11
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
ясно.... попробую сегодня что-то намудрить ...
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atreides |
Сообщение
#12
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Можно сделать не случайное отталкивание, а цикличное повторение перемещения в одно направление.
Если с этой нет, то подскажите, как с этой разобраться? Составить программу определения присутствия символов «Д» после символа «Л» в каждом из 4 введенных слов. создай новую тему с этим вопросом. GoodWind А ты не приставай к человеку... пусть тут написал, что такого? это не преступление, тем более в праивлах нет этого! Олег_Z Сообщение отредактировано: Oleg_Z - -------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Altair |
Сообщение
#13
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Так... первая задача.
С графикой. Очень интересная кстати! Вот код (колировка кирилицы -ДОС) Код {§ ¤ ЁҐ Є®®а¤Ё в Їа®Ё§ў®«м®Ј® ¬®Ј®гЈ®«мЁЄ Џ®бв ўЁ¬ ¬лб«Ґ® з «® Є®®а¤Ё в, Ё гЄ ¦Ґ¬ ўбҐ Є®®а¤Ё вл Їа¬ЁҐа: (0,0) (6,0); ------\ | \ | \ |________\ (0,3) (9,3) } uses crt,graph; Type KoordinatsPoligon = record P1X, {ЇҐаў п в®зЄ } p1Y, p2X, {ўв®а п в®зЄ } p2Y, p3X, {ваҐвЁп в®зЄ } p3Y, p4X, {зҐвўҐав п в®зЄ } p4Y:word; end; Var grDriver : Integer; grMode : Integer; Z : WORD; {RADIUS} A : KoordinatsPoligon; D : word; TX,TY,PX,PY : word; procedure Show4(x,y:word;A:KoordinatsPoligon); begin setcolor(15); with a do begin line(P1X+X,p1y+Y,p2x+X,p2y+Y); line(P2X+X,p2y+Y,p3x+X,p3y+Y); line(P3X+X,p3y+Y,p4x+X,p4y+Y); line(P4X+X,p4y+Y,p1x+X,p1y+Y) end End; procedure Hide4(x,y:word;A:KoordinatsPoligon); begin setcolor(0); with a do begin line(X+P1X,Y+p1y,X+p2x,Y+p2y); line(X+P2X,Y+p2y,X+p3x,Y+p3y); line(X+P3X,Y+p3y,X+p4x,Y+p4y); line(X+P4X,Y+p4y,X+p1x,p1y+y) end End; Begin randomize; write('Enter raduus Z='); readln(Z); With a do {Є ў¤а в} begin P1X:=0; p1Y:=0; p2X:=0; p2Y:=2; p3X:=2; p3Y:=2; p4X:=2; p4Y:=0 end; { зб «м®Ґ ¤ўЁ¦ҐЁп} PX:=2; PY:=3; clrscr; grDriver:=Detect; InitGraph(grDriver, grMode, ''); circle(GetMaxX-z,Z,Z); {аЁб㥬 ®Єа㦮бвм ў Їа ў®¬ ўҐа姥¬ гз бtЄҐ нЄа } TX:=GetMaxX-z; TY:=Z; repeat show4(TX,TY,a); delay(2000); hide4(TX,TY,a); If TRUNC(SQRT(ABS(((640-z)-TX)*((640-z)-tx)+(z-ty)*(z-ty))))>=Z then begin PX:=-PX-2+random(4); PY:=-PY-2+random(4) end; If TRUNC(SQRT(ABS(((640-z)-TX)*((640-z)-tx)+(z-ty)*(z-ty))))>=Z+10 then begin {ЄаЁвЁзҐбвЄ®Ґ гЎҐЈ ЁҐ} TX:=GetMaxX-z; TY:=Z; {бЎа®б} end; TX:=TX+PX; TY:=TY+PY; until keypressed; closegraph; end. Конечно ее можно модернизировать и модернизировать ... вот втрорая программа(строки): Код var AA:array[1..4] of string; A,B,i:byte; pr:boolean; begin For i:=1 to 4 do begin writeln('ўўҐ¤ЁвҐ ',i,' б«®ў®:'); readln(AA[i]); A:=POS('‹',AA[i]); B:=POS('„',AA[i]); if B=A+1 then pr:=true; if pr then begin writeln('Ґбвм ўе®¦¤ҐЁҐ „ Ї®б«Ґ ‹!'); pr:=false; end; end; end. думаю принцип ясен... если есть вопросы, обращайтесь. GoodWind, да пусть пишет здесь! Просто хотелось порядка, а то из топика винегрет получится. GoodWind Atreides, заходите еще! здесь всегда рады помочь! Сообщение отредактировано: GoodWind - -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Atreides |
Сообщение
#14
|
Ветеран Броуновского Движения Группа: Пользователи Сообщений: 281 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
А во второй, команда POS, что делает, ищет текст или заданный символ? И как во второй задаче вписать в код, поиск определенного отрывка, например, МИРЕ, во вводимых словах?
-------------------- Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
|
Altair |
Сообщение
#15
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Цитата команда POS, что делает, ищет текст или заданный символ? Команда POS объявление: function POS(substr,s):byte; Она ищет в строке s, вхождение строки substr. И возвращает номер того элемента строки с которого обнаруженно вхождение, или ноль если нет вхожднения. Пример: pos('abc','abcd') вернет значение 1, т.к. вхождение обнаруженно с 1 символа. pos('a','vfdgab') вернет 5... вместо строки substr эта функция может искать и вхождение символа. Цитата И как во второй задаче вписать в код, поиск определенного отрывка, например, МИРЕ, во вводимых словах? Очень просто, все конечно реализуется с помощью функции POS. Смотрите: в этой строчке кода: readln(AA[i]); вводится очередное слово (ну там массив из строк, длинной 4... это ввод очередного элемента массива). значит после ввода слова надо проверить вхождение: If POS('МИРЕ',aa[i])<>0 then writeln('Вхождение обнаруженно'); Т.е. мы проверяем условие и если есть вхождение какого-то слова, то что-то делаем (в примере выводим строку: "вхождение обнаруженно") -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 11.01.2025 22:40 |