0

这可能是一个愚蠢的问题,但我似乎不记得如何阻止程序这样做,或者我从未学过。

我正在创建一个二十一点游戏,它使用paintComponent 随机抽取卡片。单击点击按钮时,我希望它绘制下一张卡片并生成新的总数。但是,每当我单击点击按钮时,它都会完美地绘制新卡,但它会在我已经绘制的卡之上创建所有新卡。

如何阻止重绘方法选择新的随机卡片并在整个程序中保持它们相同?我应该提一下,所有卡片都存储在一个数组中,并使用随机数生成器调用。此外,当我调整 java 窗口的大小时会发生这种情况。

如果被问到,我会发布代码,但我觉得这有一个简单的解决方案。

4

1 回答 1

1

您需要将“选择随机卡”逻辑移到绘制方法之外。

最好在第一次构建时计算数组中的所有卡片,而不是在绘制时随机选择。换句话说,当您创建“牌组”数组时,构建整个牌组,以便每张牌都知道它们是什么,甚至在用户开始收到牌组中的任何牌之前。这样,它们就不会在游戏过程中发生变化。如果您只讨论 52 张卡片或 52 张卡片的小倍数,那么数组仍然非常小,并且可以很快将整个数组随机化。

或者,您可以检查您的“选择随机卡”方法,上面写着这样的内容......

int cardValue = -1;

paintComponent(){
    if (cardValue == -1){
        cardValue = drawRandomCard();
    }
    // now paint it.
}

即 - 限制drawRandomCard()仅在卡还没有值的情况下运行。

但最终,最好的解决方案是将绘画代码与逻辑完全分离——它对于 GUI 活动(如绘画)与编程逻辑混合的糟糕编码实践。

于 2012-05-09T02:53:08.183 回答