View Javadoc
1 /***
2 * Copyright (c) 2003 held jointly by the individual authors.
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2.1 of the License, or
7 * (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; with out even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this library; if not, write to the Free Software Foundation,
16 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17 *
18 * > http://www.gnu.org/copyleft/lesser.html
19 * > http://www.opensource.org/licenses/lgpl-license.php
20 */
21 package net.mlw.gfw.ext.card;
22
23 import java.util.List;
24 import java.util.Random;
25
26 /***
27 * @author Matthew L. Wilson
28 * @version $Revision: 1.4 $ $Date: 2004/06/29 20:32:54 $
29 */
30 public class DefaultDealer implements Dealer
31 {
32 private int numberOfPlayers;
33 private int maxNumberOfCards;
34 private Card[] cards;
35
36 public DefaultDealer(int numberOfPlayers, int maxNumberOfCards)
37 {
38 this.maxNumberOfCards = maxNumberOfCards;
39 this.numberOfPlayers = numberOfPlayers;
40 }
41
42 /***
43 * @param cards The cards to set.
44 */
45 public void setCards(List cards)
46 {
47 this.cards = (Card[]) cards.toArray(new Card[] {
48 });
49 }
50
51 /***
52 * @see net.mlw.gfw.ext.card.Dealer#deal()
53 */
54 public DealResults deal(DealResults results, int numberOfCards)
55 {
56 Random random = new Random();
57
58 /*** Shuffle the cards. **/
59 for (int i = 0, length = cards.length; i < length; i++)
60 {
61 int rand = random.nextInt(length);
62 Card card = cards[i];
63 cards[i] = cards[rand];
64 cards[rand] = card;
65 }
66
67 /*** Deal the cards. **/
68 for (int cardIndex = 0; cardIndex < numberOfCards; cardIndex++)
69 {
70 for (int playerIndex = 0; playerIndex < numberOfPlayers; playerIndex++)
71 {
72 int index = playerIndex + (cardIndex * numberOfPlayers);
73 results.getHandModels()[playerIndex].addCard(cards[index]);
74 cards[index] = null;
75 }
76 }
77
78 for (int i = (this.cards.length - 1);(this.cards[i] != null); i--)
79 {
80 results.getLeftOverCards().add(this.cards[i]);
81 this.cards[i] = null;
82 }
83 return results;
84 }
85 }
This page was automatically generated by Maven