8 たくさんの亀

8.1 学習目標

8.2 複数の亀を使う

オブジェクト編では、いままで習った制御構造を利用して、簡単なゲームやアニメーションなどのアプリケーションを作っていきたいと思います。

アニメーションでは、「オブジェクト」と呼ばれるものを生成して、 そのオブジェクトに対して命令をすることになります。 その練習のために、まず、複数の亀を扱ってみましょう。

8.2.1 2匹の亀を使うプログラム

次のプログラムを見てみましょう。

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 8.2.1.1 亀_二匹.dama
  1: ※プログラム名:タートルを2匹使って、2つの円を描くプログラム
  2: ※作成者:秋山 優
  3: ※作成日:2009.11.14
  4: 
  5: ※授業に必要なライブラリを取り込む。
  6: TurtleLibraryを参照する。
  7: 
  8: ※環境を初期化する
  9: ウィンドウを初期化する。
 10: 
 11: ※亀太郎を生成
 12: 亀を新規作成して、亀太郎と名付ける。
 13: ウィンドウに亀太郎を追加する。
 14: 
 15: ※亀次郎を生成
 16: 亀を新規作成して、亀次郎と名付ける。
 17: ウィンドウに亀次郎を追加する。
 18: 
 19: 整数型を新規作成して、カウンタと名付ける。
 20: カウンタに0を入れる。
 21: カウンタ<360である限り{
 22: 
 23: 	※亀太郎は右回り
 24: 	亀太郎を右に1度回す。
 25: 	亀太郎を1ドット進める。
 26: 
 27: 	※亀次郎は左回り
 28: 	亀次郎を左に1度回す。
 29: 	亀次郎を1ドット進める。
 30: 
 31: 	カウンタにカウンタ+1を入れる。
 32: 
 33: }を繰り返す。
図 8.2.1.1 2匹の亀を使うプログラム

8.2.2 亀(オブジェクト)の生成

亀(オブジェクト)を一匹生成するには、次のような命令文を書きます。

※亀太郎を生成する。
亀を新規作成して、亀太郎と名付ける。
ウィンドウに亀太郎を追加する。

このように、

亀を新規作成して、<亀の名前>と名付ける。
ウィンドウに<亀の名前>を追加する。

と記述することによって、任意の名前の亀(オブジェクト)を生成し、命令を与えることができるようになります。

8.2.3 亀(オブジェクト)への命令

生成された亀(オブジェクト)に対しては、これまでと同様に、前進、後退、右回転、左回転、筆の有効化及び無効化といった命令を与えることができます。

このように、オブジェクトを生成して、 生成したオブジェクトに対して命令を行う手法を「オブジェクト指向プログラミング」といい、 現在のプログラミングでよく使われる手法です。

8.3 同時に動いているように見せるために

オブジェクトはいくつでも生成することができます。 次のプログラムを見てみましょう。

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 8.3.1 亀_四匹.dama
  1: ※プログラム名:タートルを4匹使って、4つの円を描くプログラム
  2: ※作成者:秋山 優
  3: ※作成日:2009.11.14
  4: 
  5: ※授業に必要なライブラリを取り込む。
  6: TurtleLibraryを参照する。
  7: 
  8: ※環境を初期化する
  9: ウィンドウを初期化する。
 10: 
 11: ※4匹の亀を生成
 12: 亀を新規作成して、亀太郎と名付ける。
 13: 亀を新規作成して、亀次郎と名付ける。
 14: 亀を新規作成して、亀三郎と名付ける。
 15: 亀を新規作成して、亀四朗と名付ける。
 16: ウィンドウに亀太郎を追加する。
 17: ウィンドウに亀次郎を追加する。
 18: ウィンドウに亀三郎を追加する。
 19: ウィンドウに亀四朗を追加する。
 20: 
 21: ※亀三郎と亀四朗は後ろに下がる
 22: 亀三郎を50ドット戻す。
 23: 亀四朗を50ドット戻す。
 24: 
 25: ※亀太郎は右回り
 26: 整数型を新規作成して、カウンタと名付ける。
 27: カウンタに0を入れる。
 28: カウンタ<360である限り{
 29: 	亀太郎を右に1度回す。
 30: 	亀太郎を1ドット進める。
 31: 	カウンタにカウンタ+1を入れる。
 32: }を繰り返す。
 33: 
 34: ※亀次郎は左回り
 35: カウンタに0を入れる。
 36: カウンタ<360である限り{
 37: 	亀次郎を左に1度回す。
 38: 	亀次郎を1ドット進める。
 39: 	カウンタにカウンタ+1を入れる。
 40: }を繰り返す。
 41: 
 42: ※亀三郎は右回り
 43: カウンタに0を入れる。
 44: カウンタ<360である限り{
 45: 	亀三郎を右に1度回す。
 46: 	亀三郎を1ドット進める。
 47: 	カウンタにカウンタ+1を入れる。
 48: }を繰り返す。
 49: 
 50: ※亀四朗は左回り
 51: カウンタに0を入れる。
 52: カウンタ<360である限り{
 53: 	亀四朗を左に1度回す。
 54: 	亀四朗を1ドット進める。
 55: 	カウンタにカウンタ+1を入れる。
 56: }を繰り返す。

