我几天前开始使用Java,并且正在试验并在我从库中借来的Java教程中使用一些Java代码。
它告诉我如何使用java.awt中的Graphics2D将字符串绘制到applet上,并更改其字体颜色,大小,类型等。
现在我挑战自己让字符串出现在applet中的随机位置。我尝试使用Math.random()
来更改字符串的x-y坐标,但变量类型不同,我发现自己很困惑。有没有办法让每次打开applet时字符串都出现在随机位置? (我稍后会用.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*/
}
}
答案 0 :(得分:3)
你想使用类似的东西:
screen2D.drawString("Hello World!",
(int)(Math.random()*width),
(int)(Math.random()*height));
宽度和高度是您想要的X和Y的最大值。 请参阅此相关问题:“Generating random numbers in a range.”
答案 1 :(得分:2)
您可以尝试使用随机类:
Random r = new Random();
int x = r.nextInt(100);
int y = r.nextInt(100);
这将生成一个介于0和指定值之间的随机整数。
答案 2 :(得分: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
,则只会修剪尾随的十进制值。这可能是一件好事,这可能是一件坏事。我倾向于先把价值四舍五入,但那只是我。