第9回 課題の模範解答

課題の模範解答です。
   
課題1
△を表示
println("   *");
println("  * *");
println(" * * *");
println("* * * *");

 

課題2
半径2の円の面積を計算してコンソールに表示
print("半径2の円の面積 = ");
println(2*2*3.141592);

 

課題3
10, 11 ,12 , ‥ , 18 ,19 の合計の計算結果をコンソールに表示しなさい。
for文を用いること。

int sum = 0;
for(int i=10; i<=19; i++){
  sum = sum + i;
}
println("合計 = " + sum);

 
 
課題4
for文で||||||を描画する
size( 400, 400 );

for(int i=0; i<20; i++){
  line( i*20, 0, i*20, 399 );
}

 
 
課題5
ラインをいっぱい描いて、ラグビーボールっぽい形を描画する
size( 400, 400 );

for(int i=0; i<21; i++){
  line( 0, i*20, i*20, 399 );
  line( i*20, 0, 399, i*20 );
}

   
  
課題6(難しい)
回転しながら小さくなっていく正方形を複数個描く
size(400,400);
background(255);

float a = 0.7; // 線分の分割の割合
int x1,x2,x3,x4; // 正方形の4隅の座標
int y1,y2,y3,y4;
int xx1,xx2,xx3,xx4; // 計算用
int yy1,yy2,yy3,yy4;

x1 = 3; y1 = 3;
x2 = 396; y2 = 3;
x3 = 396; y3 = 396;
x4 = 3; y4 = 396;

for(int i=0;i<12;i++){
  line(x1,y1, x2,y2);
  line(x2,y2, x3,y3);
  line(x3,y3, x4,y4);
  line(x4,y4, x1,y1);
  xx1 = (int)((x2 - x1)*a + x1);
  yy1 = (int)((y2 - y1)*a + y1);
  xx2 = (int)((x3 - x2)*a + x2);
  yy2 = (int)((y3 - y2)*a + y2);
  xx3 = (int)((x4 - x3)*a + x3);
  yy3 = (int)((y4 - y3)*a + y3);
  xx4 = (int)((x1 - x4)*a + x4);
  yy4 = (int)((y1 - y4)*a + y4);
  x1 = xx1; y1 = yy1;
  x2 = xx2; y2 = yy2;
  x3 = xx3; y3 = yy3;
  x4 = xx4; y4 = yy4;
}