藤井さんの作品


/*1bc自由課題--「亀さん木を育てる」の巻。 作成日:10月27日 備考:苗木から育てて、だんだん木になります。  :SpeedはFastにしてご覧になることをお勧めします。 作成条件:1オリジナルメソッドを使う  2繰り返し文(for,while)を使う  3場合わけ(分岐=if)を使う */ import Turtle; class Tree extends Turtle{ /*スタートメソッド:タートルに描画を実行させる*/ void start(){ /*1.苗木を埋める*/ edawakare(20,30); //苗木をえがく lt(180); fd(40); //地面に帰る reset(); /*2.枝に枝が生える*/ edawakare(21,30); //少し成長した苗木 minieda(15,30); //さらに枝が生える rt(30); fd(42); //地面に帰る reset(); /*3.背が高くなり、枝が増える*/ edawakare(16,30); minieda(15,30); //両端に小さい枝が生える lt(150); eda(15); //真ん中に高い枝が育つ fd(32); //地面に帰る reset(); /*4.両端の枝が増え、さらに成長*/ fd(32); minieda(15,60);//新しい枝が下に生えてくる lt(120);//亀を上に向かせる rt(30);//右の枝用に角度をつける int i; for(i=1; i<=3; i++){ if(i%2 == 0){ //真ん中の枝が生える eda(15); } else{ //真ん中の両脇の枝が生える eda(13); } rt(150); } lt(120); //下に向く fd(32); //地面に降りる reset(); /*5.木が成熟する*/ fd(32); rt(60); int j; for(j=1; j<=5; j++){ if(j%2 == 0){ //真ん中をはさむ枝 eda(16); } if(j == 3){ //真ん中の枝 eda(15); } if(j == 1){ //両端の枝 eda(17); } if(j == 5){ //両端の枝 eda(17); } rt(150); //次の枝への角度調整 } lt(90); //下を向かせる fd(32); //地面に降りる /*おまけ(後処理)*/ lt(90); up(); fd(35); lt(120); //亀さんが木を見上げる(感動!) } /*edawakareメソッド:枝の分岐点を育てる*/ void edawakare(int x, int y){ //x=木の長さ y=枝の角度 fd(x*2); //木の幹を書く migieda(x,y);//右側の枝を書く modoru(x); hidarieda(x,y);//左側の枝をかく modoru(x); lt(180 - y);//上を向く } /*migiedaメソッド:右枝だけを北向きから育てる*/ void migieda(int x, int y){ //x=枝の長さ y=枝の角度 rt(y); fd(x); } /*hidariedaメソッド:左枝だけを右枝から帰ってきた方向から育てる*/ void hidarieda(int x, int y){ //x=枝の長さ y=枝の角度 rt(180-(y*2)); //左枝の伸びる方向へ角度をつける fd(x); } /*modoru メソッド:枝の分岐点に戻る*/ void modoru(int x){ rt(180); fd(x); } /*miniedaメソッド:先が分かれてるだけの枝が左右に育つ*/ void minieda(int x, int y){ //x=枝の長さ y=枝の角度 migieda(x,y); edawakare(5,30); modoru(x+10); hidarieda(x,y); edawakare(5,30); modoru(x+10); } /*edaメソッド:4本の細い別れ枝をもつ枝が育つ*/ void eda(int e){ //e=各細い枝までの幹の長さ。 int i; for(i=1; i<=4; i++){ if(i%2 == 1){ //右に枝をつくる(2本) fd(e); rt(30); fd(e-2); modoru(e-2); rt(150); } else{ //左側に枝を作る(2本) fd(e); lt(30); fd(e-2); modoru(e-2); lt(150); } } migieda(e-2,30); //枝の先を分岐枝にする modoru(e-2); lt(30);//下に向く fd(e*4); } } うまくできなかったとこ void start にある5の木が成熟するのところのif文ではif(j ==1)とif(j==5)は総括してelseにしたかったが、 elseにするとうまくいかなかった。理由もわからなかった。

> もとのページへ戻る