このプログラムを下のプログラムと比較してみましょう。 (同じ図形を書くのですが、動きが異なるはずです。)

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 8.3.2 亀_四匹_弐.dama
  1: ※プログラム名:タートルを4匹使って、4つの円を描くプログラム
  2: ※       (同時に動くバージョン)
  3: ※作成者:秋山 優
  4: ※作成日:2009.11.20
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する
 10: ウィンドウを初期化する。
 11: 
 12: ※4匹のカメを生成
 13: 亀を新規作成して、亀太郎と名付ける。
 14: 亀を新規作成して、亀次郎と名付ける。
 15: 亀を新規作成して、亀三郎と名付ける。
 16: 亀を新規作成して、亀四朗と名付ける。
 17: ウィンドウに亀太郎を追加する。
 18: ウィンドウに亀次郎を追加する。
 19: ウィンドウに亀三郎を追加する。
 20: ウィンドウに亀四朗を追加する。
 21: 
 22: ※亀三郎と亀四朗は後ろに下がる
 23: 亀三郎を50ドット戻す。
 24: 亀四朗を50ドット戻す。
 25: 
 26: 整数型を新規作成して、カウンタと名付ける。※ループ用
 27: カウンタに0を入れる。
 28: カウンタ<360である限り{
 29: 	
 30: 	※亀太郎は右回り
 31: 	亀太郎を右に1度回す。
 32: 	亀太郎を1ドット進める。
 33: 
 34: 	※亀次郎は左回り
 35: 	亀次郎を左に1度回す。
 36: 	亀次郎を1ドット進める。
 37: 
 38: 	※亀三郎は右回り
 39: 	亀三郎を右に1度回す。
 40: 	亀三郎を1ドット進める。
 41: 
 42: 	※亀四朗は左回り
 43: 	亀四朗を左に1度回す。
 44: 	亀四朗を1ドット進める。
 45: 
 46: 	カウンタにカウンタ+1を入れる。
 47: 
 48: }を繰り返す。
図 8.3.1 4匹の亀を使うプログラム(1)
図 8.3.2 4匹の亀を使うプログラム(2)
コンピュータは同時に2度の命令をできない

2つ目のプログラムでは、亀を細かく切り替えて少しずつ動かすことによって、 4匹の亀が同時に動いているように見せることができます。

コンピュータは2つの仕事を同時に行うことはできません。 みなさんが使っているパソコンは、インターネットをやっている間にメールを見て、印刷しながらワープロも使ったりすることができます。 これは、実は、この亀の例のように、細かく切り替えていろいろな仕事を少しずつしているからなのです。

8.4 練習問題

8.4.1 問題1:たくさんの亀で絵を描こう

今まで描いた絵を、何匹かの亀を使って、亀の共同作業で描いてみよう。 そのときに、全ての亀が同時に働いているように見せよう。 余裕があったら、仕事の遅い亀や、仕事の速い亀を作ることはできるか、考えてみよう。