Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2011, 20:09   #11
Fi11eR
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от AntonEew Посмотреть сообщение
и когда я пишу move (x, y); ему не нравится выражение в скобках.
описание этой процедуры тоже в код добавь
Fi11eR вне форума Ответить с цитированием
Старый 25.07.2011, 20:11   #12
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Просто в моей программе в процедурах рисование и стирание круга заменить на прямоугольник. И не нужно оперировать абсолютными координатами, а переменными.
puporev вне форума Ответить с цитированием
Старый 25.07.2011, 20:54   #13
AntonEew
Пользователь
 
Аватар для AntonEew
 
Регистрация: 21.07.2011
Сообщений: 12
По умолчанию

puporev, в смысле, клинический случай?
я что-то совсем не так делаю?
объясни, а то четвертый день мучаюсь!
Дорога появляется под ногами идущего...
AntonEew вне форума Ответить с цитированием
Старый 25.07.2011, 21:10   #14
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
объясни, а то четвертый день мучаюсь!
Я же привел рабочий пример как это нужно делать, просто замени круг на прямоугольник.
Ну а дурость здесь

Код:
If GraphResult = grOK then

ClearDevice;

setfillstyle (1,7);
Bar (300,425,350,470);
setfillstyle (1,8);
Bar (285,410,300,479);
Bar (350,410,365,479);
Bar (315,445,335,460);
Bar (323,400,327,455);
Это что, движение по нажатию клавиш?
puporev вне форума Ответить с цитированием
Старый 25.07.2011, 22:22   #15
AntonEew
Пользователь
 
Аватар для AntonEew
 
Регистрация: 21.07.2011
Сообщений: 12
По умолчанию

нет, это прорисовка объекта...
причем тут нажатие клавиш?
разве паскалю не все равно какой объект двигать?
и каким образом он нарисован? с точными координатами или переменными?

Подставил вместо твоего круга свой танк, а он все равно не движется.
Хотя остальной код не менял. Просто стоит на месте, а при нажатии стрелок иногда мерцает черным. И все.
Может быть, это все из-за точных координат?
Дорога появляется под ногами идущего...

Последний раз редактировалось Stilet; 26.07.2011 в 09:34.
AntonEew вне форума Ответить с цитированием
Старый 26.07.2011, 08:50   #16
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Может быть, это все из-за точных координат?
Именно так. Я же говорю, для того чтобы фигура двигалась, она дрлжна быть привязана к динамическим экранным координатам, которые меняются при нажатии стрелок.
Для этого тебе нужно свой танк написать не цифрами, а взять какую-то точку, например какой-то угол танка или середину и все остальное рисовать от этой точки, например
Код:
procedure Tank(x,y,c:integer);//координаты исходной точки и цвет
begin
 setcolor(c);
 setfillstyle(1,c);
 bar(x-20,y-20,x+20,y+20);
 end;
Это просто для примера.
Когда нажимаешь стрелку, например вправо
Код:
if keypressed then
 begin
  c:=readkey;
  if c=#77 then x:=x+5;
end;
вся фигура получает новые координаты и смещается.

Вообще по идее тебе нужно бы написать 4х2 процедур.
Танк прямо, влево, вправо, вниз и это все нарисовать и стереть.

Последний раз редактировалось Stilet; 26.07.2011 в 09:35.
puporev вне форума Ответить с цитированием
Старый 26.07.2011, 16:29   #17
AntonEew
Пользователь
 
Аватар для AntonEew
 
Регистрация: 21.07.2011
Сообщений: 12
По умолчанию

ага, спасибо.
а инициализацию графики в процедуре писать?
или в самой программе после основного begin?
Дорога появляется под ногами идущего...
AntonEew вне форума Ответить с цитированием
Старый 26.07.2011, 16:31   #18
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
а инициализацию графики в процедуре писать?
Нет, это в основной программе, или отдельной процедурой.
puporev вне форума Ответить с цитированием
Старый 26.07.2011, 17:32   #19
AntonEew
Пользователь
 
