2010-07-23 40 views
1

我正在用Java製作一個二十一點程序,並且我開始爲對象卡編寫類聲明。這是否足夠了,還是有一些我應該有的方法,我正在掩飾?在Java中表示卡的類?

public class Card { 
    public int suit; //Value 1-4 to represent suit 
    public int value; //Value 1-13 to represent value (i.e. 2, J) 
    public Card(int suit, int value) { 
     //Not yet implemented 
    } 
} 

此外,有沒有有一個像Java中C++的枚舉數據結構的好辦法,因爲這會爲卡的名稱和西裝很好嗎?

+4

java * has * enums:http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/guide/language/enums.html。 – 2010-07-23 17:18:37

+1

嘗試在代碼前後使用「pre」html標籤,使其格式更好。 – 2010-07-23 17:21:46

回答

7
public enum Suite { 
    HEART, DIAMOND, CLUB, SPADE 
} 
public enum Value { 
    TWO, THREE, ... , JACK, QUEEN, KING, ACE 
} 

其餘的你可以弄清楚。

0

我會(使用)作爲屬性的套裝和價值的枚舉。西裝和價值也可以是枚舉。

1

是的,你的開始看起來不錯。切換行列和適合枚舉 - 這將是一個好主意。至於方法,創建它們,並發現你需要它們。根據你寫的遊戲,你可能需要一套完全不同的方法。

Java有一個非常強大的枚舉。看看下面的例子。

 
public enum Rank { 
    ACE(1, "Ace"), 
    TWO(2, "Two"), 
    ... etc 
    KING(13, "King"); 

    private int value; 
    private String display; 

    private Rank (int value, String display) { 
    this.value = value; 
    this.display = display; 
    } 

    public int getValue() { 
    return this.value; 
    } 

    public int getDisplay() { 
    return this.display; 
    } 
} 
+0

正是我所做的,除了隊伍,西裝是枚舉... – hvgotcodes 2010-07-23 17:22:05

+0

應該構造函數私人Rank()被宣佈爲私人? – 2010-07-23 17:28:23

+1

這不是100%正確,因爲Ace有多重動力,所以隊伍無法在此模式下設置。在我看來,對象更好,但是我們可以使用序號作爲該序號,我們將第一個元素設置爲NONE,另一個需要這個例子的枚舉爲適合枚舉SUIT {NONE(「None」),DIAOMONDS(「Diamonds」 ),HEARTS(「Hearts」),CLUBS(「Clubs」),SPADES(「Spades」)} – 2010-07-23 17:30:00

0

Java自1.5起完全支持enums。巧合的是,鏈接中提供的示例使用卡類作爲示例,就像您正在嘗試的那樣。

你在那裏得到的基類已經足夠增加getter。如果您需要在某個時間點進行排序,那麼實施「可比較」可能會很有價值。

0

關於「是否有一些方法我應該有,我正在掩飾」,這是真正的主觀和基於類的使用上下文。例如,如果你永遠不需要打印對象,你可能不需要'toString()'函數,但如果你這樣做的話,它可能會派上用場(特別是如果你想以特定的方式格式化輸出)。

Java也有枚舉的,參見here的教程。

0

您可能想爲不同的遊戲製作子類。 PokerCard和SolitareCard可以比較;在一個,王牌比王大;另一方面,王牌比王少。

對於BlackjackCard,比較是無關緊要的。你可能會考慮有一個intValue(),其中K或Q或J的intValue()是10,但對於BlackjackCard來說這並不容易,因爲Ace可以是1或11。所以這是設計模型以適應現實世界的一個很好的練習:這是一個問題,即卡的整數值不完全是卡內在的,而是取決於卡的上下文。

+1

爲什麼每個遊戲都沒有相同的卡類型,但是有一個不同的「比較器」? – finnw 2010-07-23 17:33:14