0

GOvalメソッドを正しく呼び出しているかどうかわかりません。私の目標は、5つの円でターゲット企業のロゴを作成することです。ターゲットシンボルをウィンドウの中央に配置し、円の数と寸法を名前付き定数で制御することになっています。

私はGOvalbigCircleから始めています。これは、赤で塗りつぶされた最も外側の円です。createFilledCircleメソッドを適切に組み込んでいますか?

以前の課題を基に作成していて、その課題には3つのサークルしかなかったため、これまでのところ3つのサークルしかありません。また、N_CIRCLEはどのように画像に適合しますか?

import acm.program.*;
import acm.graphics.*;
import java.awt.*;


public class TargetSymbol extends GraphicsProgram {

public void run(){

    double x = getWidth() / 2;
    double y = getHeight() / 2;




    GOval bigCircle = createFilledCircle(x - OUTER_RADIUS, y - OUTER_RADIUS, 2 * OUTER_RADIUS, 2 * OUTER_RADIUS);
    createFilledCircle.setFilled(true);
    createFilledCircle.setColor(Color.RED);
    add(createFilledCircle);        

    GOval middleCircle = new GOval(100, 100, 200, 200);
    middleCircle.setFilled(true);
    middleCircle.setColor(Color.WHITE);
            add(middleCircle);      



    GOval innerCircle = new GOval(155, 150, 100, 100);
    innerCircle.setFilled(true);
    innerCircle.setColor(Color.RED);
    add(innerCircle);






}
private GOval createFilledCircle(double x, double y, double r, Color color){
    GOval circle = new GOval( x-r, x-y, 2 * r, 2 * r);
    circle.setColor(color);
    circle.setFilled(true);
    return circle;


}


private static final int N_CIRCLE = 5; 
private static final double OUTER_RADUS = 75;
private static final double INNER_RADIUS = 10;
4

3 に答える 3

1

私はあなたが正しい考えを持っていると言うでしょう。

GOval bigCircle = createFilledCircle(x - OUTER_RADIUS, y - OUTER_RADIUS, 2 * OUTER_RADIUS, 2 * OUTER_RADIUS);
createFilledCircle.setFilled(true);
createFilledCircle.setColor(Color.RED);

createFilledCircleという変数はないため、塗りつぶしに設定したり、色を設定したりすることはできません。これをbigCircleに変更することもできますが、createFilledCircle()メソッドでこれらの値をすでに設定しているため、冗長になります。

これらの2つの部分を完全に取り除き、次の部分を残すことをお勧めします。

GOval bigCircle = createFilledCircle(x - OUTER_RADIUS, y - OUTER_RADIUS, 2 * OUTER_RADIUS, 2 * OUTER_RADIUS);

N_CIRCLE、私はそこにある円の数を表すと仮定することしかできません。たとえば、N_CIRCLEが5の場合、外側の赤い円、その内側の白い円、その白い円の内側の赤い円などがあります。

したがって、あなたはあなたが持っている円の量(N_CIRCLE)に関連して円を作成するループを使用したいと思います。

例えば

for(int a = 0; a < N_CIRCLE; a++)
{
    Create a circle that is smaller than the outer one
    Set it's color/fill etc.
}
于 2012-11-01T01:29:48.183 に答える
0

私はこれと同じ割り当てを行い、このコードを使用して正常に完了しました。ずさんで形が悪いことをお詫びします。私が最初にJavaで書く方法を学んだときに書いた。

/*
 * File: Target.java
 * Name: 
 * Section Leader: 
 * -----------------
 * This file is the starter file for the Target problem.
 */

import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class Target extends GraphicsProgram {   
public void run() {
    /* You fill this in. */

    double moveX = getWidth()/2 - 36;
    double moveY = getHeight()/2 - 36;

    GOval outerRed = new GOval(72, 72);
    outerRed.setFilled(true);
    outerRed.setColor(Color.RED);
    outerRed.setFillColor(Color.RED);
    outerRed.move(moveX, moveY);

    GOval middleWhite = new GOval(12.6, 12.6, 46.8, 46.8);
    middleWhite.setFilled(true);
    middleWhite.setColor(Color.WHITE);
    middleWhite.setFillColor(Color.WHITE);
    middleWhite.move(moveX, moveY);

    GOval innerRed = new GOval(25.2, 25.2, 21.6, 21.6);
    innerRed.setFilled(true);
    innerRed.setColor(Color.RED);
    innerRed.setFillColor(Color.RED);
    innerRed.move(moveX, moveY);

    add(outerRed);
    add(middleWhite);
    add(innerRed);
}
}
于 2015-06-01T19:55:33.453 に答える
0

定数を使用したこれに対する私の解決策は次のとおりです。

/*
 * File: Target.java
* Name: 
* Section Leader: 
* -----------------
* This file is the starter file for the Target problem.
*/

import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class Target extends GraphicsProgram {   
    private static final int RADIUS_OUTER_CIRCLE = 72;
    private static final int RADIUS_MID_CIRCLE = 54;
    private static final int RADIUS_INNER_CIRCLE = 32;

    public void run() {

        GOval outerCircle = new GOval(getWidth()/2 - RADIUS_OUTER_CIRCLE/2 , getHeight()/2 - RADIUS_OUTER_CIRCLE/2, RADIUS_OUTER_CIRCLE, RADIUS_OUTER_CIRCLE);
        outerCircle.setFilled(true);
        outerCircle.setFillColor(Color.RED);
        add(outerCircle);

        GOval midCircle = new GOval(getWidth()/2 - RADIUS_MID_CIRCLE/2 , getHeight()/2 - RADIUS_MID_CIRCLE/2, RADIUS_MID_CIRCLE, RADIUS_MID_CIRCLE);
        midCircle.setFilled(true);
        midCircle.setFillColor(Color.WHITE);
        add(midCircle);

        GOval innerCircle = new GOval(getWidth()/2 - RADIUS_INNER_CIRCLE/2 , getHeight()/2 - RADIUS_INNER_CIRCLE/2, RADIUS_INNER_CIRCLE, RADIUS_INNER_CIRCLE);
        innerCircle.setFilled(true);
        innerCircle.setFillColor(Color.RED);
        add(innerCircle);

    }
}
于 2016-05-30T11:41:14.063 に答える