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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2012, 12:59   #1
zyxel-md
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 19
Восклицание Проблема с разработкой алгоритма движения, и его выполнением.

Пишу игру - При нажатии на стрелочку вверх, должна выполняться запись действия, к примеру нажатие перемещения фигурки наверх - запись в какое- нибудь поле надпись, "вверх" и так же для всех действий, после создания алгоритма движения , при нажатии на кнопку фигура начинает двигаться согласно ранее задаваемым действиям, уже неделю мучаюсь ничего не могу поделать !
Очень прошу помогите!!!



фото-

http://s019.radikal.ru/i601/1204/f3/734a14c6fed3.jpg

Скачать Архив

Текст программы

Последний раз редактировалось zyxel-md; 12.04.2012 в 13:49.
zyxel-md вне форума Ответить с цитированием
Старый 12.04.2012, 13:02   #2
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Код выложите пожалуйста, а лучше исходники если можно
RuVarez вне форума Ответить с цитированием
Старый 12.04.2012, 13:14   #3
zyxel-md
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от RuVarez Посмотреть сообщение
Код выложите пожалуйста, а лучше исходники если можно
Код слишком большой привышает нормы
и форум запрещает могу как архив скинуть
zyxel-md вне форума Ответить с цитированием
Старый 12.04.2012, 13:15   #4
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

выкладывай
RuVarez вне форума Ответить с цитированием
Старый 12.04.2012, 13:23   #5
zyxel-md
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 19
По умолчанию Выложил

Цитата:
Сообщение от RuVarez Посмотреть сообщение
выкладывай
Выложил ниже фото
zyxel-md вне форума Ответить с цитированием
Старый 12.04.2012, 13:28   #6
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Не ну ты красавец! Ты волижил ток Unit3, Project! А остальное?
RuVarez вне форума Ответить с цитированием
Старый 12.04.2012, 13:30   #7
zyxel-md
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 19
По умолчанию

Уже добавил все что есть.

Последний раз редактировалось zyxel-md; 12.04.2012 в 13:42.
zyxel-md вне форума Ответить с цитированием
Старый 12.04.2012, 14:09   #8
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Господи боже мой! Мама роди меня обратно! А зачем такие большие условия! Создай что то типа этого
Код:
type TPos = record
  X,Y : Integer;
end;
Код:
Walls : array [1..n] of TPos; //n - кол-во преград
MyCar : TPos;
Это будут твои преграды.
Далее создай функцию и перед движений вызывай ее!
В ней проверка на преграду! Процедура что типа:
Код:
function IsWallNear : Boolean;
var i : Integer;
begin
  Result := false;
 
  for i := 1 to n do
  begin
    if (MyCar.X = Walls[i].X) and (MyCar.Y = Walls[i].Y) then
    begin
      Result := true;
      Break;
    end;  
  end;  
end;
Короч оптимизируй сначало а потом делайн дальше
RuVarez вне форума Ответить с цитированием
Старый 12.04.2012, 14:12   #9
zyxel-md
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от RuVarez Посмотреть сообщение
Господи боже мой! Мама роди меня обратно! А зачем такие большие условия! Создай что то типа этого
Код:
type TPos = record
  X,Y : Integer;
end;
Код:
Walls : array [1..n] of TPos; //n - кол-во преград
MyCar : TPos;
Это будут твои преграды.
Далее создай функцию и перед движений вызывай ее!
В ней проверка на преграду! Процедура что типа:
Код:
function IsWallNear : Boolean;
var i : Integer;
begin
  Result := false;
 
  for i := 1 to n do
  begin
    if (MyCar.X = Walls[i].X) and (MyCar.Y = Walls[i].Y) then
    begin
      Result := true;
      Break;
    end;  
  end;  
end;
Короч оптимизируй сначало а потом делайн дальше
А можно еще по подробнее я просто новичок в этом деле не понимаю как и что
zyxel-md вне форума Ответить с цитированием
Старый 12.04.2012, 14:18   #10
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию

Ну смотри ты пишеш:
Код:
if(imgtruck.left+111)<=576 then
  if not ((imgtruck.Left+111=576) and (imgtruck.Top=328)) then
  if not ((imgtruck.Left+111=112) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=112) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=113) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=114) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=115) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=116) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=117) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=118) and (imgtruck.Top=664)) then
  if not ((imgtruck.Left+111=119) and (imgtruck.Top=664)) then


  if not ((imgtruck.Left+111=112) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=113) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=114) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=115) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=116) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=117) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=118) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=119) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=121) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=122) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=123) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=124) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=125) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=126) and (imgtruck.Top=553))  then

  if not ((imgtruck.Left+111=110) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=111) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=127) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=128) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=115) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=116) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=117) and (imgtruck.Top=553))  then
  if not ((imgtruck.Left+111=120) and (imgtruck.Top=553))  then




  if not ((imgtruck.Left+111=208) and (imgtruck.Top=128))  then

imgtruck.Left:=imgtruck.left+111;
Страшно становится, правда?) Замени это на функцию (ток ее чучуть надо оптимизировать), которую я описал и получится:
Код:
If IsWallNear then
  imgtruck.Left:=imgtruck.left+111;
Короч используй циклы и процедуры с функциями
RuVarez вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с выполнением javascript Ukraine JavaScript, Ajax 1 01.01.2012 00:22
Проблема с разработкой Web-приложений на Delphi - требует DelphiDotNet.Personality. Nikilania Общие вопросы Delphi 2 26.08.2011 09:45
Проблема с выполнением запроса к БД AgentSmit PHP 2 14.04.2011 02:13
Проблема с выполнением скриптов в IE rom@nыч JavaScript, Ajax 7 17.08.2008 18:56
Проблема с выполнением скрипта Seqular HTML и CSS 1 12.08.2007 03:54