|
Вопрос # 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 вы не знаете, видимо. Приложения починю.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|