同じ配列内の前の要素を参照する配列を使用して、次の値を決定しました。これは、ポリゴンを描画するときに位置の相対値を取得できるようにするためです。構文エラーは報告されていませんが、この例で使用している三角形は、表示されていないか、存在していません。
この例では、ウィンドウの端や他の三角形に関係なく、ウィンドウの上半分に小さな黒い三角形をランダムに散らばらせたいと思います。以下は、私が達成しようとしているものの例を含むコードですが、自己参照配列を使用していません (私はこれを BlueJ で書き、BlueJ 以外では何も書きませんでした。継続的な書き方がわかりません)。 // の後に、2 つのクラスのそれぞれが始まる場所を書きました。
//ファーストクラス
import javax.swing.*;
public class patterns {
public static void main(String[] args) {
JFrame f = new JFrame("Example");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
example p = new example();
f.add(p);
f.setSize(400,400);
f.setVisible(true);
}
}
//次の授業
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Color;
public class example extends JPanel{
public void paintComponent (Graphics g){
super.paintComponent(g);
this.setBackground(Color.WHITE);
//The following is the part of the code that doesn't work.
g.setColor(Color.BLACK);
int x=0;//this x is used for the following while loop
int[] xC = new int[3];//these are the x coordinates of the random triangles
int[] yC = new int[3];//these are the y coordinates of the random triangles
while(x<14){//this while loop is used to make many triangles
xC[0]= (int)Math.random()*400;
xC[1]= xC[0]+(int)Math.random()*20;
xC[2]= xC[1]+(int)Math.random()*4;
yC[0]= (int)Math.random()*200;
yC[1]= yC[0]-(int)Math.random()*10;
yC[2]= yC[0]-(int)Math.random()*3;
g.fillPolygon(xC,yC,3);//I changed this to fillPolygon
x++;//this is so the loop will eventually end
}
//the following is the manual part that does work.
int[] xCe = new int[3];//this is the array of x coordinates for the triangle
xCe[0]= 200;
xCe[1]= 210;
xCe[2]= 213;
int[] yCe = new int[3];//this is the array of y coordinates for the triangle
yCe[0]= 300;
yCe[1]= 295;
yCe[2]= 299;
g.fillPolygon(xCe,yCe,3);//this polygon appears properly
//everything after this is just to help explain after compiling
g.drawString("There should be a whole bunch of little triangles that look",20,320);
g.drawString("sort of like this one, but on the top half of this window.", 40,340);
g.drawLine(170,270,200,290);
g.drawLine(194,289,200,290);
g.drawLine(197,285,200,290);
g.drawString("this one",140,260);
}
}
それらが見えなくなる原因は何ですか?それらが見えるようにしたいです。何が間違っているのかわかりません。それは自己参照配列ですか?それは fillPolygon() では許可されていませんか?