【问题标题】:Card Game App - Random card but not the same card twice纸牌游戏应用程序 - 随机牌但不是同一张牌两次
【发布时间】:2014-04-07 20:30:51
【问题描述】:

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

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”。 任何帮助表示赞赏。

【问题讨论】:

  • 只是为了评论您应该真正将图像资源保存在一个数组中,这样您就不必输入 52 个 if 语句。其次,您应该使用 if else 语句,因为即使找到匹配项,您的程序也会继续检查计数器

标签: android random


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    看到这个答案to get unique random numbers in Java

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

    【讨论】:

    • 我想不通,你能发一个例子说明应该怎么做吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多