資源簡介
完成一個變形版的紙牌21點游戲。該游戲來源于21點游戲,實現人機對戰。游戲說明如下:
(1)該游戲需要兩副牌,沒有Joker,共104張。每張“紙牌”應具有花色與數字兩個屬性。
(2)游戲在機器與人類玩家之間進行。游戲一開始應先洗牌(將104張牌打亂)。
(3)機器永遠是莊家,所以永遠先給機器發牌,機器的牌不可見,只能看到機器要了幾張牌。機器停止要牌后,再給人類玩家發牌。
(4)游戲勝利與失敗的條件與普通21相同;除此以外,一方在當前牌沒有爆掉的前提下,如果下一張牌使得手中有兩張完全一樣的牌(同數字、同花色)則立刻勝利。
(5)游戲結束時機器的牌要全部顯示,并提示誰勝利了。
程序設計要求如下:
(1)程序中應至少有Card類和CardGame類。
(2)Card類需要重寫Object類的equals(Object o) 函數,用于比較兩張牌是否完全一樣;重寫toString函數,用于輸出牌時直接顯示牌的花色與數字。
(3)CardGame類應具有shuffle(洗牌)、deal(發牌)、win(勝利判別)等函數。
(4)選擇適當的java集合類來實現“發牌牌堆”和“手牌”(不允許都使用數組)。。

代碼片段和文件信息
/*
?*?To?change?this?template?choose?Tools?|?Templates
?*?and?open?the?template?in?the?editor.
?*/
package?pointgame;
import?java.util.ArrayList;
import?java.util.Scanner;
enum?Color{
????HEARTS?DIAMOND?SPADE?CLUB??//紅桃,方塊,黑桃,梅花
}
class?Card?{
????private?Color?cardColor;
????private?int?number;?????????//牌的面值
????public?Card(){
????}
????public?Card(Color?c?int?num)?{
????????cardColor?=?c;
????????number?=?num;
????}
????@Override
????public?boolean?equals(object?obj)?{
????????if?(obj?==?this)
????????????return?true;
????????if?(!(obj?instanceof?Card))
????????????return?false;
????????return?((Card)obj).cardColor?==?this.cardColor?&&
???????????????((Card)obj).number?==?this.number?;
????}
????@Override
????public?int?hashCode()?{
????????int?hash?=?7;
????????hash?=?59?*?hash?+?(this.cardColor?!=?null???this.cardColor.hashCode()?:?0);
????????hash?=?59?*?hash?+?this.number;
????????return?hash;
????}
????@Override
????public?String?toString()?{
????????String?symble?;
????????String?numberString?=?““;
????????if?(cardColor?==?Color.HEARTS)
????????????symble?=?“紅心“;
????????else?if?(cardColor?==?Color.DIAMOND)
????????????symble?=?“方塊“;
????????else?if?(cardColor?==?Color.SPADE)
????????????symble?=?“黑桃“;
????????else
????????????symble?=?“梅花“;
????????if?(number?==?11)?{
????????????numberString?+=?“J“;
????????}?else?if?(number?==?12)?{
????????????numberString?+=?“Q“;
????????}?else?if?(number?==?13)?{
????????????numberString?+=?“K“;
????????}?else?if?(number?==?1){
????????????numberString?+=?“A“;
????????}?else{
????????????numberString?+=?number;
????????}
????????
????????return?symble?+?“??“?+?numberString?+?“??“;
????}
????public?Color?getCardColor()?{
????????return?cardColor;
????}
????public?void?setCardColor(Color?cardColor)?{
????????this.cardColor?=?cardColor;
????}
????public?int?getNumber()?{
????????return?number;
????}
????public?void?setNumber(int?number)?{
????????this.number?=?number;
????}
}
class?CardGame{
????private?Card[]?????????????cardHeap;??????//排堆
????private?int????????????????cardHeapPos;?????????????????????//發到第幾張牌了
????private?ArrayList????playerCards?;?????//玩家手牌
????private?ArrayList????computerCards;????//電腦手牌
????public?CardGame()?{
????????cardHeap?=?new?Card[104];
????????playerCards?=?new?ArrayList();
????????computerCards?=?new?ArrayList();
????????for(int?i?=?0;?i?104;?i?+=?4?)?{
????????????for(int?j?=?0;?j?4;?j?++)?{
????????????????switch(j){
????????????????????case?0:
????????????????????????cardHeap[i?+?j]?=?new?Card(Color.HEARTS?i?%?13?+?1);
????????????????????????break;
????????????????????case?1:
????????????????????????cardHeap[i?+?j]?=?new?Card(Color.DIAMOND?i?%?13?+?1);
????????????????????????break;
????????????????????case?2:
????????????????????????cardHeap[i?+?j]?=?new?Card(Color.CLUB?i?%?13?+?1);
????????????????????????break;
????????????????????default:
????????????????????????cardHeap[i?+?j]?=?new?Card(Color.SPADE?i?%?13
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????0??2011-09-21?13:00??21PointGame\build\classes\.netbeans_automatic_build
?????文件???????2104??2011-09-21?19:05??21PointGame\build\classes\pointgame\Card.class
?????文件???????5290??2011-09-21?19:05??21PointGame\build\classes\pointgame\CardGame.class
?????文件???????1002??2011-09-21?19:05??21PointGame\build\classes\pointgame\Color.class
?????文件????????484??2011-09-21?19:05??21PointGame\build\classes\pointgame\Main.class
?????文件?????????52??2011-09-21?13:00??21PointGame\build\classes\pointgame\Main.rs
?????文件???????3728??2011-09-21?00:05??21PointGame\build.xm
?????文件?????????85??2011-09-21?00:05??21PointGame\manifest.mf
?????文件??????48785??2011-09-21?00:05??21PointGame\nbproject\build-impl.xm
?????文件????????475??2011-09-21?00:05??21PointGame\nbproject\genfiles.properties
?????文件?????????96??2011-09-21?00:05??21PointGame\nbproject\private\private.properties
?????文件????????211??2011-09-21?19:06??21PointGame\nbproject\private\private.xm
?????文件???????2373??2011-09-21?00:05??21PointGame\nbproject\project.properties
?????文件????????519??2011-09-21?00:05??21PointGame\nbproject\project.xm
?????文件???????9314??2011-09-21?19:05??21PointGame\src\pointgame\Main.java
?????目錄??????????0??2011-09-21?19:05??21PointGame\build\classes\pointgame
?????目錄??????????0??2011-09-21?13:00??21PointGame\build\classes
?????目錄??????????0??2011-09-21?00:29??21PointGame\nbproject\private
?????目錄??????????0??2011-09-21?00:05??21PointGame\src\pointgame
?????目錄??????????0??2011-09-21?13:00??21PointGame\build
?????目錄??????????0??2011-09-21?00:05??21PointGame\nbproject
?????目錄??????????0??2011-09-21?00:05??21PointGame\src
?????目錄??????????0??2011-09-21?00:05??21PointGame\test
?????目錄??????????0??2011-09-21?13:00??21PointGame
-----------?---------??----------?-----??----
????????????????74518????????????????????24
評論
共有 條評論