03-06-2004, 07:07 PM | #1 (permalink) |
Insane
Location: Chicago
|
[java] card program
hey all, I am having a problem thinking through a program that simply asks the user to pick however many cards they want, no more than 52 obviously. I then give the cards to the user via message dialog. I have a grasp of how to do this up until it involves multiple cards. Like how I cannot give the same card twice. I know I should use an array of some sort but Im not sure how to set it up so the same card is not given. If anyone could give me a hand that would be great! Thanks in advance.
__________________
Jesus was a ruffies victim! Dan 3:20 |
03-06-2004, 09:02 PM | #2 (permalink) |
Free Mars!
Location: I dunno, there's white people around me saying "eh" all the time
|
Use a randomizer, and use a condition so that the second card picked does not equal to the card already picked.
__________________
Looking out the window, that's an act of war. Staring at my shoes, that's an act of war. Committing an act of war? Oh you better believe that's an act of war |
03-06-2004, 09:11 PM | #3 (permalink) |
Insane
Location: Chicago
|
yeah, I used the Math.random method and my program is fine if I didnt have to check to see if the same card was drawn at any time. So if the user picks that they want 10 cards, Im not sure how to make sure none of the 10 are the same.
__________________
Jesus was a ruffies victim! Dan 3:20 |
03-06-2004, 09:19 PM | #4 (permalink) |
WARNING: FLAMMABLE
Location: Ask Acetylene
|
Let me preface this by saying you should ignore everything I write, I'm anal
My take... Place all 52 cards in the array, generate say 100 tuples of two numbers less then 52. Then for every tuple generated switch the elements in the array that correspond to the first and last value in each tuple. This will randmomize the array in place. Then just feed the first however many elements are asked for from the array. I like this because it avoids collision in the randomizer. If a collision occurs it's no biggy, you don't recompute, if you collide in the other scheme you have to recompute another random number with the possibility of colliding occuring again. With 51 cards generated you can imagine how the number of collisions will grow. The other scheme works with 52 cards because the number is small. But what if we were shuffling magic cards? Every single magic card ever made would be in the 1,000s granted you would never deal that many cards, but can see how this could be a problem.
__________________
"It better be funny" |
03-06-2004, 09:21 PM | #5 (permalink) |
WARNING: FLAMMABLE
Location: Ask Acetylene
|
What you need to do is maintain an array that lists all the cards you've already dealt, when you generate a new random card check in the array if it has been dealt. If it has been dealt already generate a new one.
__________________
"It better be funny" |
03-06-2004, 09:31 PM | #6 (permalink) |
Insane
Location: Chicago
|
Though I dont really know what you mean when you say "tuple", I do understand what your trying to say, I guess my novice mind would have not thought of that. My initial intention was to make all 52 cards an array first and then pick them off one by one.
__________________
Jesus was a ruffies victim! Dan 3:20 |
03-06-2004, 11:03 PM | #7 (permalink) |
Upright
|
Create a "Card" class that represents the suit and value of the card as integers (i.e. Clubs=0, Hearts=1, etc).
Use two for loops to create every possible card and stick it into a java.util.ArrayList like so: PHP Code:
PHP Code:
|
03-07-2004, 06:19 AM | #8 (permalink) |
WARNING: FLAMMABLE
Location: Ask Acetylene
|
http://en.wikipedia.org/wiki/Tuple
It's just a fancy buzzword mostly. "In mathematics, a tuple is a finite sequence of objects. (An infinite sequence is a family.) Tuples are used by mathematicians to describe mathematical objects that consist of certain components. For example, a directed graph is defined as a tuple (V, E) where V is the set of nodes and E is a subset of V × V that denotes the edges." In our case the tuple consists of (A, B) where A is a location in the array being switched with B (which is a location in the array.
__________________
"It better be funny" |
Tags |
card, java, program |
|
|