英文:
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 + " " + 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[] = {"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
}
}
}
答案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 + " " + 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[] = {"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
}
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论