改组阵列列表

时间:2016-01-12 15:47:11

标签: java libgdx

我正试图改变ArrayList张牌。我的deck类中有一个方法如下:

public void shuffle(Array <Deck1> deck){
    deckOne.shuffle();
}

在我的主要游戏类中,我初始化了变量,并想要改变平台。这就是我所拥有的:

public class MainGame {
    private Deck1 deckOne;

    public MainGame() {
        deckOne = new Deck1();

        deckOne.shuffle(x);
    }
}
然后我去打印出卡片。我遇到的问题是传递给deckOne.shuffle(x);行的内容。 x是我需要传递的地方。

任何帮助将不胜感激。

我在LibJDX编码。

我尝试了下面显示的shuffle方法,但它也无效。

public void shuffle(){
    deckOne.shuffle();
}

2 个答案:

答案 0 :(得分:2)

像Faro和duffymo已经说过你的问题不是很清楚 - 或者至少我们不太了解它。我认为这里的问题可能是你的域名使用不合适的设计。特别是,为什么需要将任何内容传递给shuffle类的Deck方法?它不应该能够洗牌自己的内部卡吗?

在我看来,像下面这样的设计更有意义:

class Card {
   private int value;
   private String suit; // Or an enum, whatever you prefer

   ... constructor/getters/setters ...
}

class Deck {
    private ArrayList<Card> cards;

    ... constructor to initialize cards ...

    public void shuffle() {
        Collections.shuffle(cards);
    }
}

public class MainGame {
    private Deck deckOne;

    public MainGame() {
        deckOne = new Deck();
        deckOne.shuffle();
    }
}

答案 1 :(得分:0)

让我们做一个简单的:List整数。

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Demonstration of shuffle feature
 * User: mduffy
 * Date: 1/12/2016
 * Time: 11:05 AM
 * @link http://stackoverflow.com/questions/34747973/shuffling-an-array-list?noredirect=1#comment57242343_34747973
 */
public class ShuffleDemo {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
        System.out.println(String.format("before shuffle: %s", numbers));
        Collections.shuffle(numbers);
        System.out.println(String.format("after  shuffle: %s", numbers));
    }
}

你会如何改变这一点,因此它是List的{​​{1}},它有西装和面值? Card Deck有意义吗?