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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2013, 22:33   #1
afterik
Новичок
Джуниор
 
Регистрация: 08.04.2013
Сообщений: 5
Восклицание Не работает программа анимации (движения) картинок

Здравствуйте
Помогите разобраться в чем ошибка
При нажатии button1 должен двигаться image2 а при нажатии button5 двигаться в другом направлении но, программа не запускается, постоянно выдает разные ошибки. Я уже не знаю в чём проблема.

Код:
 unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, jpeg;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Timer1: TTimer;
    Button4: TButton;
    Timer2: TTimer;
    Button5: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var Alfa, R:integer;
   PUSK:boolean;
   PUSK2:boolean;
   Form1: TForm1;


implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
PUSK:=true;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 PUSK:=false;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
PUSK2:=true;


end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.WindowState:= wsMaximized;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if PUSK then
    begin


      Image2.Left:=Image1.Left+Image1.Width div 2
                   +trunc(cos(Alfa*pi/180)*R);
      Image2.Top :=Image1.Top+Image1.Height div 2
                   -trunc(sin(Alfa*pi/180)*R);
      Alfa:=Alfa+1;
 end;
end;


begin
 PUSK:=false;      
  Alfa:=0;              
  R:=200;             
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 if PUSK2 then
    begin

      Image2.Left:=Image1.Left+Image1.Width div 2
                   +trunc(cos(Alfa*pi/180)*R);
      Image2.Top :=Image1.Top+Image1.Height div 2
                   -trunc(sin(Alfa*pi/180)*R);
      Alfa:=Alfa-1; 
 end;
end;


begin
 PUSK2:=false;     
  Alfa:=0;            
  R:=200;
end.

Последний раз редактировалось afterik; 08.04.2013 в 22:37.
afterik вне форума Ответить с цитированием
Старый 08.04.2013, 22:37   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

надо читать ошибки и исправлять их
eval вне форума Ответить с цитированием
Старый 08.04.2013, 22:40   #3
afterik
Новичок
Джуниор
 
Регистрация: 08.04.2013
Сообщений: 5
По умолчанию

Дак да, но я новичок в этом и у меня уже кипят мозги
afterik вне форума Ответить с цитированием
Старый 09.04.2013, 03:09   #4
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

http://www.programmersforum.ru/showthread.php?t=147082
SKS вне форума Ответить с цитированием
Старый 09.04.2013, 08:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я новичок
Даже новичкам по силам ошибками делится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2013, 10:07   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
begin
 PUSK:=false;      
  Alfa:=0;              
  R:=200;             
end;
end;
Висит в воздухе - не принадлежит никакому методу. Чисто навскидку оно не нужно вообще - убрать и всё.
Код:
begin
 PUSK2:=false;     
  Alfa:=0;            
  R:=200;
end.
Так в целом вроде как можно делать, но это некрасивый подход, глобальные переменные лучше инициализировать при объявлении. Например, var R: integer=200;
phomm вне форума Ответить с цитированием
Старый 09.04.2013, 13:12   #7
afterik
Новичок
Джуниор
 
Регистрация: 08.04.2013
Сообщений: 5
По умолчанию

Код:
var Alfa, R:integer=150;
    PUSK:boolean;
    PUSK2:boolean;
    Form1: TForm1;
Сделал так, но теперь другая ошибка,
Код:
cannot initialize multiple variables
afterik вне форума Ответить с цитированием
Старый 09.04.2013, 13:51   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а так?
Код:
var R:integer=150;
    Alfa:integer; 
    PUSK:boolean;
    PUSK2:boolean;
    Form1: TForm1;

p.s. я бы, например, никогда не стал так иницилизировать переменную.
Хотя бы потому что, что это не универсально (для разных версий Паскаля\Delphi не везде будет компилироваться)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.04.2013, 14:29   #9
afterik
Новичок
Джуниор
 
Регистрация: 08.04.2013
Сообщений: 5
По умолчанию

Я и так делал
Это не я делал исходный код
Задание было такое
Модернизировать программу так что бы image2 при нажатие кнопки крутился в другую сторону.
Я исправил проблему создав кнопку
Код:
procedure TForm1.Button6Click(Sender: TObject);
begin
R:=150;
end;
Перед этим удалив
Код:
begin
 PUSK:=false;      
  Alfa:=0;              
  R:=150;             
end;
end;
и
Код:
begin
 PUSK:=false;      
  Alfa:=0;              
  R:=150;             
end.
afterik вне форума Ответить с цитированием
Старый 09.04.2013, 14:39   #10
afterik
Новичок
Джуниор
 
Регистрация: 08.04.2013
Сообщений: 5
По умолчанию

а нет, мне помогло
Код:
var R:integer=150;
    Alfa:integer; 
    PUSK:boolean;
    PUSK2:boolean;
    Form1: TForm1;
Спасибо
afterik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на Си. Моделирование движения тела в вязкой среде. DKbelRoma Фриланс 4 26.11.2012 11:55
PascalABC программа движения объектов Bonza13 Паскаль, Turbo Pascal, PascalABC.NET 4 24.03.2012 18:16
программа просмотра картинок wulf_01 Помощь студентам 3 08.05.2011 15:43
Программа по оптимизации картинок. lorents Софт 0 08.09.2010 18:08