Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 813

/ вопрос открыт /

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

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, ExtCtrls, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. procedure FormCreate(Sender: TObject);
  12. // procedure FormClose(Sender: TObject; var Action: TCloseAction);
  13. private
  14. // Function Shah(color : string) : boolean; // ìåòîä äëÿ ïðîâåðêè íà øàõ
  15. // procedure OnImageDrop(Sender, Source: TObject; PosX, PosY: Integer);
  16. // procedure OnImageOver(Sender, Source: TObject; PosX, PosY: Integer;
  17. // State: TDragState; var Accept: Boolean);
  18.  
  19. { Private declarations }
  20. public
  21. { Public declarations }
  22. end;
  23. //--------------------------------------------------------------------
  24. TDoska=class(Tpanel) {ÊËÀÑÑ - ÄÎÑÊÀ}
  25. private
  26. Dx,Dy:Integer;// êîîðäèíàòû êëåòêè
  27. public
  28. property PosX:Integer read Dx write Dx;
  29. property PosY:Integer read Dy write Dy;
  30. end;
  31. //-----------------------------------------------------------------------
  32. TFigura = class(TImage)
  33. private
  34. X,Y: Integer;
  35. FColor: string;
  36. property PosX:Integer read X write X;
  37. property PosY:Integer read Y write Y;
  38. property Color:string read FColor write FColor;
  39.  
  40. //Ïðîâåðÿåò ïðàâèëüíîñòü õîäà
  41. //function Hod(PosX,PosY:integer): boolean; virtual; abstract;
  42. //Ïðîâåðÿåò íà îòñóòñâèå çàíÿòûõ êëåòîê ïà ïóòè õîäà
  43. //function Jump(PosX,PosY:integer): boolean;
  44. //procedure Del; //Ïðîèçâîäèò óäàëåíèå ñðóáëåííîé ôèãóðû
  45. constructor Create(PosX,PosY:Integer);
  46. end;
  47. //-----------------------------------------------------------------------
  48. // ïîäêëàññû
  49. TPeshka = class(TFigura)
  50. private
  51. // Function Hod(X : Tpoint): boolean; override;
  52. end;
  53. TLadja = class(TFigura)
  54. private
  55. // Function Hod(X : Tpoint): boolean; override;
  56. end;
  57. TKing = class(TFigura)
  58. private
  59. // Function Hod(X : Tpoint): boolean; override;
  60. end;
  61. TOficer = class(TFigura)
  62. private
  63. // Function Hod(X : Tpoint): boolean; override;
  64. end;
  65. TQueen = class(TFigura)
  66. private
  67. // Function Hod(X : Tpoint): boolean; override;
  68. end;
  69. TKon = class(TFigura)
  70. private
  71. // Function Hod(X : Tpoint): boolean; override;
  72. end;
  73.  
  74. //-----------------------------------------------------------------------
  75. var
  76. Form1: TForm1;
  77. PanelArray: array[1..8,1..8]of TPanel; //ìàññèâ èç ïàíåëåé
  78. PosX,PosY:Integer; //ïîëîæåíèÿ äëÿ ôèãóð
  79. LabelArray: array[1..32] of TLabel; // ìàññèâ èç ìåòîê
  80. NextTurn: string; //öâåò
  81. Figures: array[1..32] of TFigura; //ôèãóðû
  82. doska:array[1..8,1..8] of Tdoska;
  83. i,X,Y:Integer;
  84. implementation
  85. {$R *.dfm} {$R Figures.res}
  86.  
  87. //----------------------------------------------------------------------------
  88. constructor TFigura.Create(PosX,PosY:integer);
  89. begin
  90. inherited Create(Form1);
  91. dragmode:= dmAutomatic;
  92. //OnDragDrop := form1.OnImageDrop;
  93. // OnDragOver := Form1.OnImageOver;
  94. {Ñîáûòèå Drag&Drop ðàçäåëåíî íà äâà: DragOver è DragDrop, êîòîðûå
  95. îòâå÷àþò çà ïåðåíîñ îáúåêòà è áðîñàíèå åãî íà äðóãîé îáúåêò, ñîîòâåòñòâåííî.}
  96. if PosY > 4 then
  97.  
  98. begin
  99. Picture.Bitmap. LoadFromResourceName(HInstance, 'BLACK_'
  100. + Self.ClassName);
  101. Fcolor := 'BLACK_'; {öâåò ôèãóðû. Ââåäåì óñëîâíîå îáîçíà÷åíèå}
  102. end
  103. else
  104. begin
  105. Picture. Bitmap.LoadFromResourceName(HInstance, 'WHITE_'
  106. + Self.ClassName);
  107. Fcolor :='WHITE_' ; {öâåò ôèãóðû. Ââåäåì óñëîâíîå îáîçíà÷åíèå}
  108. end;
  109. Width := 40; //óêàçûâàåì âûñîòó íàøåé êàðòèíêè
  110. Height := 40; //Óêàçûâàåì øèðèíó íàøåé êàðòèíêè
  111. Figures[i].Parent:=PanelArray[posX,posY];
  112. Transparent:=True;
  113. Figures[i].posX:=X; // çàïîìèíàåì êîîðäèíàòû ôèãóðû
  114. Figures[i].posY:=Y;
  115.  
  116. end;
  117.  
  118. procedure TForm1.FormCreate(Sender: TObject); //ñîçäàíèå ôîðìû
  119. var x,y,i:Integer; //ïåðåìåííûå
  120. begin
  121. for x:=1 to 8 do //îòñ÷åò ïî ãîðèçîíòàëè
  122. for y:=1 to 8 do //îòñ÷åò ïî âåðòèêàëè
  123. begin
  124. PanelArray[x,y]:= TDoska.Create(Self); //ñîçäàíèå ïàíåëè
  125. with PanelArray[x,y] do
  126. begin
  127. parent:=form1; //îïðåäåëåíèå ðîäèòåëÿ
  128. PosX:=x;
  129. PosY:=y;
  130. Width:=50; //øèðèíà è âûñîòà
  131. Height:=50;
  132. Top:=20+50*(y-1);
  133. Left:=20+50*(x-1);
  134. if (x+y) mod 2 = 1 then //÷åðåäîâàíèå öâåòîâ
  135. Color:=clBlack //áåëîãî è ÷åðíîãî
  136. else
  137. Color:=clWhite;
  138. end;
  139. end;
  140. for i:=1 to 8 do // ñîçäàíèå è ðàññòàíîâêà ìåòîê
  141. begin
  142. LabelArray[i]:=TLabel.create(Form1);
  143. LabelArray[i+8]:=TLabel.Create(Form1);
  144. LabelArray[i+16]:=TLabel.create(Form1);
  145. LabelArray[i+24]:=TLabel.create(Form1);
  146. LabelArray[i].Parent:=form1;
  147. LabelArray[i+8].Parent:=form1;
  148. LabelArray[i+16].Parent:=form1;
  149. LabelArray[i+24].Parent:=form1;
  150. LabelArray[i].Top:=41+(i-1)*50;
  151. LabelArray[i+8].Top:=41+(i-1)*50;
  152. LabelArray[i+16].Top:=424;
  153. LabelArray[i+24].Top:=6;
  154. LabelArray[i].Left:=5;
  155. LabelArray[i+8].Left:=429;
  156. LabelArray[i+16].Left:=41+(i-1)*50;
  157. LabelArray[i+24].Left:=41+(i-1)*50;
  158. LabelArray[i].Caption:=IntToStr(9-i);
  159. LabelArray[i+8].Caption:=IntToStr(9-i);
  160. LabelArray[i+16].Caption:=chr(64+i);
  161. LabelArray[i+24].Caption:=chr(64+i);
  162. end;
  163.  
  164. Figures[1]:=TPeshka.Create(5,5);
  165.  
  166.  
  167.  
  168.  
  169. end;
  170.  
  171. end.


