Консультация № 187490
28.06.2013, 11:06
78.80 руб.
0 7 1
Здравствуйте! Прошу помощи в следующем вопросе:
Требуется показать перемещение одной фигуры на шахматной доске.
Delphi-7. Вопрос актуален до завтра. Спасибо

Обсуждение

Неизвестный
28.06.2013, 11:36
общий
28.06.2013, 11:38
Адресаты:
А в чём сложность?

Код:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
shp1: TShape;
btn1: TBitBtn;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var i:Integer;
begin
for i:=0 to 100 do
begin
shp1.Left := shp1.Left +1;
shp1.Top := shp1.top +1;
Form1.Repaint;
Sleep(100);
Application.ProcessMessages;
end;
end;

end.


Нарисовать шахматную фигуру?
Её через регион можно создать но чуть сложнее будет.
Я например коня точно не возьмусь сделать, делается над TShape, пример могу привести - там просто надо чётко отслеживать перекрытие областей, для шахмат работа одноразовая сделать можно... если очень нужно.
давно
Академик
320937
2216
28.06.2013, 12:09
общий
Добрый день! Можете выложить весь проект?
Неизвестный
28.06.2013, 12:25
общий
Конечно:
простой проект
Вместо Tshape2 можно картинку шахматной доски разместить.
О!
Чё это я... можно еще проще - Image !!! И всё будет вообще класс.

Подождите переделаю еще пришлю.
Неизвестный
28.06.2013, 12:47
общий
Адресаты:
Готово!
С доской и фигурой.
Достаточно?
И даже с прозрачностью :).

Проект
Неизвестный
28.06.2013, 12:49
общий
28.06.2013, 12:51
Адресаты:
Если надо добавлю комментарией как всё собрать :).
Единственный минус моргает... прорисовка, но так навскидку не вспомню как это устраняется, может скорость поменьше поставить...
давно
Академик
320937
2216
28.06.2013, 13:03
общий
28.06.2013, 13:51
Спасибо, можно оформить ответ, если не затруднит. Комментарии не нужны.
У меня там только не 42, а 45 получается :)
Неизвестный
28.06.2013, 14:10
общий
это ответ
Здравствуйте, lamed!

В простейшем варианте "Проект с шахматной доской и ферзем" на форму кладется два объекта TImage.
В первый загружается изображение шахматной доски, во второй изображение фигуры (в моем проекте это ферзь).
Далее по нажатию кнопки второму изображению передаются новые координаты слева и сверху относительно формы (с приращением на 1).
Чтобы создать эффект передвижения фигуры по доске в цикл вставляются три инструкции:

Form1.Repaint; //перерисовать окно
Sleep(50); //подождать 50 мс
Application.ProcessMessages; //освободить приложение чтобы отобразилась прорисовка

Минус проекта - происходит мерцание формы, но это уже другая вполне разрешимая задача...

УДАЧИ !!!
5
Спасибо!
Форма ответа