![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Svetka |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
Код setfillstyle(9,blue); bar(0,0,640,75); setcolor(14); circle(45,40,30); setfillstyle(1,14); floodfill(45,40,14); setcolor(6); setlinestyle(0,brown,3); line(220,100,380,100); line(220,300,220,100); line(380,300,380,100); line(260,250,260,100); line(340,250,340,100); setfillstyle(1,darkgray); bar(250,250,350,260); setfillstyle(1,green); Bar(0,300,640,360); вот сами качели...помогите обеспечить движение качелей!! очень надо ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Для движения, рисуем качели (это у вас реализованно), ждем пока пользователь их увидит (delay) и закрашиваем цветом фона .
Все повторяем. Для этого удобно запихнуть все что вы написали в процедуру, параметр котрой -цвет рисования. Тогда в программе пишем так: Цитата repeat draw (color); delay(time); draw(0); run; {передвигаем качели} until {условиевыхода, напрмиер keypressed} добавил позже: я не подумал, качели ведь наклоняются когда двигаются ![]() То есть рисунок еще поворачивать надо ... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Svetka |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
а как это сделать? я вообще не понимаю как можно обеспечить движение качелей
![]() |
hiv |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Все просто: смещение качелей по координате X=sin(t), по координате Y=1-cos(sin(t)). Не забыть еще что Y вниз идет при рисовании.
Код program kach; uses Crt,Graph; procedure DrawFon; {рисуем фон} begin setfillstyle(9,blue); bar(0,0,640,75); setcolor(14); circle(45,40,30); setfillstyle(1,14); floodfill(45,40,14); setcolor(6); setlinestyle(0,0,3); line(200,100,400,100); line(200,300,200,100); line(400,300,400,100); line(260,250,260,100); line(340,250,340,100); setfillstyle(1,darkgray); bar(250,250,350,260); setfillstyle(1,green); Bar(0,300,640,360); setlinestyle(0,0,3); end; procedure DrawKach(x,y:integer); {рисуем качели со смещением по x и y} begin setcolor(6); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,darkgray); bar(250+x,250-y,350+x,260-y); end; procedure DrawNoKach(x,y:integer); {стираем качели со смещением по x и y} begin setcolor(0); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,black); bar(250+x,250-y,350+x,260-y); end; var driver,mode:integer; t,h :real; begin h:=2*pi/400; t:=0; driver:=VGA; mode:=VGAhi; InitGraph(driver,mode,'C:\BP\BGI'); DrawFon; repeat DrawNoKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); t:=t+h; if t>2*pi then t:=0; DrawKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); delay(1000); until keypressed; CloseGraph; end. :smoke: -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Altair |
![]()
Сообщение
#5
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
ДА ну, слишком круто, для подобной задачи, все проще можно сделать:
Код uses graph,crt; procedure draw(shag:byte; color:byte); begin setcolor(color); line(260,100,260,100+10*shag); {2} line(340,100,340,100+10*shag); {1 ступень} setfillstyle(1,color); {!} bar(250,100+10*shag,350,100+13*shag+5); {сиденье} end; var gd,gm:integer; k:byte; begin gd:=detect; initgraph(gd,gm,''); setfillstyle(9,blue); bar(0,0,640,75); setcolor(14); circle(45,40,30); setfillstyle(1,14); floodfill(45,40,14); setcolor(6); setlinestyle(0,brown,3); line(220,100,380,100); line(220,300,220,100); line(380,300,380,100); setfillstyle(1,green); Bar(0,300,640,360); k:=1; repeat for k:=1 to 10 do begin draw(k,8); delay(2000); draw(k,0); end; for k:=10 downto 1 do begin draw(k,8); delay(2000); draw(k,0); end; until keypressed; readkey; end. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
![]()
Сообщение
#6
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
эээ.... только мы в разные стороны мыслим
![]() Я реализовал движение простое - качели качаются именно так ![]() (только вчера качался :P :D ) ![]() p.s. а скажи, Svetka, кто будет качаться на качелях ночью? ![]() а если не нось, то почему экран черный? ![]() ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
hiv |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Прикольно! :p7:
Хотя это первое, что я сделал... Но потом подумал, что это нужно девушке... и переделал ;) -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Svetka |
![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата(Oleg_Z @ 22.03.05 16:15) эээ.... только мы в разные стороны мыслим ![]() Я реализовал движение простое - качели качаются именно так ![]() (только вчера качался :P :D ) ![]() p.s. а скажи, Svetka, кто будет качаться на качелях ночью? ![]() а если не нось, то почему экран черный? ![]() ![]() хехе,Олег......ночью катаца на качелях это классно,правда сама не пробовала;) пасибо за задачу;) ![]() |
Altair |
![]()
Сообщение
#9
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
да всегда пожалуйста!
![]() ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Svetka |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата(hiv @ 22.03.05 16:22) Прикольно! :p7: Хотя это первое, что я сделал... Но потом подумал, что это нужно девушке... и переделал ;) пасиба большое за задачу;) |
Svetka |
![]()
Сообщение
#11
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
вот у меня было меню......из трёх пунктов.........там был пункт(качели) тока пока без движения.........я туда вместо неё вставила исправленную.........запускаю а у мя не появляетца меню....а сразу качели и сразу выходит из проги...почему? не знаешь?
|
hiv |
![]()
Сообщение
#12
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Если бы весь код опубликовала - тогда проблем не было бы...
Можешь оформить тело прогаммы (там где begin ........ end.), что я тебе давал, в виде процедуры. Вызов процедуры вставь в код своей прогаммы там где меню (или где твои качели рисовались). -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Svetka |
![]()
Сообщение
#13
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
вот мой весь код
Код Program www; uses crt,graph; var c:char; menu:array[0..2]of string; item,i:integer; procedure Zastavka; var GrDriver,grmode:integer; begin grdriver:=detect; initgraph(grdriver,grmode, 'c:\TP\TP\BGI'); setfillstyle(9,blue); bar(0,0,640,75); setcolor(14); circle(45,40,30); setfillstyle(1,14); floodfill(45,40,14); setcolor(6); setlinestyle(0,brown,3); line(220,100,380,100); line(220,300,220,100); line(380,300,380,100); line(260,250,260,100); line(340,250,340,100); setfillstyle(1,darkgray); bar(250,250,350,260); setfillstyle(1,green); Bar(0,300,640,360); readkey; closegraph; end; procedure Zadacha; begin clrscr; Writeln('zadacha=)'); readln; end; begin menu[0]:='1.Zastavka'; menu[1]:='2.Zadacha'; menu[2]:='3.Vyhod'; item:=0; while true do begin clrscr; for i:=0 to 2 do begin if i=item then begin textcolor(15); textbackground(5); end else begin textcolor(7); textbackground(0); end; writeln(menu[i]); end; textbackground(0); case readkey of #0: case readkey of #72: if item>0 then item := item - 1; #80: if item<2 then item := item + 1; end; #13: case item of 0: Zastavka; 1: Zadacha; 2: Halt; end; '1': Zastavka; '2': Zadacha; '3': Halt; end; end; end. вот куда надо изменё1нную часть вставить что б сначало меню показывалось? |
FreeMan |
![]()
Сообщение
#14
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
дык меню итак первым показывается. а чтоб качельки качались, надо процедуру заставки заменить.
-------------------- бб
|
hiv |
![]()
Сообщение
#15
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Замени код в процедуре Zastavka на тот код что я написал.
-------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Svetka |
![]()
Сообщение
#16
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
ну я заменила...всё равно меню не показывается.....
|
Svetka |
![]()
Сообщение
#17
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
вот получившийся код:
Исходный код Program www; uses crt,graph; var {c:char;} menu:array[0..2] of string; item,i:integer; procedure Zatavka; var GrDriver,grmode:integer; begin grdriver:=detect; initgraph(grdriver,grmode, 'c:\TP\TP\BGI'); setfillstyle(9,blue); bar(0,0,640,75); setcolor(14); circle(45,40,30); setfillstyle(1,14); floodfill(45,40,14); setcolor(6); setlinestyle(0,brown,3); line(200,100,400,100); line(200,300,200,100); line(400,300,400,100); line(260,250,260,100); line(340,250,340,100); setfillstyle(1,darkgray); bar(250,250,350,260); setfillstyle(1,green); Bar(0,300,640,360); {’а ў } setlinestyle(0,0,3); end; procedure DrawKach(x,y:integer); begin setcolor(6); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,darkgray); bar(250+x,250-y,350+x,260-y); end; procedure DrawNoKach(x,y:integer); begin setcolor(0); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,black); bar(250+x,250-y,350+x,260-y); end; var driver,mode:integer; t,h:real; begin h:=2*pi/400; t:=0; driver:=VGA;mode:=VGAhi; initGraph(driver,mode,'c:\tp\tp\bin'); Zatavka; repeat DrawNoKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); t:=t+h; if t>2*pi then t:=0; DrawKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); delay(1000); until keypressed; CloseGraph; end. procedure Zadacha; begin clrscr; Writeln('zadacha=)'); readln; end; begin menu[0]:='1.Заставка '; menu[1]:='2.Задача '; menu[2]:='3.Выход'; item:=0; while true do begin clrscr; for i:=0 to 2 do begin if i=item then begin textcolor(14); textbackground(4); end else begin textcolor(7); textbackground(0); end; writeln(menu[i]); {ЊҐо} end; textbackground(0);{–ўҐв д® -—сал©} case readkey of #0: case readkey of #72: if item>0 then item := item - 1; #80: if item<2 then item := item + 1; end; #13: case item of 0: Zastavka; 1: Zadacha; 2: Halt; end; '1': Zastavka; '2': Zadacha; '3': Halt; end; end. |
hiv |
![]()
Сообщение
#18
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Вот как надо:
Код Program www; uses crt,graph; var c:char; menu:array[0..2]of string; item,i:integer; procedure Zastavka; procedure DrawFon; {рисуем фон} begin setfillstyle(9,blue); bar(0,0,640,75); setcolor(14); circle(45,40,30); setfillstyle(1,14); floodfill(45,40,14); setcolor(6); setlinestyle(0,0,3); line(200,100,400,100); line(200,300,200,100); line(400,300,400,100); line(260,250,260,100); line(340,250,340,100); setfillstyle(1,darkgray); bar(250,250,350,260); setfillstyle(1,green); Bar(0,300,640,360); setlinestyle(0,0,3); end; procedure DrawKach(x,y:integer); {рисуем качели со смещением по x и y} begin setcolor(6); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,darkgray); bar(250+x,250-y,350+x,260-y); end; procedure DrawNoKach(x,y:integer); {стираем качели со смещением по x и y} begin setcolor(0); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,black); bar(250+x,250-y,350+x,260-y); end; var driver,mode:integer; t,h :real; begin h:=2*pi/400; t:=0; driver:=VGA; mode:=VGAhi; InitGraph(driver,mode,'C:\BP\BGI'); DrawFon; repeat DrawNoKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); t:=t+h; if t>2*pi then t:=0; DrawKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); delay(1000); until keypressed; CloseGraph; end; procedure Zadacha; begin clrscr; Writeln('zadacha=)'); readln; end; begin menu[0]:='1.Zastavka'; menu[1]:='2.Zadacha'; menu[2]:='3.Vyhod'; item:=0; while true do begin clrscr; for i:=0 to 2 do begin if i=item then begin textcolor(15); textbackground(5); end else begin textcolor(7); textbackground(0); end; writeln(menu[i]); end; textbackground(0); case readkey of #0: case readkey of #72: if item>0 then item := item - 1; #80: if item<2 then item := item + 1; end; #13: case item of 0: Zastavka; 1: Zadacha; 2: Halt; end; '1': Zastavka; '2': Zadacha; '3': Halt; end; end; end. И учите процедуры... ![]() -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Svetka |
![]()
Сообщение
#19
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Женский Репутация: ![]() ![]() ![]() |
пасибо большое
![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 0:11 |