• 大小: 18KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Java
  • 标签: 黑杰克  java  

资源简介

完成一个变形版的纸牌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.xml

     文件         85  2011-09-21 00:05  21PointGame\manifest.mf

     文件      48785  2011-09-21 00:05  21PointGame\nbproject\build-impl.xml

     文件        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.xml

     文件       2373  2011-09-21 00:05  21PointGame\nbproject\project.properties

     文件        519  2011-09-21 00:05  21PointGame\nbproject\project.xml

     文件       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


评论

共有 条评论