Ryan's District
November 22, 2008, 04:15:17 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: You are not allowed to view links.
Register or Login
How to Unlock Nokia mobile Phones

You are not allowed to view links.
Register or Login
Request any TV Show / series / Episodes / movie and we will get it for you for free

 
   Home   Help Search Chat Calendar Chess Shop Login Register  
Digg This!
Pages: [1]   Go Down
  Send this topic  |  Print  
Author Topic: HOW TO SHUFFLE A VIRTUAL DECK  (Read 2953 times)
0 Members and 1 Guest are viewing this topic.
ben2ong2
Quality Poster
Paid
Hero Member
*****

Reputation: 17
Offline Offline

Gender: Male
Posts: 2374
9976.80 RD$

View Inventory
Send Money to ben2ong2

View Profile Awards
« on: October 07, 2006, 03:31:59 PM »

=============================================

HOW TO SHUFFLE A VIRTUAL DECK



By:     Matthew J. West (mjwest@imt.net)

Date:   2-21-98

=============================================



   While I was creating my black jack game I wanted to make the user

feel like they were using an actual deck of cards.  To make this

illusion even more accurate I decided that I would have the computer

keep track of which cards had been used and after all cards had been

used I wanted the deck to be shuffled.  Therefore I had to figure out a easy

way to shuffle the deck.  That is how I came up with the following method:

   First I made an image control array called imgCards that went from

1 to 52.  In this array I filled slot (1) with the ace of clubs, slot (2) with

the two of clubs, and so on I continued this process until I had all 52 cards

put into their corresponding slots.  This would make the array look like this:



 ------Key-----------------------------------------------

|H= Hearts   C= Clubs   D= Diamonds   S= Spades|

|J= Jack   Q= Queen   K= King              |

 --------------------------------------------------------



SLOT   CARD   SLOT   CARD   SLOT   CARD   SLOT   CARD

----   ----   ----   ----   ----   ----   ----   ----

1   1C   14   1D   27   1H   40   1S

2   2C   15   2D   28   2H   41   2S   

3   3C   16   3D   29   3H   42   3S

4   4C   17   4D   30   4H   43   4S

5   5C   18   5D   31   5H   44   5S

6   6C   19   6D   32   6H   45   6S

7   7C   20   7D   33   7H   46   7S

8   8C   21   8D   34   8H   47   8S

9   9C   22   9D   35   9H   48   9S

10   10C   23   10D   36   10H   49   10S

11   JC   24   JD   37   JH   50   JS

12   QC   25   QD   38   QH   51   QS

13   KC   26   KD   39   KH   52   KS



   Now that I had my virtual deck I had to figure out a procedure to

shuffle it.  After trying many different ways, I concluded that the best way

to do this task was to make numeric array called arrDeck that went from 1 to

52.  Then I would choose a random slot in the arrDeck and put the first

card in my imgCards array into it.  Then take my second card in the imgCards

array and put it into a different random slot in the arrDeck array.  I would

do this until every slot in the arrDeck array was filled.  I know it sounds

confusing but it really isn't just look at the code below:



I already had this declared in my declarations section:

Dim arrDeck(1 To 52) As Integer



This is in my procedure:

Public Sub ShuffleDeck()

Randomize         'Makes it so the starting seed is different

Dim CardCount As Integer   'This will be my loop counter

Dim CardVal As Integer      'This will get assigned the random value



CardCount = 1         'Resets card count to 1



Do While CardCount < 53      'This sets every slot in arrDeck to -1

    arrDeck(CardCount) = -1   'so that later I can tell if the slot is empty

CardCount = CardCount + 1   'or not

Loop



CardCount = 1         'Resets card count to 1



Do While CardCount < 53      'Loop until every slot is full

10  CardVal = Int((52 * Rnd) + 1)   'Set CardVal = to a random number

If arrDeck(CardVal) = -1 Then   'Take random slot and see if there is a card

            'in it yet. If there isn't it will be = to -1

            'if there is it will be equal to a different

            'value. 

    arrDeck(CardVal) = CardCount'There isn't so put current card in that slot

    CardCount = CardCount + 1   'Increment my card count



Else: GoTo 10         'There is so start again from the beginning

End If

Loop            'Do it all again if < 53

End Sub



I hope that makes it easier to understand.

If you have any questions or comments feel free to email me!

Logged

You are not allowed to view links.
Register or Login
Free Paid Survey & Home Business Resources.

You are not allowed to view links.
Register or Login
Free Article Directory | Quality Content
Ryan's District
« on: October 07, 2006, 03:31:59 PM »

 Logged
Pages: [1]   Go Up
  Send this topic  |  Print  
 
Jump to:  

Archive - WAP2 - WAP - imode
Sponsors: RAYAN.tv
-

Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
Page created in 0.369 seconds with 30 queries.

Google visited last this page Today at 08:09:29 AM