Android 卡片游戏应用程序-随机卡片,但不是同一张卡片两次

Android 卡片游戏应用程序-随机卡片,但不是同一张卡片两次,android,random,Android,Random,我正在制作这个纸牌游戏应用程序,当用户点击该卡时,该图像将变成一张随机的其他卡。以下是一个例子: public class MainActivity extends Activity { int[] cards={R.drawable.aceofspades,R.drawable.aceofhearts,R.drawable.aceofclubs}; static Random r = new Random(); @Override protected void onCreate(Bund

我正在制作这个纸牌游戏应用程序,当用户点击该卡时,该图像将变成一张随机的其他卡。以下是一个例子:

public class MainActivity extends Activity {

int[] cards={R.drawable.aceofspades,R.drawable.aceofhearts,R.drawable.aceofclubs};
static Random r = new Random();


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

}


public void imageClick(View view) { 

      int n=r.nextInt(cards.length);

    {
    ImageView image = (ImageView) findViewById(R.id.imageDice1);
    image.setImageResource(cards[n]);
    }


 } 

}
我想修改代码,这样同一张卡就不可能显示两次,除非所有的卡都通过了。因此,在这种情况下,当卡是“aceofspades”时,下一张卡和之后的卡不应是“aceofspades”。 用户将看到的第一个图像是“R.drawable.cardback”。 我想一个代码,改变图像回“cardback”时,所有卡已显示。 非常感谢您的帮助。

请参阅此答案


您需要基本相同的结构和流程。

您需要将卡片(或仅值1到52)放入数组或列表中,然后将它们放入。您所描述的要求正是洗牌的作用。

只是为了说明您应该将图像资源保存在一个数组中,这样您就不必键入52条if语句。其次,您应该使用if-else语句,因为您的程序将继续检查计数器,即使它找到匹配项,我也无法理解它,您能举一个例子说明它应该是怎样的吗?