使用Java中的Turtle填充形状的颜色

时间:2018-01-05 20:22:26

标签: java turtle-graphics

我一直在寻找一段时间如何使用Java中的Turtle填充具有特定颜色的形状。 假设我有这样的事情:

private static void test(Turtle t1) {

    for (int count = 0; count < 4; count++) {
        t1.fd(100);
        t1.right(90);
    }

}

t1的位置:Turtle t1 = new Turtle();

上面的代码创建了一个简单的矩形,我想弄清楚的是如何用颜色(红色,绿色,蓝色)填充该矩形。我已经查看了这个link中的文档但到目前为止我无法弄明白。

感谢。

1 个答案:

答案 0 :(得分:2)

我已经看到了更有用的方法,例如begin_fill,然后&#34;为 Turtle Graphics 和end_fill >在 Python 中,似乎 Java 实现的工作方式不同,但我相信我已经实现了您所需要的(但我不确定是否会这样做&#39虽然是最好的方法但是我同意你的观点,我无法找到有关此问题的信息,您提供的link中描述的方法与来自 Java 代码中的 Turtle 对象。为什么?因为您的 Turtle 对象正在使用fd方法向前推进,而提供的文档说明有forward方法可以执行此操作(请确保您正在使用正确的库,在我的情况下我使用jturtle-0.1.1.jar,并且这些方法对于OP中的代码片段是准确的

Java代码:

package com.turtle.main;

import java.awt.Color;
import ch.aplu.turtle.Turtle;

public class TurtleMain {

    public static void main(String[] args) {

        Turtle turtle = new Turtle();

        // Init config
        turtle.setColor(Color.RED);
        turtle.setPenColor(Color.BLUE);
        turtle.setFillColor(Color.GREEN);

        // Draw rectangle
        for (int count = 0; count < 4; count++) {
            turtle.fd(100);
            turtle.right(90);
        }

        // Fill rectangle
        turtle.fill(1, 1);
    }
}

因此,当使用fill方法(制作技巧)时,你会发现其中一个没有参数,另一个期待 X Y 坐标。

从Turtle类中获取:

  /** Fills the region the Turtle is in. 

  A Region is bounded by lines 
  of any other color than the background color and by the border of 
  the Window. <br>

  @return the turtle to allow chaining.
  */
  public Turtle fill(){
    getPlayground().fill(this);
    return this;
  }
  /** Fills the region with coordinates <code>x</code> and <code>y</code>. 

  A Region is bounded by lines 
  of any other color than the background color and by the border of 
  the Window. <br>

  @return the turtle to allow chaining.
  */
  public Turtle fill(double x, double y){
    double oldX = getX();
    double oldY = getY();
    boolean hidden = isHidden();
    ht().setPos(x,y);
    getPlayground().fill(this);
    setPos(oldX, oldY);
    if(!hidden){
      st();
    }
    return this;
  }

但是,当我仅调用fill()时,它不起作用,但在X=1方法中指定Y=1fill(x, y)时,它可以正常工作(可能很好调试核心方法以查看发生了什么?)无论如何,我没有这样做但是在使用上面的代码时,这是输出:

enter image description here