下記にあるコードは
四角形を9個作り、点が存在する四角形を青で塗り潰すコードなんですが、
一応これで思った通りに実行されます。
ですが、オブジェクト指向ではないような気がします。
何かもっと簡潔にコードをかけないでしょうか?
初心者なのでお手柔らかにお願いします。
lang
1package 問題; 2import java.awt.Color; 3import java.awt.Graphics; 4import java.awt.Point; 5import java.awt.Rectangle; 6import javax.swing.JFrame; 7 8 9 10public class CD591216Fujikake118 extends JFrame{ 11 12 private static final long serialVersionUID = 1L; 13 Rectangle rec = new Rectangle(70,70,70,70); // 四角形 14 Point p = new Point(0,0); // 座標 15 16 public CD591216Fujikake118(){ 17 setTitle("課題4"); 18 setSize(360,340); 19 setDefaultCloseOperation(EXIT_ON_CLOSE); 20 } 21 22 /*** paint():ウィンドウに描画するコードを記述する ***/ 23 public void paint(Graphics g){ 24 super.paint(g); 25 //円の座標の設定(x,y) 26 int ran1=(int)(Math.random()*210+70); 27 int ran2=(int)(Math.random()*210+70); 28 p.setLocation(ran1, ran2); 29 30 //九つの 四角形の描画 31 for(int j=0;j<210;j+=70){ 32 for(int i=0;i < 210;i += 70){ 33 34 g.drawRect(rec.x+i, rec.y+j, rec.width, rec.height); 35 36 37 //該当する四角を塗りつぶす 38 if(rec.x+i < p.x & rec.x+i+70 > p.x & 39 rec.y+j < p.y & rec.y+j+70 > p.y){ 40 g.setColor(Color.blue); 41 g.fillRect(rec.x+i, rec.y+j, rec.width, rec.height); 42 g.setColor(Color.black); 43 }//Point!もう一度黒に戻す! 44 } 45 } 46 //円の描写 47 g.fillOval(p.x, p.y, 10, 10); 48 } 49 50 /*** main ***/ 51 public static void main(String[] args){ 52 JFrame f = new CD591216Fujikake118(); 53 f.setVisible(true); 54 } 55}
ちなみにこの部分です。
lang
1//該当する四角を塗りつぶす 2 if(rec.x+i < p.x & rec.x+i+70 > p.x & 3 rec.y+j < p.y & rec.y+j+70 > p.y){ 4 g.setColor(Color.blue); 5 g.fillRect(rec.x+i, rec.y+j, rec.width, rec.height); 6 g.setColor(Color.black); 7 }//Point!もう一度黒に戻す! 8
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。