![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте всем! Дали задание написать шахматы. не могу откомпилировать конструктор. Препод не знает в чем ошибка.
unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, StdCtrls; type TMainForm = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; //------------объявление класса фигура------------ type Tip1=packed record X: byte; Y: byte; end; TCol=(black,white); type TFigura=class(TObject) private vid:TImage; col:TCol; i,j:integer; constructor CreateFigura(col:TCol; vid:TImage; i,j:integer); virtual; abstract; protected F1:Tpoint; function proverka(i,j:integer):Boolean; virtual; procedure P1(mesto:Tpoint); property mesto:Tpoint read F1 write P1; destructor Destroy; end; //-------------------объявление класса пешка------------------ type Tpeshka=class(TFigura) function proverka(i,j:Integer):Boolean; override; constructor CreateFigura(col:TCol; vid:TImage; i,j:integer); override; end; //-------------------объявление класса ферзь------------------ type Tferz=class(TFigura) function proverka(i,j:Integer):Boolean; override; end; //-------------------объявление ладьи ------------------ type Tladia=class(TFigura) function proverka(i,j:Integer):Boolean; override; end; //-------------------объявление коня ------------------ type Tkon=class(TFigura) function proverka(i,j:Integer):Boolean; override; end; //-------------------объявление слона ------------------ type Tslon=class(TFigura) function proverka(i,j:Integer):Boolean; override; end; //-------------------объявление короля ------------------ type Tkorol=class(TFigura) function proverka(i,j:Integer):Boolean; override; end; var MainForm: TMainForm; Desk: array[1..8,1..8] of TShape; KD: array[1..8] of TLabel; KD1: array[1..8] of TLabel; implementation {$R *.dfm} procedure TMainForm.FormCreate(Sender: TObject); var i, j, t :integer; begin //Создаем игровое поле for i:=1 to 8 do for j:=1 to 8 do begin Desk[i,j]:=TShape.Create(MainForm); Desk[i,j].Parent:=MainForm; Desk[i,j].Left:=j*50; Desk[i,j].Top:=i*50; Desk[i,j].Width:=50; Desk[i,j].Height:=50; //Закрашиваем нужные клеточки if (i+j) mod 2=0 then Desk[i,j].Brush.Color:=clBlack; end; //создаем подписи игрового поля for t:=1 to 8 do begin KD[t]:=TLabel.Create(MainForm); KD[t].Parent:=MainForm; KD[t].Left:=t*54; KD[t].Top:=20; KD[t].Width:=50; KD[t].Height:=30; KD[t].Caption:=chr(64+t); KD1[t]:=TLabel.Create(MainForm); KD1[t].Parent:=MainForm; KD1[t].Left:=t*54; KD1[t].Top:=470; KD1[t].Width:=30; KD1[t].Height:=50; KD1[t].Caption:=chr(64+t); end; for t:=1 to 8 do begin KD[t]:=TLabel.Create(MainForm); KD[t].Parent:=MainForm; KD[t].Left:=20; KD[t].Top:=t*54; KD[t].Width:=30; KD[t].Height:=50; KD[t].Caption:=chr(48+t); KD1[t]:=TLabel.Create(MainForm); KD1[t].Parent:=MainForm; KD1[t].Left:=470; KD1[t].Top:=t*54; KD1[t].Width:=30; KD1[t].Height:=50; KD1[t].Caption:=chr(48+t); end; end; //------------------реализация класса фигура function TFigura.proverka(i,j:Integer):Boolean; begin end; procedure TFigura.P1(mesto:Tpoint); begin Self.vid.Top:=mesto.x*50; self.vid.Left:=mesto.y*50; end; constructor Tpeshka.CreateFigura(col:TCol; vid:TImage;i,j:integer); var s:string; begin s:=Self.ClassName; create; vid:=TImage.Create(MainForm); vid.Picture.LoadFromFile(''); mesto.X:=i; mesto.Y:=j; end; destructor TFigura.Destroy; begin end; function Tpeshka.proverka(i,j:integer):boolean; begin end; function Tladia.proverka(i,j:integer):boolean; begin end; function Tkon.proverka(i,j:integer):boolean; begin end; function Tslon.proverka(i,j:integer):boolean; begin end; function Tkorol.proverka(i,j:integer):boolean; begin end; function Tferz.proverka(i,j:integer):boolean; begin end; //---------------------при закрытии---------------------------- procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); var i,j :integer; begin // освобождаем переменные for i:=1 to 8 do for j:=1 to 8 do Desk[i,j].Free; for i:=1 to 8 do begin KD[i].Free; KD1[i].Free; end; end; end. |
#2
|
||||
|
||||
![]() Какую дельфи быдаёт ошибку?
|
#3
|
|||
|
|||
![]() Код:
constructor Tpeshka.CreateFigura(col:TCol; vid:TImage;i,j:integer); var s:string; begin s:=Self.ClassName; create; vid:=TImage.Create(MainForm); vid.Picture.LoadFromFile(''); mesto.X:=i; //////////////////////////////////// mesto.Y:=j; //////////////////////////////////// end; Либо объявите свойства X и Y отдельно, либо присваивайте значение так Код:
... mesto := Point(i, j); ... Ну и, чтобы два раза не вставать, зачем вы передаете в конструктоh параметр vid, если вы все равно его создаете внутри конструктора? Может вы хотите его использовать потом вне конструктора - но тогда нужно передавать его по ссылке, иначе он просто бесполезен. |