Показать сообщение отдельно
  #112  
Старый 24.03.2014, 09:34
ThierryH ThierryH вне форума
Прохожий
 
Регистрация: 22.03.2014
Сообщения: 2
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Добрый день.
Честно говоря впечатлен вашей статьей,
не могли бы вы мне помочь

Сразу говорю, я относительно недавно начал изучать язык, поэтому попрошу сильно не ругаться, за некоторые возможно глупые вопросы).

Сейчас сам пытаюсь реализовать небольшую игру.
И у меня возникла проблемка в самом начале, не могли бы подсказать как вы реализовали создание объектов Player (игрок) и Enemy(враги).

Вот, например, (начну с самого начала):
у меня есть модуль main и модуль objects:
Код:
TBase=class
       private
         x: Integer;
         y: Integer;
       public
         constructor Create(x0, y0: Integer);
         procedure setX (x0: Integer);       //назначают координаты
         procedure setY (y0: Integer);
         function  getX: Integer;            //возвращают координаты
         function  getY: Integer;
    end;

    { TStatic }

    TStatic=class(TBase)
      private
        bitmap: TBitmap;
      public
        constructor Create(x0, y0: Integer; bitmap0: TBitmap);
        procedure setBitmap (bitmap0: TBitmap);   // меняет изображ. внутри объекта
        function getBitmap: TBitmap;              // возвращает изображение
    end;

    { TAnimate }

    TAnimate=class(TBase)
      private
         bitmap: array[0..100] of TBitmap;
         curFrame: Integer;       //текущий кадр
         maxFrame: Integer;       //максим.кадр
      public
        constructor Create(x0, y0: Integer; bitmap0: array of TBitmap;
          maxFrame0: Integer);
        procedure nextFrame;       //меняет кадры
        procedure setBitmap(bitmap0: array of TBitmap);
        function getBitmap:TBitmap;
    end;
{ TEnemy }

    TEnemy=class(TAnimate)
      public
        procedure move;
    end;

    { TPlayer }

    TPlayer=class(TAnimate)
      private
        health: Integer;
      public
        constructor Create(x0, y0: Integer; bitmap0: array of TBitmap;
          maxFrame0: Integer);
        procedure moveLeft;
        procedure moveRight;
        function getHealth: Integer;
    end;


implementation

{ TEnemy }

procedure TEnemy.move;
begin
  y:= y+3;
end;

{ TPlayer }

constructor TPlayer.Create(x0, y0: Integer; bitmap0: array of TBitmap;
  maxFrame0: Integer);
begin
  inherited;
  health:= 100;
end;

procedure TPlayer.moveLeft;
begin
  x:= x-5;
end;

procedure TPlayer.moveRight;
begin
  x:= x+5;
end;

{ TAnimate }

constructor TAnimate.Create(x0, y0: Integer; bitmap0: array of TBitmap;
  maxFrame0: Integer);
begin
  x:=x0;
  y:=y0;
  bitmap:=bitmap0;
  curFrame:= 0;
  maxFRame:= maxFrame0;
end;

procedure TAnimate.nextFrame;
begin
  if curFrame < maxFrame then
     curFrame:=curFrame+1
  else
      curFrame:=0;
end;

procedure TAnimate.setBitmap(bitmap0: array of TBitmap);
begin
  bitmap:=bitmap0;
end;

function TAnimate.getBitmap: TBitmap;
begin
  result:=bitmap[curFrame];
end;

{ TStatic }

constructor TStatic.Create(x0, y0: Integer; bitmap0: TBitmap);
begin
  x:=x0;
  y:=y0;
  bitmap:=bitmap0;
end;

procedure TStatic.setBitmap(bitmap0: TBitmap);
begin
  bitmap:=bitmap0;
end;

function TStatic.getBitmap: TBitmap;
begin
  result:=bitmap;
end;

{ TBase }

constructor TBase.Create(x0, y0: Integer);
begin
  x:=x0;
  y:=y0;
end;

procedure TBase.setX(x0: Integer);
begin
  x:=x0;
end;

procedure TBase.setY(y0: Integer);
begin
  y:=y0;
end;

function TBase.getX: Integer;
begin
  result:=x;
end;

function TBase.getY: Integer;
begin
  result:=y;
end;

end.

В модуле main у меня след.образом объявлены переменные:
Код:
Form1: TForm1;

  //graphics
  plPic: array [0..2] of TBitmap;
  grPic: array [0..2] of TBitmap;
  enPic: array [0..2] of TBitmap;
  seaPic: TBitmap;
  bulPic: TBitmap;

  //objects
  Player: TPlayer;
  Sea: array [0..1] of Tsea ;
  Ground: array [0..2] of TGround;
  Bullet: array [0..100] of TBullet;
  Enemy: array [0..100] of TEnemy;

  //booleans
  MoveL, MoveR: boolean;
  Shoot: boolean;

  //Integers
  delay:Integer;
  score: Integer;

И подгружается графика:
//load graphics
  //player
  for i:=0 to 2 do
      begin
        plPic[i]:= TBitmap.Create;
        plPic[i].LoadFromFile('img/player'+IntToStr(i)+'.bmp');
        plPic[i].Transparent:= True;
      end;

//enemies  (графика для enemy)
  for i:=0 to 2 do
      begin
        enPic[i]:= TBitmap.Create;
        enPic[i].LoadFromFile('img/enemy'+IntToStr(i)+'.bmp');
        enPic[i].Transparent:= True;
      end;
MAD: напоминаю про теги

Далее идет реализация процедур.

Проблема в том, что в модуле objects выдает ошибку incompetible types (bitmap и bitmap0).........прошу вас посмотреть, что можно исправить.
А также подскажите, пож-та, как вы реализовали создание объектов.
Ответить с цитированием