Deal-cards-and-operations-on-hands
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:
Programming Assignment

Here are descriptions of three classes in an object-oriented program that you will write.

=== Deck ===
- The Deck class represents a standard 52-card deck; Ace high 
- Each card is in one of two states -- dealt (D) and not-yet-dealt (ND)
- Cards are ordered. The D and ND cards each have their own order
- When created, all 52 cards are ND, and are in order, by suit
(clubs 2 through A, diamonds 2 through A, hearts 2 through A, spades 2 through A)

methods:
dealOne() -- moves the top card from ND to D and returns the card
print() -- prints non-dealt cards and dealt-cards (in order, as separate lists)
shuffle() -- Shuffles the deck randomly.
Make your own shuffle algorithm. Be prepared to explain how it works.


=== Card ===
- The Card class represents a single card

methods:
print() -- prints the type of card


=== Hand ===
- The Hand class represents a set of cards. From 0 to 52 cards, total
- Cards are always in a definite order

methods:
print() -- prints the hand (in order)
addCard(card) -- adds a card to the hand
sortBySuit() -- sorts the cards by suit, and then by value (see intro for value order)
sortByValue() -- sorts by value, then by suit
Write your own custom sort algorithm. Be prepared to explain how it works.

hasStraight(len, sameSuit) -- returns true if hand contains a straight of the given length.
If sameSuit is true, counts only straights with cards in the same suit (flushes);
If sameSuit if not true, any straight is counted


==============================
1) Write a program that
- Implements the classes above and creates and shuffles a deck and then deals two or more 5-card hands from the deck.



Guidelines:
==========
- Write all the code yourself including the code to shuffle and and sort
- Should be a simple command-line utility, not a gui app. If you generate any graphs, you can use any utility, such as a spreadsheet, matlab, matplotlib, gnuplot, etc.
- Code must be written in php
- Design is important; get the interfaces right
- Code readability is important
- A simple implementation that gets the job done (and meets other requirements) is better than a complex implementation.
- Comments not necessary unless there is something that might not be obvious to a reader. Make a note of any assumptions that may not be obvious from a method signature.
- Careful error checking not required, but if error checking helps you develop the code, it's fine to leave it in.
- Don't over-engineer -- this is a limited problem, not the start of a commercial poker system
- If you write test code to make sure things are working, go ahead and include that.

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。