

以下のプログラムは六角形を書くプログラムですが、それに書き加えることで  
一辺一辺の色を変えて、六色の辺からなる六角形を書くプログラムを作成したいのですが、  
どうすればいいのかがよくわかりませんでした。

とりあえず、プログラムをいかに示します。

[code]

    public class SolidOrDot {
    
        public static void main(String args[]) {
        Turtle t;
    
        if (args.length > 0 && args[0].equals("dot")) {
            DotTurtle dt = new DotTurtle();
            dt.setLength(5);
            t = dt;
        }
        else {
            t = new Turtle(); 
        }
        
        t.move(100,200);
        t.penDown();
        t.go(100);
        t.rotate(60);
            t.go(100);
        t.rotate(60);
            t.go(100);
        t.rotate(60);
        t.go(100);
        t.rotate(60);
        t.go(100);
        t.rotate(60);
            t.go(100);
        }
    }
    
[/code]

ちなみに、色を付けるメソッドは、

[code]

    public void setColor(java.awt.Color c){
          this.t.setColor(c);
        }
    
[/code]

で与えられています。


CC BY-SA 4.0
2021-06-27T08:01:18.533
77813
2021-07-02T01:38:28.613
46879
question
java
rotateするごとに辺の色を変えていきたい


現状でどのような問題が発生しているのか(「メソッドをどこにどう書けばいいのか分からない」「`setColor`を記述しても実行すると黒い六角形が表示される」「コンパイルエラーが発生する」など)が分からないので回答に推測を含みます。

[code]

    t.go(100);    // 100ドット前へ進む = 線分を描く
    t.rotate(60); // 60度回転する
    
[/code]

「メソッドをどこにどう書けばいいのか分からない」ならば、上記メソッドの前か後に`setColor`メソッドを引数([java.awt.Color](https://docs.oracle.com/javase/jp/11/docs/api/java.desktop/java/awt/Color.html))付きで6箇所に異なる色を渡すよう記述すればいいです。  
メソッドの定義や構文については教材やご自身の質問への[回答](https://ja.stackoverflow.com/a/77653)などを確認してください。  
`setColor`メソッドの具体的な使い方は[Rotateするごとに長方形の辺の色を変える](https://ja.stackoverflow.com/q/77815)質問が参考になるかもしれません。

「`t.setColor(java.awt.Color.RED);`のようにコードを書き足しても色が変わらない」場合や、「下記のようなエラーでコンパイルできない」場合は質問文を更新してください。

[code]

    C:\test\java\SolidOrDot.java:6: エラー: シンボルを見つけられません
            this.t.setColor(c);
                ^
      シンボル: 変数 t
    エラー1個
    エラー: コンパイルが失敗しました
    
[/code]

老婆心ながらJavaのコードは各行に意味があって何かを実行しているので、コードを消したり増やしたりしながら何が起こるのかを確認すると教材の理解につながります。  
きちんとバックアップを取っておけばコード変更は怖くないです。がんばってください。


CC BY-SA 4.0
2021-07-02T01:38:28.613
77914
2021-07-02T01:38:28.613
9820
77813
answer