Аватар для AntonEew
 
Регистрация: 21.07.2011
Сообщений: 12
По умолчанию

я начал переделывать:

Код:
uses crt, graph;

var Gd, Gm:integer;
x0, y0, x, y:integer;
key:char;

procedure tank (x, y:integer);
begin
setfillstyle (1,7);
x:=getmaxX div 2;
y:=430,
bar (x-20, y-20, x+20, y+20);
setfillstyle (1,8);
bar (x-35, y-32, x-21, y+32);
bar (x+21, y-32, x+35, y+32);
bar (x-8, y-4, x+8, y+12);
bar (x-2, y-39, x+2, y);
end;

procedure move (x, y:integer);
begin
setfillstyle (1,7);
x:=getmaxX div 2;
y:=430,
bar (x-20, y-20, x+20, y+20);
setfillstyle (1,8);
bar (x-35, y-32, x-21, y+32);
bar (x+21, y-32, x+35, y+32);
bar (x-8, y-4, x+8, y+12);
bar (x-2, y-39, x+2, y);
end;

procedure clear (x, y:integer);
begin
setfillstyle (1,0);
x:=getmaxX div 2;
y:=430,
bar (x-20, y-20, x+20, y+20);
setfillstyle (1,0);
bar (x-35, y-32, x-21, y+32);
bar (x+21, y-32, x+35, y+32);
bar (x-8, y-4, x+8, y+12);
bar (x-2, y-39, x+2, y);
end;

begin

Gd:=VGA;
Gm:=VGAHi;
Initgraph (Gd, Gm, '...\bgi');
If graphResult = grOK then

ClearDevice;

setfillstyle (1,7);
x:=getmaxX div 2;
y:=430,
bar (x-20, y-20, x+20, y+20);
setfillstyle (1,8);
bar (x-35, y-32, x-21, y+32);
bar (x+21, y-32, x+35, y+32);
bar (x-8, y-4, x+8, y+12);
bar (x-2, y-39, x+2, y);

ReadLn;

end.
так? просто когда я начал писать само движение через case of end, он у меня все равно не двигался...
может опять что-то не то??
извини за настойчивость.
Дорога появляется под ногами идущего...
AntonEew вне форума Ответить с цитированием
Старый 26.07.2011, 17:45   #20
AntonEew
Пользователь
 
Аватар для AntonEew
 
Регистрация: 21.07.2011
Сообщений: 12
По умолчанию

даже так не движется:

Код:
uses crt, graph;

var Gd, Gm:integer;
x, y:integer;
key:char;

begin

Gd:=VGA;
Gm:=VGAHi;
Initgraph (Gd, Gm, '...\bgi');
If graphResult = grOK then

ClearDevice;

setfillstyle (1,7);
x:=getmaxX div 2;
y:=430,
bar (x-20, y-20, x+20, y+20);
setfillstyle (1,8);
bar (x-35, y-32, x-21, y+32);
bar (x+21, y-32, x+35, y+32);
bar (x-8, y-4, x+8, y+12);
bar (x-2, y-39, x+2, y);
end;

key:=readkey;
if key=#77 then x:=x-5;

readln;

end.
Дорога появляется под ногами идущего...
AntonEew вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(SDL) Управление с клавиатуры Кипящий чайник Qt и кроссплатформенное программирование С/С++ 4 02.07.2011 21:25
Перемещение объекта по форме.(Управление с клавиатуры) gralex10 Помощь студентам 1 28.03.2011 15:57
Управление в игре с клавиатуры Mr_freeman Помощь студентам 2 19.01.2010 11:07
Управление с клавиатуры kpishnik Помощь студентам 10 27.07.2008 18:38
Управление с клавиатуры PikeIt Общие вопросы Delphi 6 27.12.2006 17:41