这可能是一个愚蠢的问题,但我似乎无法记住如何阻止程序执行此操作或我从未学过它。
我正在创建一个二十一点游戏,它使用paintComponent绘制随机卡片。单击点击按钮时,我希望它绘制下一张卡并生成新的总计。但是,每当我点击按下按钮时,它都会完美地绘制新卡片,但它会在我已经绘制的卡片上创建所有新卡片。
如何停止重绘方法选择新的随机卡并在整个程序中保持相同?我应该提一下,所有卡都存储在一个数组中,并使用随机数生成器调用。此外,当我调整java窗口的大小时会发生这种情况。
如果被问到,我会发布代码,但我觉得这有一个简单的解决方案。
答案 0 :(得分:1)
您需要在绘制方法之外移动“选择随机卡”逻辑。
首次构建阵列时计算阵列中的所有牌可能更好一点,而不是在绘画时随机选择。换句话说,当你创建'deck'数组时,构建整个牌组,以便每个牌都知道它们是什么,然后用户甚至开始从牌组中发出任何牌。这样,在游戏过程中不存在改变它们的风险。如果你只是谈论52张卡,或52张卡的一小部分,那么阵列仍然非常小,并且可以快速随机化整个阵列。
或者,您可以检查一下您所说的“选择随机卡”方法......
int cardValue = -1;
paintComponent(){
if (cardValue == -1){
cardValue = drawRandomCard();
}
// now paint it.
}
ie - 限制drawRandomCard()
仅在卡片尚未具有值时运行。
最终,最好的解决方案是将绘画代码与逻辑完全分开 - 对于GUI等活动的错误编码实践,如绘画与编程逻辑混合在一起。