第10回 課題

  
課題1
    
<演習1>の400個の〇を描くプログラムを、色もランダムになるように修正しなさい。
 
 <実行例>
 
 
 
  
課題2
    
下記のソースはマウスをクリックすると、その位置に×を描画するプログラムである(×は2本のラインを交差して描画する)。
また、×は毎回ランダムで色が変わるようにしたい。
/* 空欄(複数行)*/ を埋めて、プログラムを完成させなさい。
 
void setup()
{
  size(400, 400);
  background(255);
  strokeWeight(3);
}

void draw(){}

void mousePressed()
{
  /* 空欄(複数行) */
}

  
 <実行例> 
 
 
 
  
課題3
    
下記のソースは、砲台(インベーダーゲームのような)を描画するプログラムである。
これを、マウスの水平位置がそのまま砲台の水平位置になるものとして移動するように修正しなさい。
  
float hx; // 砲台のx座標

void setup()
{
  size(400, 400);
  noStroke();
  hx = 200.0;
}

void draw()
{
  background(0);

  fill(255,255,255);
  rect( hx-20, 360, 40, 20);
  rect( hx-3, 360-6, 6, 10);
}

    
 <実行例> 
  
  
 
  
課題4
    
課題3のプログラムで、マウスボタンを押すと弾が発射されるように修正しなさい。
なお、弾は画面上に1個のみ存在するものとして、連射する必要はない。
実行の様子は下記の動画を参考にすること。
 
  実行例の動画
 
  
  
 
  
課題5(難しい)
    
課題4のプログラムをさらに改良し、マウスボタンを押している間、弾が連続で発射されるように修正しなさい。
配列を使う必要があるが、例えば
  int [] a;
  a = new int[8];
  for(int i=0;i<8;i++){ a[i] = i*2; }
  for(int i=0;i<8;i++){ System.out.print(a[i]+ " "); }
とすると、実行結果は
 0 2 4 6 8 10 12 14
と表示される。
さらに、発射された弾は少しブレるようにすること。

実行の様子は下記の動画を参考にしなさい。
 
  実行例の動画
 
  
  
 
 
 

課題の提出について

課題1〜5のプログラムソースを1個のテキストファイルWordではないので注意)にコピペして、そのテキストファイルをCerezoから提出しなさい。
ファイル名は他の人と重複しないように

   [自分の学籍番号]+"_kadai10.txt"  (例: "5412016_kadai10.txt" など

のようにすること。
なお、実行結果の画像は提出しなくてよい

提出先はCerezoの ICT演習、第10回課題 
 
 
<提出するテキストファイルの作成例>
第10回 課題の回答  5412099 福山太郎

- 課題1 -----------------------------------------
size( 400, 400 );
background(255);
 
for(int i=0;i<20;i++){
  for(int j=0;j<20;j++){
    if( (i+j) / 2 == 0 ){
      fill( 0 ); // 黒色
    }else{
      fill(255); // 白色
    }
    ellipse( i*20 + 10, j*20 + 10, 18, 18 );
  }
}



- 課題2 -----------------------------------------
size( 480, 120 );

ellipse( 160, 60, 100, 100 ); // 左側に円を描画
smooth(); // 線が滑らかになる
ellipse( 300, 60, 100, 100 ); // 右側に円を描画

      :

- 課題3 -----------------------------------------
      :
      :