IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Объекты. Движение.
Анна
сообщение 10.04.2006 17:50
Сообщение #1


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


 uses crt, graph;

type

TBall = object

public

procedure Show(posX, posY, radius, color, q1, w1, e1, t1, clr : word);
procedure Hide;

public

x, y, r, c : word;
q, w, e, t, m : word;

end;


procedure TBall.Show(posX, posY, radius, color, q1, w1, e1, t1, clr : word);
begin
x := posX;
y := posY;
r := radius;
c := color;
q := q1;
w := w1;
e := e1;
t := t1;
m := clr;

SetColor (m);
Rectangle (q,w,e,t);
SetColor©;
Circle(x, y, r);
end;

procedure TBall.Hide;
begin
SetColor(black);
Circle(x, y, r);
SetColor(black);
Rectangle (q,w,e,t);

end;

var
gd, gm : integer;
key: char;
dx0, dx1,dx2: integer;

ball, ball1 : TBall;
begin
clrscr;
gd := detect;
InitGraph(gd, gm, '');

ball.Show(150,150,40, White, 100,100,200,200, white);;
readln;
ball.Hide;

readln;
ball.Show(180,180,30, RED, 140,140,220,220, GREEN);;
{ readln;
ball.Hide;}

dx0 := 150;
dx1 := 100;
dx2 := 200;

repeat
key := readkey;
case key of

'w' : begin
ball.hide;
dx0:= dx0+10; dx1:=dx1+10; dx2:=dx2+10;
ball.show (dx0,150, 40, white, dx1,100,dx2,200,white);
readln;
end;

'e' : begin
ball.hide;
ball.Show(182,180,30, RED, 142,140,222,220, GREEN);
readln;
end;

end;

until key <> 'q';

end.


Не могу сообразить как сделать движение вот в этом куске

case key of

'w' : begin
ball.hide;
dx0:= dx0+10; dx1:=dx1+10; dx2:=dx2+10;
ball.show (dx0,150, 40, white, dx1,100,dx2,200,white);
readln;
end;


При нажатии клавиши "w" квадрат с кругом внутри должен перемещаться по оси X
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.04.2006 23:43
Сообщение #2


Гость






Цитата(Анна @ 10.04.2006 17:50)

Не могу сообразить как сделать движение вот в этом куске
case key of
'w' : begin
ball.hide;
dx0:= dx0+10; dx1:=dx1+10; dx2:=dx2+10;
ball.show (dx0,150, 40, white, dx1,100,dx2,200,white);
readln;
end;


При нажатии клавиши "w" квадрат с кругом внутри должен перемещаться по оси X

blink.gif Не понял... Все же перемещается. Только:
repeat
key := readkey;
case key of

'w' : begin
ball.hide;
dx0:= dx0+10; dx1:=dx1+10; dx2:=dx2+10;
ball.show (dx0,150, 40, white, dx1,100,dx2,200,white);
{ readln; } { <--- Убрать }
end;

'e' : begin
ball.hide;
ball.Show(182,180,30, RED, 142,140,222,220, GREEN);
readln;
end;
end;
until key = 'q'; { <--- Чувствуешь разницу ? У Until условие обратное !!! }
 К началу страницы 
+ Ответить 
Анна
сообщение 12.04.2006 14:50
Сообщение #3


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

Репутация: -  7  +


Сдала сегодня программу ... вот исходник, может кому пригодится ...

 {$R+}
uses crt, graph;

type

TBall = object

public

procedure Show(posX, posY, radius, color, q1, w1, e1, t1, clr : word);
procedure Hide;

public

x, y, r, c : word;
q, w, e, t, m : word;

end;


procedure TBall.Show(posX, posY, radius, color, q1, w1, e1, t1, clr : word);
begin
x := posX;
y := posY;
r := radius;
c := color;
q := q1;
w := w1;
e := e1;
t := t1;
m := clr;

SetColor (m);
Rectangle (q,w,e,t);
SetColor©;
Circle(x, y, r);
end;

procedure TBall.Hide;
begin
SetColor(black);
Circle(x, y, r);
SetColor(black);
Rectangle (q,w,e,t);

end;

var
gd, gm : integer;
key: char;
dx0, dx1, dx2, dx00, dx11, dx22 : integer;

ball, ball1 : TBall;
begin
clrscr;
gd := detect;
InitGraph(gd, gm, '');

ball.Show(150,150,40, White, 100,100,200,200, white);;
readln;
ball.Hide;

readln;
ball.Show(180,180,30, RED, 140,140,220,220, GREEN);
readln;
ball.Hide;

dx0 := 150; dx1 := 100; dx2 := 200;
dx00 := 180; dx11 := 140; dx22 := 220;

repeat
key := readkey;
case key of

'w' : begin
ball.hide;
dx0:= dx0+1; dx1:=dx1+1; dx2:=dx2+1;
ball.show (dx0,150, 40, white, dx1,100,dx2,200,white);
end;

'e' : begin
ball.hide;
dx0:= dx0-1; dx1:=dx1-1; dx2:=dx2-1;
ball.show (dx0,150, 40, white, dx1,100,dx2,200,white);
end;

's' : begin
ball.hide;
dx00:= dx00+1; dx11:=dx11+1; dx22:=dx22+1;
ball.Show(dx00,180,30, RED, dx11,140,dx22,220, GREEN);
end;

'd' : begin
ball.hide;
dx00:= dx00-1; dx11:=dx11-1; dx22:=dx22-1;
ball.Show(dx00,180,30, RED, dx11,140,dx22,220, GREEN);
end;
end;

until key = #27;

end.



ps Небольшой вопрос: как забиндить движение объекта на стрелки (т.е. использовать стрелки вместо w,e,s,d) ?
Какой код у них? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
arhimag
сообщение 12.04.2006 16:37
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


lКоды: #0 и
лево: #75
право: #77
вверх: #72
вниз:#80


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 12.04.2006 21:45
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


arhimag, а если бы тебе так объяснили ты бы понял ? Я нет.

Анна,
ch := readkey;
case ch of
#0 : begin
ch := readkey;
case ch of
#75:; // left
#77:; // right
#72:; // up
#80:; // down
end;
end;
end;

зы а вообще поиск рулит yes2.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.04.2024 13:21
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"