Task

Create a data structure and the associated methods to define and manipulate a deck of   playing cards.

The deck should contain 52 unique cards.

The methods must include the ability to:

   make a new deck
   shuffle (randomize) the deck
   deal from the deck
   print the current contents of a deck 
Each card must have a pip value and a suit value which constitute the unique value of the card.

Related tasks:

 Card shuffles
 Deal cards_for_FreeCell
 War Card_Game
 Poker hand_analyser
 Go Fish


 
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Array.au3>
 
; ## GLOBALS ##
Global $SUIT = ["D", "H", "S", "C"]
Global $FACE = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"]
Global $DECK[52]
 
; ## CREATES A NEW DECK
Func NewDeck()
 
	For $i = 0 To 3
		For $x = 0 To 12
			_ArrayPush($DECK, $FACE[$x] & $SUIT[$i])
		Next
	Next
 
EndFunc   ;==>NewDeck
 
; ## SHUFFLE DECK
Func Shuffle()
 
	_ArrayShuffle($DECK)
 
EndFunc   ;==>Shuffle
 
; ## DEAL A CARD
Func Deal()
 
	Return _ArrayPop($DECK)
 
EndFunc   ;==>Deal
 
; ## PRINT DECK
Func Print()
 
	ConsoleWrite(_ArrayToString($DECK) & @CRLF)
 
EndFunc   ;==>Print
 
 
#Region ;#### USAGE ####
NewDeck()
Print()
Shuffle()
Print()
ConsoleWrite("DEALT: " & Deal() & @CRLF)
Print()
#EndRegion ;#### USAGE ####
 