簡體   English   中英

Java 卡牌游戲《Skat》

[英]Java card game “Skat”

我嘗試在 Java 中實現紙牌游戲“Skat”

規則:

有 32 張卡片。 每張卡在游戲中只存在一次。

colors 是:梅花、黑桃、紅心、方塊

值是:Ace、King、Queen、Jack、10、9、8、7

這些牌被洗牌。 有三個玩家

第一輪:每人發3張牌。 然后將 2 張牌放入 Skat。

第二輪:每個玩家再發4張牌。

第三輪:每位玩家再發3張牌。

Desired output:每個玩家的牌顯示(每張牌應該存在一次)

我的 output:鑽石七(32 次)

我的代碼:

Class 卡:

package skat;

public class Card
{
    private static String color, value;

    public static String getColor()
    {
        return color;
    }
    public static void setColor(String color)
    {
        Card.color = color;
    }
    public static String getValue()
    {
        return value;
    }
    public static void setValue(String value)
    {
        Card.value = value;
    } 

    @Override
    public String toString()
    {
        return color + " " + value;
    }
}

Class 主要:

package skat;

import java.util.Random;

public class Main
{
    public static void main(String[] args)
    {
        Card[] game = new Card[32];

        genCardDeck(game);
        shuffleCardDeck(game);

        Card[] player1 = new Card[10];
        Card[] player2 = new Card[10];
        Card[] player3 = new Card[10];
        Card[] skat = new Card[2];

        dealCards(game,player1,player2,player3,skat);
        printCardDeck(game);
    }
    public static void genCardDeck(Card[] deck) //Generate the deck
    {
        final String colors[] = {"Clubs","Spades","Hearts","Diamonds"};
        final String values[] = {"Ace","King","Queen","Jack","Ten","Nine","Eight","Seven"};

        int i = 0;
        for (String f : colors)
        {
            for (String w : values)
            {
                deck[i] = new Card();
                deck[i].setColor(f);
                deck[i].setValues(w);
                i++;
            }
        }
    }
    public static void printCardDeck(Card[] deck) //Print out the deck
    {
        for (Card c : deck)
        {
            System.out.println(c);
        } 

    }
    public static void shuffleCardDeck(Card[] deck) //Shuffle the card deck
    {
        Random rand = new Random();
        for (int i = 0; i < deck.length; i++) { 
            int randomNum = rand.nextInt(deck.length); 
            Card temp = deck[i]; 
            deck[i] = deck[randomNum]; 
            deck[randomNum] = temp;
        }
    }
    public static void dealCards(Card[] deck, Card[] player1,
    Card[] player2, Card[] player3, Card[] skat) //Deal the cards
    {
        //Round 1
        int i;
        for(i=0;i<9;i++)
        {
            if(i<3)
                player1[i]=deck[i]; //Player 1
            else if(i<6)
                player2[i-3]=deck[i]; //Player 2
            else
                player3[i-6]=deck[i]; //Player 3 
        }
        for(i=0;i<2;i++)
        {
            skat[i]=deck[i]; //Skat
        }

        //Round 2
        for(i=0;i<12;i++)
        {
            if(i<4)
                player1[i]=deck[i+3]; //Player 1
            else if(i<8)
                player2[i-4]=deck[i+3]; //Player 2
            else
                player3[i-8]=deck[i+3]; //Player 3 
        }

        //Round 3
        for(i=0;i<9;i++)
        {
            if(i<3)
                player1[i]=deck[i+7]; //Player 1
            else if(i<6)
                player2[i-3]=deck[i+7]; //Player 2
            else
                player3[i-6]=deck[i+7]; //Player 3 
        }
    }
}

我修好了它。 現在它按預期工作。

固定代碼:

Class 卡:

package skat;

public class Card
{
    private String color, value;

    public String getColor()
    {
        return color;
    }
    public void setColor(String color)
    {
        this.color = color;
    }
    public String getValue()
    {
        return value;
    }
    public void setValue(String value)
    {
        this.value = value;
    } 

    @Override
    public String toString()
    {
        return color + " " + value;
    }
}

Class 主要:

package skat;

import java.util.Random;

public class Main
{
    public static void main(String[] args)
    {
        Card[] game = new Card[32];

        genCardDeck(game);
        shuffleCardDeck(game);

        Card[] player1 = new Card[10];
        Card[] player2 = new Card[10];
        Card[] player3 = new Card[10];
        Card[] skat = new Card[2];

        dealCards(game,player1,player2,player3,skat);
        printCardDeck(game,player1,player2,player3,skat);
    }
    public static void genCardDeck(Card[] deck) //Generate the deck
    {
        final String colors[] = {"Clubs","Spades","Hearts","Diamonds"};
        final String values[] = {"Ace","King","Queen","Jack","Ten","Nine","Eight","Seven"};

        int i = 0;
        for (String f : colors)
        {
            for (String w : values)
            {
                deck[i] = new Card();
                deck[i].setColor(f);
                deck[i].setValues(w);
                i++;
            }
        }
    }
    public static void printCardDeck(Card[] deck, Card[] player1,
    Card[] player2, Card[] player3, Card[] skat) //Print out the deck
    {
        System.out.print("Player 1: "); //Print player 1
        for (Card p1 : player1)
        {
            System.out.print(p1 + ", ");
        }
        System.out.println("\n");

        System.out.print("Player 2: "); //Print player 2
        for (Card p2 : player2)
        {
            System.out.print(p2 + ", ");
        }
        System.out.println("\n");

        System.out.print("Player 3: "); //Print player 3
        for (Card p3 : player3)
        {
            System.out.print(p3 + ", ");
        }
        System.out.println("\n");

        System.out.print("Skat: "); //Print Skat
        for (Card sk : skat)
        {
            System.out.print(sk + ", ");
        }
    }
    public static void shuffleCardDeck(Card[] deck) //Shuffle the card deck
    {
        Random rand = new Random();
        for (int i = 0; i < deck.length; i++) { 
            int randomNum = rand.nextInt(deck.length); 
            Card temp = deck[i]; 
            deck[i] = deck[randomNum]; 
            deck[randomNum] = temp;
        }
    }
    public static void dealCards(Card[] deck, Card[] player1,
    Card[] player2, Card[] player3, Card[] skat) //Deal the cards
    {
        //Round 1
        int i;
        for(i=0;i<9;i++)
        {
            if(i<3)
                player1[i]=deck[i]; //Player 1
            else if(i<6)
                player2[i-3]=deck[i]; //Player 2
            else
                player3[i-6]=deck[i]; //Player 3 
        }
        for(i=9;i<11;i++)
        {
            skat[i-9]=deck[i]; //Skat
        }

        //Round 2
        for(i=11;i<23;i++)
        {
            if(i<15)
                player1[i-8]=deck[i]; //Player 1
            else if(i<19)
                player2[i-12]=deck[i]; //Player 2
            else
                player3[i-16]=deck[i]; //Player 3 
        }

        //Round 3
        for(i=23;i<32;i++)
        {
            if(i<26)
                player1[i-16]=deck[i]; //Player 1
            else if(i<29)
                player2[i-19]=deck[i]; //Player 2
            else
                player3[i-22]=deck[i]; //Player 3 
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM