1

几天前我开始使用 Java,并在我从库中借来的 Java 教程中试验和玩弄一些 Java 代码。

它告诉我如何使用 java.awt 中的 Graphics2D 将字符串绘制到小程序上,并更改其字体颜色、大小、类型等。

现在我挑战自己让字符串出现在小程序中的随机位置。我尝试使用Math.random()来更改字符串的 xy 坐标,但变量类型不同,我发现自己很困惑。每次打开小程序时,有什么方法可以使字符串出现在随机位置?(稍后我将使用 .awt 按钮移动字符串。)

这是我的代码:

package game;
import java.awt.*;

public class Javagame extends javax.swing.JApplet{
    public void paint(Graphics screen) {
        Graphics2D screen2D = (Graphics2D) screen;
        Font font = new Font("Arial Black", Font.PLAIN, 20);
        screen2D.setFont(font);
        screen2D.drawString("Hello World!", 50, 50); /*right now it is set at 50, 50
        but I want random variables. Thanks*/

    }
}
4

3 回答 3

3

你想使用类似的东西:

screen2D.drawString("Hello World!", 
    (int)(Math.random()*width), 
    (int)(Math.random()*height));

其中宽度和高度是您想要的 X 和 Y 的最大值。请参阅此相关问题:“在范围内生成随机数。

于 2013-05-30T01:13:49.073 回答
2

您可以尝试使用随机类:

Random r = new Random();
int x = r.nextInt(100);
int y = r.nextInt(100);

这将生成一个介于 0 和指定值之间的随机整数。

于 2013-05-30T01:14:32.230 回答
1

从内存中,Math.ramdom()返回一个双精度值0-1。位置参数将需要一个int.

您需要将double值转换为int.

screen2D.drawString("Hello World!", (int)(Math.round(Math.random() * getWidth()), (int)(Math.round(Math.random() * getWidth()));

通常,如果你这样做(int)doubleValue,它只会修剪尾随的十进制值。这可能是好事,也可能是坏事。我倾向于先四舍五入,但这只是我。

于 2013-05-30T01:14:57.073 回答