Ruslan1993 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ruslan1993 (статус: Посетитель)
Вопрос отправлен: 13 декабря 2011, 17:52
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 13 декабря 2011, 22:40; участников в обсуждении: 3.
Ruslan1993

Ruslan1993 (статус: Посетитель), 13 декабря 2011, 18:00 [#1]:

забыл сказать , фигуры находяться в ресурсном файле figures.res
bugmenot

bugmenot (статус: 3-ий класс), 13 декабря 2011, 20:42 [#2]:

Благодаря программированию этого сайтика комментарии превратились в нечитаемое гно. Выкладывайте код на http://everfall.com/paste
виконання програми розпочинається з того самого мiсця, де призупинилося.

Ruslan1993

Ruslan1993 (статус: Посетитель), 13 декабря 2011, 20:53 [#3]:

я копирнул, а что там делать куда сохранять
Ruslan1993

Ruslan1993 (статус: Посетитель), 13 декабря 2011, 20:53 [#3]:

я копирнул, а что там делать куда сохранять
Ruslan1993

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.
Ruslan1993

Ruslan1993 (статус: Посетитель), 13 декабря 2011, 21:06 [#5]:

http://www.everfall.com/paste/id.php?b0toxlzpjgkk

или вот . я выложил по предлжению bugmenot.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 13 декабря 2011, 22:40 [#6]:

Про местный paste вы не знаете, видимо. Приложения починю.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.04 сек.