Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Карты   Найти похожие ветки 

 
{ент   (2007-11-08 13:23) [0]

Доброго времени суток. У меня вопрос. Я делаю карточную игру, у создаю карты в run time таким образом
constructor TIMg.MyCreate(im: TForm);
begin
img:=TImage.Create(Self);
img.Picture.LoadFromFile(tr);// tr имя карты, меняет свои значения от 1 до 54
img.Parent:=form1;
img.left:=lefn+lef;
img.Top:=pos1+10;
img.OnClick :=form1.myimageclick;
end;
И я не как не могу понять, как мне при клике на карту, узнать, какая это карта. И так же не знаю как при нажатии на карту переместить её.
Пожалуйста помогите разобраться в этом.
P.S.
Не предлогайте использовать компонент Tcard, я хочу обойтись без него.


 
clickmaker ©   (2007-11-08 13:25) [1]


> Не предлогайте использовать компонент Tcard

а где это такой?

по теме - Tag или Name


 
Ega23 ©   (2007-11-08 13:38) [2]

procedure TForm1.myimageclick(Sender : TObject);
img : TImage;
begin
 if not (Sender is TImage) then Exit;
 img := TImage(Sender);
 Case img.Tag of
  1 :
  2 :
  3 :
  .............
  54 :
 end;
end;


 
Anatoly Podgoretsky ©   (2007-11-08 15:27) [3]

> {ент  (08.11.2007 13:23:00)  [0]

Может зря отказываешь, может тогда не будет вопроса как узнать какая карта.


 
Amoeba ©   (2007-11-08 15:53) [4]

А не лучше ли использовать средства предоставляемые самой Windows? Имеется в виду Cards.dll. В этой библиотеке и сами картинки карт, и все необходимые ф-ии для их отрисовки. Могу поделится модулем работы с ней. Там все очень просто.
Сам я использую собственный самописный компонент (наследник TGraphicControl), использующий эту Cards.dll.


 
clickmaker ©   (2007-11-08 15:54) [5]


> [4] Amoeba ©   (08.11.07 15:53)

может, у него карты с голыми женщинами? )


 
grisme ©   (2007-11-08 19:44) [6]

жжоте %-))


 
Dmitro   (2007-11-09 00:39) [7]

Просто человек начал не с того:

 TMast = (mPik, mTref, mCher, mBub);
 TVes = 6..11;
  TKarta = record
   FMast: TMast;
   FVes:   TVes;
   end;
 TKoloda = object
    Karty: array [0 .. 35] of TKarta;
    procedure Init; // В смысле колоду тасуем
 end;

и т.д. и т.п., а уж картинки к объекту привязать - это не сложно. ..... И сделать метод отображения на к-н TControl"е


 
{RASkov}   (2007-11-09 00:57) [8]

> [4] Amoeba ©   (08.11.07 15:53)
> Могу поделится модулем работы с ней.

можно сюда -> cemvol2005@smtp.ru
ну или куда-нибудь на общее обозрение...


 
Amoeba ©   (2007-11-09 20:33) [9]


> {RASkov}   (09.11.07 00:57) [8]
>
> > [4] Amoeba ©   (08.11.07 15:53)
> > Могу поделится модулем работы с ней.
>
> можно сюда -> cemvol2005@smtp.ru
> ну или куда-нибудь на общее обозрение...
>

По просьбе трудящихся API к cards.dll:

unit Cards32;

interface

uses Windows, Graphics;

const
 { CdtDraw/Ext, nDraw Field }
 C_FACES = 0;
 C_BACKS = 1;
 C_INVERT = 2;
 { Special Cards (C_BACKS) }
 CrossHatch = 53;
 Weave1 = 54;
 Weave2 = 55;
 Robot = 56;
 Flowers = 57;
 Vine1 = 58;
 Vine2 = 59;
 Fish1 = 60;
 Fish2 = 61;
 Shells = 62;
 Castle = 63;
 Island = 64;
 CardHand = 65;
 UNUSED = 66;
 TheX = 67;
 TheO = 68;

 { Init DLL, Return Cards Size (pixels) }
function cdtInit(var Width, Height: integer): Integer; stdcall;
{ Draw one of the 68(-1) card at X,Y, Color=highlight color (?) }
function cdtDraw(DC: HDC; X, Y, Card, Flag: integer; Color: TColor): integer;
stdcall;
{ Same as above + draw Width & Height }
function cdtDrawExt(DC: HDC; X, Y, W, H, Card, Flag: integer; Color: TColor):
 Integer; stdcall;
//function cdtAnimate(DC: HDC; Back: Integer; X, Y, State: Integer): integer;
//  stdcall;
{ Done }
function cdtTerm: Integer;

implementation

{ Init DLL, Return Cards Size (pixels) }
function CdtInit(var Width, Height: integer): integer; external "CARDS.DLL";
{ Draw one of the 68(-1) card at X,Y, Color=highlight color (?) }

function CdtDraw(DC: HDC; X, Y, Card, Flag: integer; Color: TColor): integer;
 external "CARDS.DLL";
{ Same as above + draw Width & Height }

function CdtDrawExt(DC: HDC; X, Y, W, H, Card, Flag: integer; Color: TColor):
 Integer; external "CARDS.DLL";

function CdtAnimate(DC: HDC; Back: Integer; X, Y, State: Integer): integer;
 external "CARDS.DLL";
{ Done }

function CdtTerm: integer; external "CARDS.DLL";

end.



В начале программы вызывается CdtInit, в завершении обязательно вызывать CdtTerm.

Персонально выслал мылом (это + бонус).


 
{RASkov}   (2007-11-09 20:39) [10]

> [9] Amoeba ©   (09.11.07 20:33)
> Персонально выслал мылом (это + бонус).

:) Спасибо



Страницы: 1 вся ветка

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
11-1178473386
Dmitry___
2007-05-06 21:43
2007.12.02
KOLProject - Build := TRUE


2-1194429628
Lera
2007-11-07 13:00
2007.12.02
Наименование продукта


15-1193684400
Evanescence
2007-10-29 22:00
2007.12.02
Redhat 9 на VirtualPC


15-1193987752
Still Swamp
2007-11-02 10:15
2007.12.02
Где добыть интерпритатор матвыражений?


11-1176540781
Vladimir Kladov
2007-04-14 12:53
2007.12.02
Обсуждение замечаний и предложений.