Java纸牌游戏“Skat”

huangapple 未分类评论49阅读模式
英文:

Java card game "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;
    }
}
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) {
        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].setValue(w);
                i++;
            }
        }
    }

    public static void printCardDeck(Card[] deck) {
        for (Card c : deck) {
            System.out.println(c);
        }
    }

    public static void shuffleCardDeck(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) {
        // 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
        }
    }
}

如果您还有其他需要帮助的问题,请随时提问。

英文:

I try to implement the card game "Skat" in Java

The Rules:

There are 32 cards. Each card exists only once in the game.

The colors are: Clubs, Spades, Hearts, Diamonds

The values are: Ace, King, Queen, Jack, Ten, Nine, Eight, Seven

Those cards are shuffled. There are three players

First round: each player is given 3 cards. Then 2 cards are put into the Skat.

Second round: each player is given another 4 cards.

Third round: each player is given another 3 cards.

Desired output: the cards of each player revealed (every card should exist once)

My output: Diamonds Seven (32 times)

My code:

Class Card:

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 + &quot; &quot; + value;
	}
}

Class Main:

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[] = {&quot;Clubs&quot;,&quot;Spades&quot;,&quot;Hearts&quot;,&quot;Diamonds&quot;};
		final String values[] = {&quot;Ace&quot;,&quot;King&quot;,&quot;Queen&quot;,&quot;Jack&quot;,&quot;Ten&quot;,&quot;Nine&quot;,&quot;Eight&quot;,&quot;Seven&quot;};
		
		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 &lt; 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&lt;9;i++)
		{
			if(i&lt;3)
				player1[i]=deck[i]; //Player 1
			else if(i&lt;6)
				player2[i-3]=deck[i]; //Player 2
			else
				player3[i-6]=deck[i]; //Player 3 
		}
		for(i=0;i&lt;2;i++)
		{
			skat[i]=deck[i]; //Skat
		}
		
		//Round 2
		for(i=0;i&lt;12;i++)
		{
			if(i&lt;4)
				player1[i]=deck[i+3]; //Player 1
			else if(i&lt;8)
				player2[i-4]=deck[i+3]; //Player 2
			else
				player3[i-8]=deck[i+3]; //Player 3 
		}
		
		//Round 3
		for(i=0;i&lt;9;i++)
		{
			if(i&lt;3)
				player1[i]=deck[i+7]; //Player 1
			else if(i&lt;6)
				player2[i-3]=deck[i+7]; //Player 2
			else
				player3[i-6]=deck[i+7]; //Player 3 
		}
	}
}

答案1

得分: 0

我修复了它。现在它按预期工作。

修复的代码:

类 Card:

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;
	}
}

类 Main:

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) //生成牌组
	{
		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].setValue(w);
				i++;
			}
		}
	}
	public static void printCardDeck(Card[] deck, Card[] player1,
	Card[] player2, Card[] player3, Card[] skat) //打印牌组
	{
		System.out.print("Player 1: "); //打印玩家1
		for (Card p1 : player1)
		{
			System.out.print(p1 + ", ");
		}
		System.out.println("\n");
		
		System.out.print("Player 2: "); //打印玩家2
		for (Card p2 : player2)
		{
			System.out.print(p2 + ", ");
		}
		System.out.println("\n");
		
		System.out.print("Player 3: "); //打印玩家3
		for (Card p3 : player3)
		{
			System.out.print(p3 + ", ");
		}
		System.out.println("\n");
		
		System.out.print("Skat: "); //打印Skat
		for (Card sk : skat)
		{
			System.out.print(sk + ", ");
		}
	}
	public static void shuffleCardDeck(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) //发牌
	{
		//第1轮
		int i;
		for(i=0;i<9;i++)
		{
			if(i<3)
				player1[i]=deck[i]; //玩家1
			else if(i<6)
				player2[i-3]=deck[i]; //玩家2
			else
				player3[i-6]=deck[i]; //玩家3 
		}
		for(i=9;i<11;i++)
		{
			skat[i-9]=deck[i]; //Skat
		}
		
		//第2轮
		for(i=11;i<23;i++)
		{
			if(i<15)
				player1[i-8]=deck[i]; //玩家1
			else if(i<19)
				player2[i-12]=deck[i]; //玩家2
			else
				player3[i-16]=deck[i]; //玩家3 
		}
		
		//第3轮
		for(i=23;i<32;i++)
		{
			if(i<26)
				player1[i-16]=deck[i]; //玩家1
			else if(i<29)
				player2[i-19]=deck[i]; //玩家2
			else
				player3[i-22]=deck[i]; //玩家3 
		}
	}
}
英文:

I fixed it. Now it works as intended.

Fixed Code:

Class Card:

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 + &quot; &quot; + value;
	}
}

Class Main:

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[] = {&quot;Clubs&quot;,&quot;Spades&quot;,&quot;Hearts&quot;,&quot;Diamonds&quot;};
		final String values[] = {&quot;Ace&quot;,&quot;King&quot;,&quot;Queen&quot;,&quot;Jack&quot;,&quot;Ten&quot;,&quot;Nine&quot;,&quot;Eight&quot;,&quot;Seven&quot;};
		
		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(&quot;Player 1: &quot;); //Print player 1
		for (Card p1 : player1)
		{
			System.out.print(p1 + &quot;, &quot;);
		}
		System.out.println(&quot;\n&quot;);
		
		System.out.print(&quot;Player 2: &quot;); //Print player 2
		for (Card p2 : player2)
		{
			System.out.print(p2 + &quot;, &quot;);
		}
		System.out.println(&quot;\n&quot;);
		
		System.out.print(&quot;Player 3: &quot;); //Print player 3
		for (Card p3 : player3)
		{
			System.out.print(p3 + &quot;, &quot;);
		}
		System.out.println(&quot;\n&quot;);
		
		System.out.print(&quot;Skat: &quot;); //Print Skat
		for (Card sk : skat)
		{
			System.out.print(sk + &quot;, &quot;);
		}
	}
	public static void shuffleCardDeck(Card[] deck) //Shuffle the card deck
	{
		Random rand = new Random();
		for (int i = 0; i &lt; 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&lt;9;i++)
		{
			if(i&lt;3)
				player1[i]=deck[i]; //Player 1
			else if(i&lt;6)
				player2[i-3]=deck[i]; //Player 2
			else
				player3[i-6]=deck[i]; //Player 3 
		}
		for(i=9;i&lt;11;i++)
		{
			skat[i-9]=deck[i]; //Skat
		}
		
		//Round 2
		for(i=11;i&lt;23;i++)
		{
			if(i&lt;15)
				player1[i-8]=deck[i]; //Player 1
			else if(i&lt;19)
				player2[i-12]=deck[i]; //Player 2
			else
				player3[i-16]=deck[i]; //Player 3 
		}
		
		//Round 3
		for(i=23;i&lt;32;i++)
		{
			if(i&lt;26)
				player1[i-16]=deck[i]; //Player 1
			else if(i&lt;29)
				player2[i-19]=deck[i]; //Player 2
			else
				player3[i-22]=deck[i]; //Player 3 
		}
	}
}

huangapple
  • 本文由 发表于 2020年5月4日 15:48:36
  • 转载请务必保留本文链接:https://java.coder-hub.com/61587415.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定