hidrau
asked on
Scramble cards in animate way
Hello Guys
I have a TflowPanel and some cards on it, I'd like to scramble the cards in a animate way, where the cards could be scrambled as it was change place with another randomly and it is possible to see them floating from a place to another.
Well, I did a kind of scramble only changing the image of the pictures, but nothing visual.
I accept any animation proposal only to make this more interesting.
Thanks
Alexandre
ScrambleCards.zip
I have a TflowPanel and some cards on it, I'd like to scramble the cards in a animate way, where the cards could be scrambled as it was change place with another randomly and it is possible to see them floating from a place to another.
Well, I did a kind of scramble only changing the image of the pictures, but nothing visual.
I accept any animation proposal only to make this more interesting.
Thanks
Alexandre
ScrambleCards.zip
ASKER
Sinisav, once again, I thank you a lot. I am gonna try it.
Tell me, what delphi version do you use?
Tell me, what delphi version do you use?
For this example Delphi 2007.
ASKER
For my application, I use Delphi XE4.
I have used for a long time Delphi 7, but now, I am using it only at my job.
I don't like delphi 7 anymore. After working with Delphi XE4, I don't want to work with D7 in my applications.
Have you tried XE4?
I have used for a long time Delphi 7, but now, I am using it only at my job.
I don't like delphi 7 anymore. After working with Delphi XE4, I don't want to work with D7 in my applications.
Have you tried XE4?
I work on XE3 too. My example should work on newer versions. Maybe some uses stuff modification is needed.
I think you need some pre-work done first before you do your scrambling. Personally, I would use a TComponentList to store and maintain TImages (cards).
You could use one list to store the entire deck and another one to store the current hand (7 random cards)
You can dynamically create your lists at runtime and add your all your images to the deck on start up, then randomly select cards from deck to add to current hand.
The TComponentList provides properties and methods to add, delete, rearrange, locate, access, and sort components (TImages).
From Delphi help " TComponentList controls the memory of its components; unless the OwnsObjects property
is set to false (or the components are removed with the Extract method). TComponentList frees its components
when they are removed from the list or when the TComponentList instance is itself destroyed."
OTTOMH
var
img: TImage;
Deck, Hand: TComponentList;
I: Intger;
card: integer;
Rondomize();
Deck:= TComponentList.Create;
try
//Add cards to deck
for I:= 1 to 52 do
begin
img:= TImage.Create(nil)
Img.Loadfromfile('card' + IntToStr(I) + '.jpg' )'
Deck.Add(img);
end;
finally
Deck.Free
end;
Hand:= TComponentList.Create;
try
//Add cards to list Hand here
for I:= 1 to 7 do
begin
//Card = random # from 1 to 52
//select the card from the deck and add it to the Hand
end;
finally
Hand.Free
end;
//Now
Step through your hand and display the cards on your form or FlowPanel
adding the animation you need
You could use one list to store the entire deck and another one to store the current hand (7 random cards)
You can dynamically create your lists at runtime and add your all your images to the deck on start up, then randomly select cards from deck to add to current hand.
The TComponentList provides properties and methods to add, delete, rearrange, locate, access, and sort components (TImages).
From Delphi help " TComponentList controls the memory of its components; unless the OwnsObjects property
is set to false (or the components are removed with the Extract method). TComponentList frees its components
when they are removed from the list or when the TComponentList instance is itself destroyed."
OTTOMH
var
img: TImage;
Deck, Hand: TComponentList;
I: Intger;
card: integer;
Rondomize();
Deck:= TComponentList.Create;
try
//Add cards to deck
for I:= 1 to 52 do
begin
img:= TImage.Create(nil)
Img.Loadfromfile('card' + IntToStr(I) + '.jpg' )'
Deck.Add(img);
end;
finally
Deck.Free
end;
Hand:= TComponentList.Create;
try
//Add cards to list Hand here
for I:= 1 to 7 do
begin
//Card = random # from 1 to 52
//select the card from the deck and add it to the Hand
end;
finally
Hand.Free
end;
//Now
Step through your hand and display the cards on your form or FlowPanel
adding the animation you need
ASKER
ASKER
Hello livestuff,
I need to understand many thing on this area. For example, the code that Sinisav gave me, it is very advanced to me. I don't have a good knowledge on delphi, my work is only with database and reports in Delphi.
I need to understand many thing on this area. For example, the code that Sinisav gave me, it is very advanced to me. I don't have a good knowledge on delphi, my work is only with database and reports in Delphi.
Strange, I start example in XE3 and same happens. Seems that this flowpanel is changed/broken from D2007. Will look ....
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks, I am gonna try afterwards.
Sinisav, what book could you recommend me to read where I can reach better knowledge on Delphi and animation? That is, if you know one :)
Sinisav, what book could you recommend me to read where I can reach better knowledge on Delphi and animation? That is, if you know one :)
Mastering ... books by Marco Cantù are good source - and source code of examples are available too....
More components which can help you, to teach you, are on Torry:
http://www.torry.net/pages .php?id=17 6
http://www.torry.net/pages .php?id=17 2
...like TAnimator component.
More components which can help you, to teach you, are on Torry:
http://www.torry.net/pages
http://www.torry.net/pages
...like TAnimator component.
ASKER
Worked perfectly friend, thanks very much
Sorry, It was Holiday here (Thanksgiving) and I had to go away for a couple of days.
I still think you should have gone the data structure router, bt Im glad you got a solution. I haven't looked at it yet.
I still think you should have gone the data structure router, bt Im glad you got a solution. I haven't looked at it yet.
There are parameters to set:
amplitude - how high card goes
step - lower step (from 1..100) - smother animation
delay - delay between two frames
Have fun!
ImageWin.zip
ScrambleCards2.zip