

題名にも書きましたが、Rotateするごとに長方形の辺の色を  
赤→オレンジ→黄→緑→青→紫  
と変えていきたいのですが、以下のプログラムでは、長方形左下からスタートし、  
赤→オレンジ→黄→緑→青→紫  
と色が変化していくのですが、紫が終了した時点で（亀が長方形右上に到達した時点で）また最初に戻って（長方形左下につまりスタート地点に戻る）しまいます。

どんなプログラムにしたいかといいますと、紫が書き終わった時点でも、続けざまに、つまり、  
赤→オレンジ→黄→緑→青→紫→赤→オレンジ→黄→緑→青→紫→赤→オレンジ→黄→緑…  
としていきたいのです。

現時点でのプログラム

[code]

    public class RainbowTurtle {
        public void draw() {
        Turtle t1 = new Turtle();
        t1.move(100, 200);
        t1.penDown();
            t1.setColor(java.awt.Color.RED);
        t1.go(100);
    
        Turtle t2 = t1;
        t2.rotate(90);
            t2.setColor(java.awt.Color.ORANGE);
        t2.go(100);
    
        Turtle t3 = t2;
        t3.rotate(90);
            t3.setColor(java.awt.Color.YELLOW);
        t3.go(100);
    
        Turtle t4 = t3;
        t4.rotate(90);
            t4.setColor(java.awt.Color.GREEN);
        t4.go(100);
    
            Turtle t5 = t4;
        t5.rotate(90);
            t5.setColor(java.awt.Color.BLUE);
        t5.go(100);
    
            Turtle t6 = t5;
        t6.rotate(90);
            t6.setColor(java.awt.Color.MAGENTA);
        t6.go(100);
        }
    
        public static void main(String[] args) {
        RainbowTurtle rect = new RainbowTurtle();
    
            while(true){
        rect.draw();
            }
       }
    }
    
[/code]

このプログラムをどうやって書き換えれば、期待している結果となるのでしょうか。  
ご指摘よろしくお願いします。


CC BY-SA 4.0
2021-06-27T11:27:32.807
77815
2021-06-27T16:15:49.740
45103
question
java
Rotateするごとに長方形の辺の色を変える


whileの無限ループ中に`draw`をコールするのではなく、`draw`の中で無限ループさせれば目的の動作は達成できるはずです。  
亀が

  * 色変更する
  * 直進する
  * 90度回転する

という動作が繰り返し行われるよう意識してコーディングしていきましょう。

[code]

      public void draw() {
        Turtle t1 = new Turtle();
        t1.move(100, 200);
        t1.penDown();
        //初期位置設定とpenDownまではループの外
        while(true){
          t1.setColor(java.awt.Color.RED);
          t1.go(100);
          t1.rotate(90);
          （以下略）
        }
      }
    
[/code]

mainメソッド側の`while`は必要ありません。


CC BY-SA 4.0
2021-06-27T16:15:49.740
77822
2021-06-27T16:15:49.740
46944
77815
answer