クラスのどこかで初期化された、数値の配列が次のようになっていると仮定します。
int[] 数値 = 新しい 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 の Random 実装の詳細な説明については、このスレッドを参照してください。
あなたの他の問題については、あなたが何を達成しようとしているのかよくわかりません。詳細を教えてください。
アップデート
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
}
}
}
DrawnImage クラス
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;
}
}