![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Spinne |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задали мне такую интересную задачку: нарисовать некий обьект, который двигается по экрану с помощью кнопок клавиатуры и еще одну прогу для движения обьекта мышкой. Если чесно, то мне в голову ничего не приходит. ООООчень надеюсь на помощь.
-------------------- coitus interruptus
|
![]() ![]() |
pascal65536 |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 62 Пол: Мужской Репутация: ![]() ![]() ![]() |
http://www.pascal.hop.ru/sourses.htm
Посмотри пример ООП, там объекты движутся сами по себе, а в графическом редакторе работает клавиатура, и каждая ломаная - объект. Можно их дублировать, двигать, уничтожать, менять цвет. Каждую точку ломаной тоже можно дублировать, двигать и уничтожать. Если понравится, можно "прикрутить" мышку. |
samsa |
![]()
Сообщение
#3
|
Гость ![]() |
Двигай например так:
Код var x,y,dx,dy:integer; begin dx:=1; dy:=1; x:=10; y:=10; repeat Begin putpixel(x,y,0); if (x=640) or (x=0) then dx:=-dx;{или скока размер экрана} if (y=480) or (y=0) then dy:=-dy; x:=x+dx; y:=y+dy; putpixel(x,y,15); end; until (пока не зае...т); end. Наслаждайся |
Catty |
![]()
Сообщение
#4
|
Гость ![]() |
Enjoy it... ;)
|
Spinne |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Двигается то оно двигается, но как управлять движением с клавиатуры ?
То-есть надо как-то прописать кнопки, которые управляют движением, и кнопку для выхода из программы. Только как это сделать ? -------------------- coitus interruptus
|
pascal65536 |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 62 Пол: Мужской Репутация: ![]() ![]() ![]() |
ReadKey вернёт код нажатой клавиши.
Напиши простую программку, чтобы узнать какая клавиша соответствует какой цифре. dX и dY - Это приращение координаты X и Y объекта Код KeyChar := ReadKey; If Ord(KeyChar)=0 Then Begin KeyChar := ReadKey; case Ord(KeyChar) of 71: Begin dX := -1; dY := -1; End; 72: dY := -1; 73: Begin dX := 1; dY := -1; End; 75: dX := -1; 77: dX := 1; 79: Begin dX := -1; dY := 1; End; 80: dY := 1; 81: Begin dX := 1; dY := 1; End; end; End; Сообщение отредактировано: volvo - 18.12.2004 2:54 |
tri_galki |
![]()
Сообщение
#7
|
Гость ![]() |
Da, tut tol'ko readkey i pomojet. A mishku podklyu4i pri pomos4i assemblernih vstavok. U menya bila takaya zada4a. Pojdu pois4u. No naskol'ko pomnyu, listing tam prosto nereal'nij. Ishodnik 3 Kb i modul' s ob"ektami stolko je. Da i kstati... Y uje skazal, 4to pridetsya ob"ekti ispol'zovat? A kak eto zdelat' - sprosi u <B>pascal65536</B>. Eto novaja versiya?
![]() |
pascal65536 |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 62 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это старая версия. Видно по фото. 8)
|
Spinne |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, ReadKey помог, спасибо за подсказку. Програмку сделал, всё отлично работает. Ну а дальше решил замутить программу для движения обьекта мышей. Всёвроде нормально, но цикл работает слишком медленно, и при быстром движении мыши на екране остаются полосы. Можно-ли как-то увеличить скорость работы цикла ?
Код program lab42; uses mouse,graph; var d,m,x,y:integer; c,f,e:boolean; procedure nlo(x,y:integer); begin fillellipse(x,y,50,20); Ellipse (x,y-4,190,357,50,20); Line (x+10,y-12,x+20,y-40); Line (x-10,y-12,x-20,y-40); Circle (x+10,y-12,2); Circle (x-10,y-12,2); line(x-10,y+20,x-20,y+40); line(x+10,y+20,x+20,y+40); line(x-25,y+40,x-15,y+40); line(x+15,y+40,x+25,y+40); end; begin d:=0; initgraph(d,m,''); getmousexy(x,y,c,f,e); setxrange(50,580); setyrangle(40,430); repeat setcolor(0); nlo(x,y); getmousexy(x,y,c,f,e); setcolor(7); nlo(x,y); until c=true end. -------------------- coitus interruptus
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:02 |