| 
| 
 | Вопрос # 5 813/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты! прошу прощения за беспокойство думаю я не отниму у вас много времени ... я пишу шахматы ... и не могу выставить фигуры.... я раньше никогда не писал с помощью ооп, вот осваиваю ... прошу показать на ошибку в конструкторе... что бы я  мог выставить фигуры и дальше заняться дрэг энд дропом.... Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls, StdCtrls; type  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);//   procedure FormClose(Sender: TObject; var Action: TCloseAction);    private  //  Function Shah(color : string) : boolean; // ìåòîä
äëÿ
ïðîâåðêè
íà øàõ  //  procedure OnImageDrop(Sender, Source: TObject; PosX, PosY: Integer);//    procedure OnImageOver(Sender, Source: TObject; PosX, PosY: Integer;    //                      State: TDragState; var Accept: Boolean);     { Private declarations }     public    { Public declarations }  end;//--------------------------------------------------------------------  TDoska=class(Tpanel)        {ÊËÀÑÑ -
ÄÎÑÊÀ}  private  Dx,Dy:Integer;//
êîîðäèíàòû
êëåòêè  public  property PosX:Integer read Dx write Dx;  property PosY:Integer read Dy write Dy;  end;//-----------------------------------------------------------------------TFigura = class(TImage)  private    X,Y: Integer;    FColor: string;    property PosX:Integer read X write X;    property PosY:Integer read Y write Y;    property Color:string read FColor write FColor; //Ïðîâåðÿåò
ïðàâèëüíîñòü
õîäà//function Hod(PosX,PosY:integer): boolean; virtual; abstract;//Ïðîâåðÿåò
íà
îòñóòñâèå
çàíÿòûõ
êëåòîê ïà
ïóòè õîäà//function Jump(PosX,PosY:integer): boolean;//procedure Del;
//Ïðîèçâîäèò
óäàëåíèå
ñðóáëåííîé
ôèãóðû    constructor Create(PosX,PosY:Integer);end;//-----------------------------------------------------------------------   // ïîäêëàññûTPeshka = class(TFigura)  private //   Function Hod(X : Tpoint): boolean; override;  end;TLadja = class(TFigura)  private //   Function Hod(X : Tpoint): boolean; override;  end;TKing = class(TFigura)  private  //  Function Hod(X : Tpoint): boolean; override;  end;TOficer = class(TFigura)  private  //  Function Hod(X : Tpoint): boolean; override;  end;TQueen = class(TFigura)  private   // Function Hod(X : Tpoint): boolean; override;  end;TKon = class(TFigura)  private   // Function Hod(X : Tpoint): boolean; override;  end; //-----------------------------------------------------------------------var  Form1: TForm1;  PanelArray: array[1..8,1..8]of TPanel;
//ìàññèâ èç
ïàíåëåé  PosX,PosY:Integer;                 
//ïîëîæåíèÿ
äëÿ ôèãóð  LabelArray: array[1..32] of TLabel; //
ìàññèâ èç
ìåòîê  NextTurn: string;             //öâåò  Figures: array[1..32] of TFigura;   //ôèãóðû  doska:array[1..8,1..8] of Tdoska;  i,X,Y:Integer;implementation{$R *.dfm}  {$R Figures.res} //----------------------------------------------------------------------------constructor TFigura.Create(PosX,PosY:integer);begin  inherited Create(Form1);  dragmode:= dmAutomatic;  //OnDragDrop := form1.OnImageDrop; // OnDragOver := Form1.OnImageOver;        {Ñîáûòèå Drag&Drop
ðàçäåëåíî
íà äâà: DragOver è DragDrop,
êîòîðûå        îòâå÷àþò
çà ïåðåíîñ
îáúåêòà è
áðîñàíèå
åãî íà
äðóãîé
îáúåêò,
ñîîòâåòñòâåííî.}      if PosY > 4  then           begin            Picture.Bitmap. LoadFromResourceName(HInstance, 'BLACK_'             + Self.ClassName);            Fcolor := 'BLACK_'; {öâåò
ôèãóðû.
Ââåäåì
óñëîâíîå
îáîçíà÷åíèå}          end      else          begin            Picture. Bitmap.LoadFromResourceName(HInstance, 'WHITE_'              + Self.ClassName);            Fcolor :='WHITE_' ; {öâåò
ôèãóðû.
Ââåäåì
óñëîâíîå
îáîçíà÷åíèå}          end;      Width := 40;
//óêàçûâàåì
âûñîòó
íàøåé
êàðòèíêè      Height := 40;
//Óêàçûâàåì
øèðèíó
íàøåé
êàðòèíêè      Figures[i].Parent:=PanelArray[posX,posY];      Transparent:=True;      Figures[i].posX:=X; //
çàïîìèíàåì
êîîðäèíàòû
ôèãóðû      Figures[i].posY:=Y; end; procedure TForm1.FormCreate(Sender: TObject);  
//ñîçäàíèå
ôîðìûvar x,y,i:Integer; 
//ïåðåìåííûåbegin  for x:=1 to 8 do    //îòñ÷åò
ïî
ãîðèçîíòàëè    for y:=1 to 8 do  //îòñ÷åò
ïî
âåðòèêàëè      begin        PanelArray[x,y]:= TDoska.Create(Self); 
//ñîçäàíèå
ïàíåëè        with PanelArray[x,y] do        begin          parent:=form1;      
//îïðåäåëåíèå
ðîäèòåëÿ          PosX:=x;          PosY:=y;          Width:=50;           //øèðèíà
è âûñîòà          Height:=50;          Top:=20+50*(y-1);          Left:=20+50*(x-1);          if (x+y) mod 2 = 1 then     
//÷åðåäîâàíèå
öâåòîâ            Color:=clBlack       //áåëîãî
è ÷åðíîãî          else            Color:=clWhite;        end;    end;  for i:=1 to 8 do      //
ñîçäàíèå è
ðàññòàíîâêà
ìåòîê    begin      LabelArray[i]:=TLabel.create(Form1);      LabelArray[i+8]:=TLabel.Create(Form1);      LabelArray[i+16]:=TLabel.create(Form1);      LabelArray[i+24]:=TLabel.create(Form1);      LabelArray[i].Parent:=form1;      LabelArray[i+8].Parent:=form1;      LabelArray[i+16].Parent:=form1;      LabelArray[i+24].Parent:=form1;      LabelArray[i].Top:=41+(i-1)*50;      LabelArray[i+8].Top:=41+(i-1)*50;      LabelArray[i+16].Top:=424;      LabelArray[i+24].Top:=6;      LabelArray[i].Left:=5;      LabelArray[i+8].Left:=429;      LabelArray[i+16].Left:=41+(i-1)*50;      LabelArray[i+24].Left:=41+(i-1)*50;      LabelArray[i].Caption:=IntToStr(9-i);      LabelArray[i+8].Caption:=IntToStr(9-i);      LabelArray[i+16].Caption:=chr(64+i);      LabelArray[i+24].Caption:=chr(64+i);    end;   Figures[1]:=TPeshka.Create(5,5);    end; end.
|  |   Вопрос задал: Ruslan1993 (статус: Посетитель)Вопрос отправлен: 13 декабря 2011, 17:52
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 13 декабря 2011, 22:40; участников в обсуждении: 3. 
|   | Ruslan1993 (статус: Посетитель), 13 декабря 2011, 18:00 [#1]:забыл сказать , фигуры находяться в ресурсном файле figures.res |  
|   | bugmenot (статус: 3-ий класс), 13 декабря 2011, 20:42 [#2]:Благодаря программированию этого сайтика комментарии превратились в нечитаемое гно. Выкладывайте код на http://everfall.com/paste виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Ruslan1993 (статус: Посетитель), 13 декабря 2011, 20:53 [#3]:я копирнул, а что там делать куда сохранять |  
|   | Ruslan1993 (статус: Посетитель), 13 декабря 2011, 20:53 [#3]:я копирнул, а что там делать куда сохранять |  
|   | Ruslan1993 (статус: Посетитель), 13 декабря 2011, 20:55 [#4]: unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
    private
    Function Shah(color : string) : boolean; 
  procedure OnImageDrop(Sender, Source: TObject; PosX, PosY: Integer);
    procedure OnImageOver(Sender, Source: TObject; PosX, PosY: Integer;
                 State: TDragState; var Accept: Boolean);
 
    { Private declarations }
     public
    { Public declarations }
  end;
//--------------------------------------------------------------------
  TDoska=class(Tpanel)   
  private
  Dx,Dy:Integer;// 
  public
  property PosX:Integer read Dx write Dx;
  property PosY:Integer read Dy write Dy;
  end;
//-----------------------------------------------------------------------
TFigura = class(TImage)
  private
    X,Y: Integer;
    FColor: string;
    property PosX:Integer read X write X;
    property PosY:Integer read Y write Y;
    property Color:string read FColor write FColor;
 
 
function Hod(PosX,PosY:integer): boolean; virtual; abstract;
 
function Jump(PosX,PosY:integer): boolean;
procedure Del; 
    constructor Create(PosX,PosY:Integer);
end;
//-----------------------------------------------------------------------
 
TPeshka = class(TFigura)
  private
 //   Function Hod(X : Tpoint): boolean; override;
  end;
TLadja = class(TFigura)
  private
 //   Function Hod(X : Tpoint): boolean; override;
  end;
TKing = class(TFigura)
  private
  //  Function Hod(X : Tpoint): boolean; override;
  end;
TOficer = class(TFigura)
  private
  //  Function Hod(X : Tpoint): boolean; override;
  end;
TQueen = class(TFigura)
  private
   // Function Hod(X : Tpoint): boolean; override;
  end;
TKon = class(TFigura)
  private
   // Function Hod(X : Tpoint): boolean; override;
  end;
 
//-----------------------------------------------------------------------
var
  Form1: TForm1;
  PanelArray: array[1..8,1..8]of TPanel; 
  PosX,PosY:Integer;                  
  LabelArray: array[1..32] of TLabel; 
  NextTurn: string;             
  Figures: array[1..32] of TFigura; 
  doska:array[1..8,1..8] of Tdoska;
  i,X,Y:Integer;
implementation
{$R *.dfm}  {$R Figures.res}
 
//----------------------------------------------------------------------------
constructor TFigura.Create(PosX,PosY:integer);
begin
  inherited Create(Form1);
  dragmode:= dmAutomatic;
  //OnDragDrop := form1.OnImageDrop;
 // OnDragOver := Form1.OnImageOver;
              if PosY > 4  then
 
          begin
            Picture.Bitmap. LoadFromResourceName(HInstance, \'BLACK_\'
             + Self.ClassName);
            Fcolor := \'BLACK_\'; 
          end
      else
          begin
            Picture. Bitmap.LoadFromResourceName(HInstance, \'WHITE_\'
              + Self.ClassName);
            Fcolor :=\'WHITE_\' ; 
          end;
      Width := 40;
      Height := 40;
      Figures[i].Parent:=PanelArray[X,Y];
      Transparent:=True;
      Figures[i].X:=posX;
      Figures[i].Y:=posY;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);  
var x,y,i:Integer;  
begin
  for x:=1 to 8 do  
    for y:=1 to 8 do  
      begin
        PanelArray[x,y]:= TDoska.Create(Self);
        with PanelArray[x,y] do
        begin
          parent:=form1;      
          PosX:=x;
          PosY:=y;
          Width:=50;          
          Height:=50;
          Top:=20+50*(y-1);
          Left:=20+50*(x-1);
          if (x+y) mod 2 = 1 then    
            Color:=clBlack       
          else
            Color:=clWhite;
        end;
    end;
  for i:=1 to 8 do     
    begin
      LabelArray[i]:=TLabel.create(Form1);
      LabelArray[i+8]:=TLabel.Create(Form1);
      LabelArray[i+16]:=TLabel.create(Form1);
      LabelArray[i+24]:=TLabel.create(Form1);
      LabelArray[i].Parent:=form1;
      LabelArray[i+8].Parent:=form1;
      LabelArray[i+16].Parent:=form1;
      LabelArray[i+24].Parent:=form1;
      LabelArray[i].Top:=41+(i-1)*50;
      LabelArray[i+8].Top:=41+(i-1)*50;
      LabelArray[i+16].Top:=424;
      LabelArray[i+24].Top:=6;
      LabelArray[i].Left:=5;
      LabelArray[i+8].Left:=429;
      LabelArray[i+16].Left:=41+(i-1)*50;
      LabelArray[i+24].Left:=41+(i-1)*50;
      LabelArray[i].Caption:=IntToStr(9-i);
      LabelArray[i+8].Caption:=IntToStr(9-i);
      LabelArray[i+16].Caption:=chr(64+i);
      LabelArray[i+24].Caption:=chr(64+i);
    end;
 
  Figures[1]:=TPeshka.Create(5,5);
 
 
 
 
end;
 
end. |  
|   | Ерёмин А.А. (статус: *Администратор), 13 декабря 2011, 22:40 [#6]:Про местный paste вы не знаете, видимо. Приложения починю. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |