Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Genia007
Статус: Студент
Рейтинг: 40
∙ повысить рейтинг >>
Greyss
Статус: 5-й класс
Рейтинг: 36
∙ повысить рейтинг >>
Chesnochkov Vitaliy Viktorovich
Статус: 3-й класс
Рейтинг: 27
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1322
от 11.03.2009, 11:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 425, Экспертов: 48
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 162179: Сдравствуите ув. эксперты помогите реализовать drag and drop хода фигуры.Просто ход проверку делать не надо !!!! Код программы: <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pre style="margin: 0px;...


Вопрос № 162.179
Сдравствуите ув. эксперты помогите реализовать drag and drop хода фигуры.Просто ход проверку делать не надо !!!!
Код программы:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
TFigura=class(Tobject)
private
kartink a:Timage;
color:boolean;
tyt_x,tyt_y:integer;
procedure pol_x(x:integer);
procedure pol_y(y:integer);
function hod_figyri(x,y:integer):boolean; virtual;
property mesto_x:integer
read tyt_x
write pol_x;
property mesto_y:integer
read tyt_y
write pol_y;
constructor FiguraCreat(x,y:integer);
destructor destroy;

end;
Tpeshka=class(TFigura)
function hod_figyri(x,y:integer):boolean; override;

end;
Tslon=class(TFigura)
function hod_figyri(x,y:integer):boolean; override;

end;
Tkon=class(TFigura)
function hod_figyri(x,y:integer):boolean; override;

end;
Tladya=class(TFigura)
function hod_figyri(x,y:integer):boolean; override;

end;
Tkorol=class(TFigura)
function hod_figyri(x,y:integer):boolean; override;

end;
Tkoroleva=class(TFigura)
function hod_figyri(x,y:integer):boolean; override;

end;


var
Form1: TForm1;
px,py,x,y,nomer:integer;
mass: array[1..8,1..8]of TShape;
labx:array[1..8,1..2] of Tlabel;
laby:array[1..8,1..2] of Tlabel;
globmass:array[1..32] of TFigura;
pesh:array[1..8,1..2] of Tpeshka;
slon:array[1..2,1..2] of Tslon;
kon:array[1..2,1..2] of Tkon;
lad:array[1..2,1..2] of Tladya;
korol:array[1..2] of Tkorol;
koroleva:array[1..2] of Tkoroleva;
implementation

uses Unit2;

{$R *.dfm}
{$R *.res}
constructor TFigura.FiguraCreat(x,y:integer);
var
name:string;
begin
name:=ClassName;
create;
kartinka:=timage.Create(form1);
kartinka.Parent:=form1;
kartinka.Width:=50;
kartinka.Height:=50;
mesto_x:=x;
mesto_y:=y;
with Tfigura do
begin
mass[x,y].DragMode:=dmAutomatic;
mass[x,y].OnDragOver:=form1.FormDragOver;
mass[x,y].OnDragDrop:=form1.FormDragDrop;
end;

if (y<4) then
begin
Color:=false;
kartink a.Transparent:=true;
kartinka.Picture.Bitmap.LoadFromResourceName(Hinstance,name+'black');
end
else
begin
Color:=true;
kartinka.Transparent:=true;
kartinka.Picture.Bitmap.LoadFromResourceName(Hinstance,name+'white');
end;
end;
destructor TFigura.destroy;
Begin
kartinka.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Height:=480;
form1.Width:=460;
form1.Caption:='Шахматы';
//form1.TransparentColor:=true;
//form1.TransparentColorValue:=clwhite ;
for x:=1 to 8 do
for y:=1 to 8 do
begin
mass[x,y]:=TShape.Create(Self);
mass[x,y].Parent:=Self;
mass[x,y].Left:=50*x-30;
mass[x,y].Top:=50*y-30;
mass[x,y].Width:=50;
mass[x,y].Height:=50;

if (x+y)mod 2=0 then
mass[x,y].Brush.Color:=rgb(255,255,255)
else
mass[x,y].Brush.Color:=rgb(0,0,0);
end;
for x:=1 to 8 do
for y:=1 to 2 do
begin
labx[x,y]:=Tlabel.Create(form1);
labx[x,y].Parent:=form1;
labx[x,y].Left:=50*x-10;
labx[x,y].Font.Size:=10;
labx[x,y].Font.Color:=rgb(253,117,40);
labx[x,y].Font.Style:=[fsBold];
labx[x,y].Transparent:=true;
if y=1 then
begin
labx[x,y].Top:=0;
labx[x,y].Caption:=chr(64+x);
end
else
begin
labx[x,y].Top:=425;
labx[x,y].Caption:=chr(64+x);
end;

laby[x,y]:=Tlabel.Create(form1);
laby[x,y].Parent:=form1;
laby[x,y].Top:=50*x-10;
laby[x,y].Font.Size:=10;
laby[x,y].Font.Color:=rgb(253,117,40);
laby[x,y].Font.Style:=[fsBold];
laby[x,y].Transparent:=true;
if y=1 then
begin
laby[x,y].Left:=5;
laby[x,y].Caption:=inttostr(9-x);
end
else
begin
laby[x,y].Left:=430;
laby[x,y].Caption:=inttostr(9-x);
end;
end;
for y := 1 to 2 do
begin
koroleva[y]:=Tkoroleva.FiguraCreat(x,y*y+y+(y-1));
koroleva[y].kartinka.Left:=25*x;
koroleva[y].kartinka.Top:=350*y-325;
nomer:=nomer+1;
globmass[nomer]:=koroleva[y];
end;
for x := 1 to 2 do
for y := 1 to 2 do
begin
lad[x,y]:=Tladya.FiguraCreat(x,y*y+y+(y-1));
lad[x,y].kartinka.Left:=350*x-325;
lad[x,y].kartinka.Top:=350*y-325;
nomer:=nomer+1;
globmass[nomer]:=lad[x,y];
end;
for y := 1 to 2 do
begin
korol[y]:=Tkorol.FiguraCreat(x,y*y+y+(y-1));
korol[y].kartinka.Left:=59*x;
korol[y].kartinka.Top:=350*y-325;
nomer:=nomer+1;
globmass[nomer]:=korol[y];
end;
for x := 1 to 2 do
for y := 1 to 2 do
begin
kon[x,y]:=Tkon.FiguraCreat(x,y*y+y+(y-1));
kon[x,y].kartinka.Left:=250*x-173;
kon[x,y].kartinka.Top:=350*y-32 5;
nomer:=nomer+1;
globmass[nomer]:=kon[x,y];
end;
for x := 1 to 2 do
for y := 1 to 2 do
begin
slon[x,y]:=Tslon.FiguraCreat(x,y*y+y+(y-1));
slon[x,y].kartinka.Left:=153*x-29;
slon[x,y].kartinka.Top:=350*y-325;
nomer:=nomer+1;
globmass[nomer]:=slon[x,y];
end;
for x:=1 to 8 do
for y:=1 to 2 do
begin

pesh[x,y]:=Tpeshka.FiguraCreat(x,y*y+y+(y-1));
pesh[x,y].kartinka.Left:=51*x-30;
pesh[x,y].kartinka.Top:=246*y-170;
nomer:=nomer+1;
globmass[nomer]:=pesh[x,y];
end;
end;

procedure Tfigura.pol_x(x:integer);
begin
if not ((tyt_y>0) and (tyt_y<9)) then tyt_y:=1;
begin
kartinka.Left:=mass[x,tyt_y].Left+5;
kartinka.top:=mass[x,tyt_y].Top+5;
end;
tyt_x:=x;
end;
procedure TFigura.pol_y(y:integer);
begin
if not ((tyt_x>0) and (tyt_x<9)) then tyt_x:=1;
begin
kartinka.Left:=mass[y,tyt_x].Left+5;
kartinka.top:=mass[y,tyt_x].Top+5;
end;
tyt_y:=y;
end;
function TFigura.hod_figyri(x,y:integer):boolean;
begin
end;
function Tpeshka.hod_figyri(x,y:integer):boolean;
begin
end;
function Tkon.hod_figyri(x,y:integer):boolean;
begin
end;
function Tslon.hod_figyri(x,y:integer):boolean;
begin
end;
function Tladya.hod_figyri(x,y:integer):boolean;
begin
end;
function Tkorol.hod_figyri(x,y:integer):boolean;
begin
end;
function Tkoroleva.hod_figyri(x,y:integer):boolean;
begin
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
for x:=1 to 8 do
for y:=1 to 8 do
begin
mass[x,y].Destroy;
end;
for x:=1 to 8 do
for y:=1 to 2 do
begin
labx[x,y].Destroy;
laby[x,y].Destroy;
end;
end;

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
with Source as Tfigura do
begin
mass[x,y].Left:= X;
mass[x,y].Top := X;
end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source is Tfigura;
end;

end.


P.S. фигуры просто должны перемещаться по доске проверку хода делать не надо!!!
Отправлен: 06.03.2009, 11:04
Вопрос задал: Киселев Дмитрий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Влвдимир
Здравствуйте, Киселев Дмитрий Алексеевич!

В приложении рабочий код, перемещающий фигуры.
Удачи!

Приложение:

Ответ отправил: Влвдимир (статус: 2-й класс)
Ответ отправлен: 06.03.2009, 20:40

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 245239 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное