Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
{ент   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
15-1193244749
vasIZmax
2007-10-24 20:52
2007.12.02
Что это было?


15-1193729620
pathfinder
2007-10-30 10:33
2007.12.02
Шифрование исполняемых файлов.


15-1193749434
Черный Шаман
2007-10-30 16:03
2007.12.02
Разводка кабеля питания.


2-1194438063
fart
2007-11-07 15:21
2007.12.02
Вопрос по Edit


3-1184757227
Plm
2007-07-18 15:13
2007.12.02
Ошибка: Недостаточно сведений ключевого поля для обновления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский