我正在开发一种纸牌游戏,基于更高的胜利。从我的第一个问题开始,在这里将int值分配给图像进行比较我重写了我的代码,但是现在我被困在卡片的随机化和分配给ImageView上。
我有一张班级卡。
public class Card{
private int cardValue;
@DrawableRes
private int image;
public Card(int cardValue, @DrawableRes int image){
this.cardValue = cardValue;
this.image = image;
}
public int getCardValue()
{
return cardValue;
}
@DrawableRes
public int getCardImage()
{
return image;
}
//Cards
Card ash = new Card(20, R.drawable.ash_card);
Card atlas = new Card(23, R.drawable.atlas_card);
Card banshee = new Card(14, R.drawable.banshee_card);
and so on....
在主活动:我有这个卡数组:
//Creating array of the cards
ArrayList<Card> cards = new ArrayList<>();
现在我需要从这个数组中随机化四张牌,并将每张牌分配到IV。
final Random random1 = new Random();
//Generate random indexes for cards
int RandomCard1 = random1.nextInt(cards.size());
int RandomCard2 = random1.nextInt(cards.size());
int RandomCard3 = random1.nextInt(cards.size());
int RandomCard4 = random1.nextInt(cards.size());
//Generate the card from RandomCard
Card drawableCard1 = cards.get(RandomCard1);
Card drawableCard2 = cards.get(RandomCard2);
Card drawableCard3 = cards.get(RandomCard3);
Card drawableCard4 = cards.get(RandomCard4);
我使用这个,因为我有翻转动画为每个卡(也许有一个更好的方法,但它为我工作)。所以现在我只需要给静脉注射分配一张卡,但这行不通。
//Deal my cards
card1.setImageResource(drawableCard1);
card2.setImageResource(drawableCard2);
card3.setImageResource(drawableCard3);
card4.setImageResource(drawableCard4);
我无法将setImageResource用于类对象。我已经被困在这里好几天了,一直想弄明白,但是运气不好。我是否应该以不同的方式进行随机化(例如收集、洗牌?)。或者有没有办法做到这一点?非常感谢。
您实际上有两个不同的问题:
最简单的是您的卡不显示,因为setImageResources
需要int
表示资源id作为参数,您只需要调用:
//Deal my cards
card1.setImageResource(drawableCard1.getCardImage());
card2.setImageResource(drawableCard2.getCardImage());
card3.setImageResource(drawableCard3.getCardImage());
card4.setImageResource(drawableCard4.getCardImage());
现在,如果用户界面设置正确,您将看到图像第二个问题(我不知道这是否是预期的行为)是,一些卡片可以重复发放,因为算法只在界限内生成一个数字,可能会重复
正如您所建议的,一种可能的解决方案是使用集合。shuffle()
开始时在牌组上,这样它将模拟初始牌组的洗牌,并开始按照洗牌牌组中包含的确切顺序处理牌。
我想知道如何防止这种情况发生? 问题是,创建对象剥离类装饰器,构造函数逻辑等的对象。如何明确防止此行为? 当涉及到像这样的对象时,还有另一个反序列化问题。有时,我有这样的课程: 像这样的类必须通过<code>JSON反序列化。解析(“一些字符串”)但反序列化后,它们也会作为“从头开始的对象”出现。所以,任何装饰器都不存在了,任何构造器逻辑都不存在,元也不存在了。例如。
问题内容: 我多次听说,在实例化对象时应该执行以下操作: “接口”名称=新的“类”(); 例如,针对实现的类链表: 实现许多接口,包括队列,双端队列等。上面的代码和 要么 为什么必须同时指定两次类型?似乎多余,但oracledocs似乎没有提及。 问题答案: 在Java 7中是多余的。可以将其重写为。 你想写类似的原因: 如果您改变主意,则可以为您提供以后更改数据收集的自由。这样,您的代码将更加灵
我想把字典的value元素赋给一个字符串变量。 在swiftUI中,字典中的所有值元素都作为字符串返回?类型 什么时候有绳子?类型分配给字符串变量,该字符串变量在swiftUI应用程序中显示为可选(“字符串尝试显示”)。 如何去掉应用程序显示中的“可选”选项?
我得准备一些工作到明天,但我卡住了。(代码中的所有名称都是德语,不要混淆:)) 这是我的构造函数类,用于名为(card)的对象 现在还有另一个类,它应该生成一个由多张卡组成的对象。通常的语法是 但是如何让类生成具有随机名称的多个对象呢?如果我尝试在每个循环的
我的迭代器 我的绘图方法
当您导入java.util.random之后,您可以通过两种方式生成随机整数和随机double。 您可以创建Random类的一个实例