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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2009, 18:07   #1
m@xon
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 10
По умолчанию PascalABC-Движение шарика

Вот кусок программы:
PHP код:
uses GraphABC,Events;

const
  
r=10;
  
d=3;

var 
x,yinteger;

procedure Show;
begin
  SetBrushColor
(clBlack);
  
Ellipse(x-r,y-r,x+r,y+r);
end;

procedure Hide;
begin
  SetBrushColor
(clWhite);
  
Ellipse(x-r,y-r,x+r,y+r);
end;

procedure KeyDown(Keyinteger);
begin
  Hide
;
  case 
Key of
   VK_Left
x:=x-d;
   
VK_Upy:=y-d;
   
VK_Rightx:=x+d;
   
VK_Downy:=y+d;
  
end;
  
Show
end
;

procedure KeyPress(Chchar);
begin
end
;

begin
  SetWindowCaption
('Нажимайте стрелки для перемещения объекта');
  
x:=WindowWidth div 2;
  
y:=WindowHeight div 2;
  
  
SetPenColor(clWhite);
  
  
OnKeyDown:=KeyDown;
  
OnKeyPress:=KeyPress;

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

Всем заранее спасибо.
Все чаще слова "юзай поиск" приобретают смысл "иди в ...опу"....
m@xon вне форума Ответить с цитированием
Старый 22.09.2009, 18:09   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

В Case добавьте флаги для обозначения нажатия стрелки. Потом работайте с этими флагами.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.09.2009, 00:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот, чисто лобзиком, чисто по приколу..

Код:
uses GraphABC,Events,CRT;

const
  r=10;
  d=3;
  Mydelay = 40;
type
  TDirection = (None, Left, Right, Up, Down);


var x,y: integer;
  Direction :TDirection;

procedure Show;
begin
  SetBrushColor(clBlack);
  Ellipse(x-r,y-r,x+r,y+r);
end;

procedure Hide;
begin
  SetBrushColor(clWhite);
  Ellipse(x-r,y-r,x+r,y+r);
end;

procedure KeyDown(Key: integer);
begin
  Hide;
  case Key of
   VK_Left: Direction := Left ;
   VK_Up: Direction := Up;
   VK_Right: Direction := Right;
   VK_Down: Direction := Down;
   VK_Escape: Halt;
  end;
  Show
end;

procedure KeyPress(Ch: char);
begin
end;

begin
  SetWindowCaption('Нажимайте стрелки для перемещения объекта');
  x:=WindowWidth div 2;
  y:=WindowHeight div 2;

  Direction := None;

  SetPenColor(clWhite);

  OnKeyDown:=KeyDown;
  OnKeyPress:=KeyPress;

  Show;
  repeat
    if Direction<>None then begin
      Hide;
      case Direction of
       Left: begin x:=x-d; if x<=0 then x:=WindowWidth  end;
       Up:  begin y:=y-d; if y<=0 then y:=WindowHeight  end;
       Right: begin x:=x+d; if x>=WindowWidth then x:=0  end;
       Down: begin y:=y+d; if y>=WindowHeight then y:=0  end;
     end;
     Show;
    end;
    Delay(Mydelay);
  until False;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2009, 12:40   #4
m@xon
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 10
По умолчанию

Alex Cones,Serge_Bliznykov Спасибо
Все чаще слова "юзай поиск" приобретают смысл "иди в ...опу"....
m@xon вне форума Ответить с цитированием
Старый 23.09.2009, 13:10   #5
m@xon
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 10
По умолчанию

Только в программе Serge_Bliznykov шарик иногда просто останавливается. И в углу мигает курсор. Не могу понять почему шарик останавливается
Все чаще слова "юзай поиск" приобретают смысл "иди в ...опу"....
m@xon вне форума Ответить с цитированием
Старый 23.09.2009, 13:21   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

курсор мигал и в исходной программе..
убрать можно одной строчкой.
перед циклом вставьте строку:
Код:
  HideCursor;
Цитата:
шарик иногда просто останавливается
у меня такого нет... Более того, я даже предположить не могу, как он может останавливаться... в программе просто нет такого кода!
после остановки программа на клавиши не реагирует? Останавливается после чего? есть внешние зависимости?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2009, 17:28   #7
m@xon
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 10
По умолчанию

Вот и я не могу понять...
некоторое время он нормально движется, а потом шарик просто останавливается и не реагирует на клавиши, но программа при этом не завершается
Все чаще слова "юзай поиск" приобретают смысл "иди в ...опу"....
m@xon вне форума Ответить с цитированием
Старый 23.09.2009, 22:51   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
некоторое время он нормально движется, а потом шарик просто останавливается и не реагирует на клавиши
некоторое время - это всёгда одно и то же? и сколько времени надо подождать?
Если есть возможность - на другой машине проверяли?
у меня версия Pascal ABC 3.0.1.35 (17.4.2007)
может от этого зависит?..

извините, но более конкретный совет/подсказку дать не могу. ибо я это PascalABC и поставил себе только ради форума. а раньше в глаза его никогда не видел
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2009, 15:05   #9
m@xon
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
некоторое время - это всёгда одно и то же? и сколько времени надо подождать?
Не знаю одно оно или разное, но шарик останавливается минуты через 2.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Если есть возможность - на другой машине проверяли?
Нет

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
у меня версия Pascal ABC 3.0.1.35 (17.4.2007)
может от этого зависит?..
Возможно-у меня версия 3.0.1.26(5.3.2007)
Все чаще слова "юзай поиск" приобретают смысл "иди в ...опу"....
m@xon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PascalABC прошу помощи по двумерным массивам aunt Sveta Помощь студентам 7 24.06.2009 10:04
VBA:Падение шарика и сила упругости kvadratnt Microsoft Office Excel 8 31.05.2009 11:48
Движение шарика в С# mak-mar Общие вопросы .NET 7 13.05.2009 17:59
Движение шарика по контуру delphi Map4eJIo Помощь студентам 2 03.03.2009 11:10
Ударение шарика об край стола Rusl92 Паскаль, Turbo Pascal, PascalABC.NET 1 26.09.2008 22:30