2012-11-01 172 views
0

我不知道我是否正确调用GOval方法。我的目标是创建目标公司徽标,但有5个圈子。我应该在窗口中居中目标符号,并且具有由命名常量控制的圆和维数。
调用GOval方法

我从GOval bigCircle开始,那是我最红的外部实心圆。我是否正确地合并了createFilledCircle方法?

到目前为止,我只有三个圈子,因为我们构建的是以前的作业,而该作业只有三个圈子。另外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; 

回答

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. 
} 
0

我做了同样的任务,并成功地使用此代码完成了它。我很抱歉,这是sl and不驯的形式;当我第一次学习如何用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); 
} 
} 
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); 

    } 
}