首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何让我的扑克牌随机生成器在扑克牌结束时结束?

我如何让我的扑克牌随机生成器在扑克牌结束时结束?
EN

Stack Overflow用户
提问于 2018-06-03 04:08:12
回答 1查看 450关注 0票数 -1

Android版本: 4.2

我正在开发一个android应用程序。我需要从可绘制文件夹中随机生成图像,并设置文本来说明选择了哪张卡。

我希望我的应用程序枚举每一张随机选择的卡片,没有重复,直到52张纸牌结束。

我怎样才能做到这一点呢?

我的xml代码是:

<ImageView
        android:id="@+id/imageView"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerInParent="true"
        android:scaleType="centerInside"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="16dp" />

在我的抽屉里有52张不同名字的扑克牌图片。

public class MainActivity extends AppCompatActivity {

   ImageView imageView;

   TextView txt1;

   Button button;

   Random r;

   Integer[] images = {
           R.drawable.ace_of_hearts,
           R.drawable.two_of_hearts,
           R.drawable.three_of_hearts,
           R.drawable.four_of_hearts,
           ...

我使用这个代码来生成随机的卡上的按钮点击和显示卡的名称。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView = (ImageView) findViewById(R.id.imageView);

    txt1 = (TextView) findViewById(R.id.mytext);

    button = (Button) findViewById(R.id.btn1);

    r = new Random();

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //remove duplicates
            do {
                pickedImage = r.nextInt(images.length);
            } while (pickedImage == lastPicked);


            lastPicked = pickedImage;
            //display random image
            imageView.setImageResource(images[pickedImage]);
            txt1.setText(images[pickedImage]);
            }
    });
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-03 04:22:36

而不是选择一个随机的卡片,然后不得不处理重复的,一个更简单的方法可能是打乱数组,然后只从那里显示一个图像:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView = (ImageView) findViewById(R.id.imageView);
    txt1 = (TextView) findViewById(R.id.mytext);
    button = (Button) findViewById(R.id.btn1);

    List<Integer> shuffledCards = new ArrayList<>(Arrays.asList(images));
    Collections.shuffle(shuffledCards);
    final Iterator<Integer> iter= shuffledCards.iterator();

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Stop once all the cards have been displayed
            if (!iter.hasNext()) {
                return;
            }

            image = iter.next();
            imageView.setImageResource(image);
            txt1.setText(image);
        }
    });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档