假设您的数字数组看起来像这样,在您的班级某处初始化:
int[] numbers = new int[]{ 123, 321, 456, 765, 923, 931 };
您可以创建如下所示的方法:
private int getRandomNumberFromArray(){
int min = 0;
int max = numbers.length;
return numbers[min + (int)(Math.random() * ((max - min) + 1))];
}
然后你可以这样调用该方法:
int randomNumberFromArray = getRandomNumberFromArray();
查看此线程以获取有关 Java 随机实现的详细说明。
至于您的其他问题,我不太确定您要完成什么。请提供更多细节。
更新
随着您的 OP 更新,我想我对您正在尝试做的事情有了更好的了解。请允许我修改。
首先,要使用 Slick2D 显示图像,这里有一个很好的简短视频教程。我建议您查看他关于该主题的系列,因为它们非常清晰简洁。
至于你的计时器,我在这里找到了这段代码。
int time;
public void update(GameContainer container, int delta) {
time += delta;
}
public void render(GameContainer container, Graphics g) {
g.drawString("Time : " + time/1000, 100, 100);
}
这将在屏幕上的 x=100, y=100 处绘制一个简单的计时器,它会自行更新。这是您可以用于测试目的的东西。至于你的随机间隔,你可以像这样扩展上面的代码。
int time;
int deadline; // initialize this somewhere in the start of your game
public void update(GameContainer container, int delta) {
time += delta;
}
public void render(GameContainer container, Graphics g) {
g.drawString("Time : " + time/1000, 100, 100);
// if the current time has passed the deadline, do something
if(time > deadline){
int min = 2;
int max = 3;
deadline = time + ((min + (int)(Math.random() * ((max - min) + 1))) * 1000); // reset the interval timer
// draw the image
int x = 100;
int y = getRandomNumberFromArray(); // this is the method I provided in my first part of the answer
Image img = new Image("path/file.png");
g.drawImage(img, x, y) // image file, x, y
}
}
这段代码创建了一个用作随机间隔计时器的截止日期。截止日期是当前时间的总和,将添加一个介于 2 和 3 之间的数字(乘以 1000,因为时间以毫秒为单位)。当当前时间超过此期限时,将创建一个随机图像。
至于显示多张图片,我会参考之前链接的教程。我认为这可以通过跟踪 ArrayList 中的图像来实现。然后在 render() 方法中渲染所有这些图像。但我不太确定,因为我只知道 Slick2D 的一些基础知识。
我还没有测试过这些,但我希望能指出你正确的方向。
更新 2
至于评论中的建议,这将是一种实施方式。
ArrayList<DrawnImage> images; // make sure you initialize this at the beginning as: images = new ArrayList<Image>();
int time;
int deadline; // initialize this somewhere in the start of your game
public void update(GameContainer container, int delta) {
time += delta;
}
public void render(GameContainer container, Graphics g) {
g.drawString("Time : " + time/1000, 100, 100);
// if the current time has passed the deadline, do something
if(time > deadline){
int min = 2;
int max = 3;
deadline = time + ((min + (int)(Math.random() * ((max - min) + 1))) * 1000); // reset the interval timer
// draw the image
int x = 100;
int y = getRandomNumberFromArray(); // this is the method I provided in my first part of the answer
images.add(new DrawnImage(new Image("path/file.png"), x, y));
for(DrawnImage di : images){
g.drawImage(di.image, di.x, di.y); // image file, x, y
}
}
}
绘制图像类
public class DrawnImage {
public Image image;
public float x;
public float y;
public DrawnImage(Image image, float x, float y){
this.image = image;
this.x = x;
this.y = y;
}
}