Текущий архив: 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.47 MB
Время: 0.036 c