import java.awt.*; import javax.swing.*; import java.util.Random; // Random を利用するので呼び出し public class Ex7_2 extends JPanel { int rr, gg, bb, x, y, wid; // 色(rr,gg,bb),位置(x,y), サイズ(wid)用の変数 Random rnd = new Random(); // Randomクラスの変数宣言・インスタンス生成 Person p[] = new Person[20]; // Personクラスのインスタンス public void paintComponent(Graphics g) { for (int i=0; i<20; i++) { rr = rnd.nextInt(256); // 赤色ランダム 0..255 gg = rnd.nextInt(256); // 緑色ランダム 0..255 bb = rnd.nextInt(256); // 青色ランダム 0..255 x = rnd.nextInt(401); // 位置x座標 0..400 y = rnd.nextInt(401); // 位置y座標 0..400 wid = rnd.nextInt(50)+1; // サイズ 1..50 p[i] = new Person(new Color(rr,gg,bb), x, y, wid); p[i].draw(g); } } public static void main(String[] args) { JFrame app = new JFrame(); app.add(new Ex7_2()); app.setSize(600, 500); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.setVisible(true); } static class Person { // 人クラス Color col; int[] xp = new int[24]; // 人の体をつくる x座標用配列 int[] yp = new int[24]; // 人の体をつくる y座標用配列 int x, y, wid; public Person(Color C1, int X, int Y, int W) { // コンストラクタ col = C1; x = X; y = Y; wid = W; xp[0] = xp[1] = x; xp[4] = xp[5] = xp[22] = xp[23] = (x+wid); xp[2] = xp[3] = xp[6] = xp[7] = xp[20] = xp[21] = (x+2*wid); xp[8] = xp[9] = xp[12] = xp[13] = xp[18] = xp[19] = (x+3*wid); xp[10] = xp[11] = xp[14] = xp[15] = (x+4*wid); xp[16] = xp[17] = (x+5*wid); yp[0] = yp[19] = yp[20] = yp[23] = y; yp[17] = yp[18] = yp[21] = yp[22] = (y+wid); yp[1] = yp[2] = yp[13] = yp[14] = (y+2*wid); yp[3] = yp[4] = yp[11] = yp[12] = yp[15] = yp[16] = (y+3*wid); yp[7] = yp[8] = (y+4*wid); yp[5] = yp[6] = yp[9] = yp[10] = (y+5*wid); } public void draw(Graphics g) { // 描画メソッド g.setColor(col); // 体の色設定 g.fillPolygon(xp, yp, 24); // 体描画 g.setColor(Color.WHITE); // 目の色設定 g.fillOval(x+(int)(2.1*wid), y+(int)(0.1*wid), wid/2, wid/2); // 目 } } }