![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Карточная игра [Delphi, Windows]
Филипок:) © (2006-07-30 17:44:00)Привет всем,я решил написать карточную игру, и у меня возникли проблемы. У меня есть 54 фотографии карт и 54 image и мне нужно что бы в них загружались картинки карт, причем при каждом запуске игры должны появляться разные карты.
P.S. Наверно вопрос дурацкий но я ещё учусь, так что не обежайтесь :)
Rial (2006-07-30 17:55:00) [21]Я не ошибся, именно 54 TImage ??
Const MaxCards = 54;
Type
TCardId = 0..MaxCards - 1;
TCards = Array[TCardsId] of TBitmap;
Var
Cards : TCards;
...
OnCreate:
For I:=Low(TCardId) to High(TCardId) do begin
Cards[I]:=TBitmap.Create;
Cards[I].LoadFromFile('Cards\'+IntToHex(I,2)+'.bmp');
end;
...
OnDestroy:
For I:=Low(TCardId) to High(TCardId) do
Cards[I].Free;
Про Image забудь.
Испрользуй BitBlt или на крайний случай Cards[I].Draw(..);
Все это дело рисуй в OnPaint формы.
Про разные карты что то не понял.
В смысле, тебе эх перемешать надо ?
Type
TCardsRihe = Array[TCardId] of TCardId;
Здесь у нас колода, где указывается, на каком месте какая карта лежит
Var
CardRihe : TCardRihe;
...
Мешаем колоду
procedure Swap(Const A, B : TCardId);
Var Buf : TCardId;
begin
Buf:=CardTihe[A];
CardRihe[A]:=CardRihe[B];
CardRihe[B]:=Buf;
end;
For I:=Low(TCardId) to High(TCardId) do
CardRihe[I]:=I;
For I:=Low(TCardId) to High(TCardId) do
For J:=I+1 to High(TCardId) do
If (Random(2) = 0)then Swap(I, J);
Тупо, но потом пооптимизируешь на досуге.