Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇火环饮酒游戏_Java_Android_Android Studio - Fatal编程技术网

Java 爪哇火环饮酒游戏

Java 爪哇火环饮酒游戏,java,android,android-studio,Java,Android,Android Studio,我正在尝试创建一个“火环”饮酒游戏,有一些问题 我在Android Studio的res/drawable文件夹中添加了所有卡片图像: 我使用此代码从1-13生成一个随机数并选择一张卡: final int min = 1; final int max = 13; private void randomizeCard() { final int random = new Random().nextInt((max - min) + 1) + min; Resources res

我正在尝试创建一个“火环”饮酒游戏,有一些问题

我在Android Studio的res/drawable文件夹中添加了所有卡片图像:

我使用此代码从1-13生成一个随机数并选择一张卡:

final int min = 1;
final int max = 13;
private void randomizeCard() {
    final int random = new Random().nextInt((max - min) + 1) + min;
    Resources res = getResources();
    String mDrawableName = "c"+random;
    int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
    Drawable drawable = ((Resources) res).getDrawable(resID );
    cardImage.setImageDrawable(drawable );
}

问题是同一张卡片可能会出现很多次。我只希望同一张卡最多显示4次。我如何才能做到这一点,使其中一张牌不会出现超过4次?

我的建议是使用列表和洗牌来限制重复的牌

    final int min = 1;
    final int max = 13;
    final int duplicate = 4;
    List<Integer> cards = new ArrayList<Integer>();

    protected void onCreate(Bundle savedInstanceState) {
        for (int i = min; i <= max; i++) {
            for (int j=0 ;j<duplicate; j++) {
                cards.add(i);
            }
        }
        Collections.shuffle(cards);
    }

    int getCard(){
        if(cards.size()>0){
             int val = cards.get(0);
             cards.remove(0);
             return val;
        }
        return 0;
    }
final int min=1;
最终int最大值=13;
最终整数重复=4;
列表卡=新的ArrayList();
创建时受保护的void(Bundle savedInstanceState){

对于(int i=min;我想你应该如何手工操作,并用文字描述你需要采取的步骤。然后找出如何将这些文字翻译成代码。@code学徒我从昨天早些时候就开始尝试解决这个问题,但我似乎找不到任何好的解决方案:/我应该把它放在哪里?我尝试将它添加到
私有空间中randomizeCard()
code,每次用户选择一张新卡时都会运行,但相同的卡会显示超过4次。编辑:还尝试将其添加到
创建时受保护的void(Bundle savedInstanceState){
但还是一样..不,你只做一次,然后从第一个到最后一个使用列表仍然不起作用。我进行了一轮测试,得到了1张王牌,4张8心牌。下面是我全部代码的示例:-也许我做错了什么?你没有在randomizeCard中使用getCard函数吗