ここでは、ドリトルを使ってプログラムを作っている方から寄せられた質問などのうち、 問い合わせが多いものについてサンプルプログラムを例示します。
かめたで描いた図形は、「図形を作る」のメソッドで部品化できます。 部品化した図形は、タイマーの処理を利用することで一定間隔で移動することができます。 ここでは、棒という図形を描いて、これを右から左に動かしています。(対応:JAVA版/JS版)
//////step1 動かしたい図形を作る//////// かめた=タートル!つくる。 「かめた!100 歩く 90 右回り」!4 繰り返す。 棒=かめた!(青) 図形を作る。 棒!200 100 位置。 //////step2 図形を動かす////// 時計=タイマー!作る。 時計!「棒!-20 0 移動」実行。
かめたは「ぺんなし」のメソッドを利用することで、線を描かずに移動するようになります。 なお再び線を引かせたい場合は「ぺんあり」メソッドを利用します。(対応:JAVA版/JS版)
//////step1 かめたを動かして迷路を描く//////// かめた=タートル!作る。 かめた!100 歩く 90 左回り 100 歩く 90 右回り 200 歩く 90 右回り 50 歩く 90 右回り 140 歩く 90 左回り 100 歩く 90 右回り 160 歩く。 迷路=かめた!図形を作る。 //////step2 かめたの位置を迷路の入り口に移動する////// かめた!ぺんなし。 かめた!90 右回り 25 歩く 90 右回り。
かめたの「衝突」メソッドに、ぶつかった相手をを消す命令を書くことで、 図形にぶつかった瞬間に、衝突した対象の図形などを消去する動作を実現できます。(対応:JAVA版/JS版)
//////step1 図形を描く//////// かめた=タートル!作る。 「かめた!100 歩く 90 右回り」!4 繰り返す。 四角=かめた!(赤)図形を作る。 四角!250 50 位置。 //////step2 かめたの移動////// 時計=タイマー!作る。 かめた!ぺんなし。 時計!「かめた!10 歩く」実行。 //////step 3 図形にぶつかったらかめた消滅////// かめた:衝突=「自分!消える。」。
ゲーム中に、失敗した場合などに「ゲームオーバー」と表示し、 成功した時には「ゲームクリア」と表示したい場合があります。
このときには、フラグ(変数)と、タイマーの処理である「最後に実行」を利用することで これらを実現することができます。
下記の例では、開始から5秒間以上 かめたが図形にぶつからなければ「ゲームクリア」と表示し、 開始から五秒以内に図形にぶつかったら「ゲームオーバー」と表示します。(対応:JAVA版/JS版)
//////step1 図形を描く//////// かめた=タートル!作る。 「かめた!100 歩く 90 右回り」!4 繰り返す。 四角=かめた!(赤)図形を作る。 四角!250 50 位置。 //////step2 かめたの移動////// 時計=タイマー!作る。 時計!5秒 時間。 時計!「かめた!10 歩く」実行。 //////step 3 操作ボタン////// 操作ボタン=ボタン!”右”作る。 操作ボタン:動作=「かめた!20 右回り」。 //////step 4 図形にぶつかったらかめた消滅&ゲーム終了をチェック////// :ゲーム状態=””。 かめた:衝突=「 :ゲーム状態=”ゲームオーバー”。 自分!消える。 時計!中断。 」。 //////step 5 時計が中断したときの処理を判断して実行////// 時計!「 「:ゲーム状態==”ゲームオーバー”」!なら「 ラベル!”ゲームオーバー”作る 」そうでなければ「 ラベル!”ゲームクリア”作る 」実行。 」最後に実行。
色オブジェクトを使うことによって、図形を塗るときの色を自由に作ることができます。 色の指定はRGBカラーを利用できます。 この例では、三角形を描き、桜色で塗っています。(対応:JAVA版/JS版)
/////////Step1:図形を描く///////// かめた=タートル!作る。 三角=「かめた!60 歩く 120 右回り」!3 繰り返す 図形を作る。 /////////Step2:図形を塗る///////// 桜色 = 色!255 200 200 作る。 // 赤 緑 青 の順番で混ぜる光の色を指定(0-255) 三角!(桜色)塗る。
”タイマー!「・・・」実行”の命令は、指定された回数(あるいは時間)だけ「」内に書かれた内容を繰り返します。 一つのプログラムの中に”タイマー!「・・・」実行”の命令が2つ以上あるときは、 一つ目の内容を指定した回数だけ繰り返した後に、次の繰り返す内容が実行されます。 下記は、こちらを利用して星を動かすプログラムです。(対応:JAVA版/JS版)
/////////Step1:図形を描く///////// かめた=タートル!作る。 星=「かめた!60 歩く 144 左回り」!5 繰り返す 図形を作る。 星!(黄色)塗る。 /////////Step2:図形を異なる動きで順次うごかす///////// 時計=タイマー!作る。 時計! 0.1秒 間隔 2秒 時間。 時計!「星!5 5 移動する。 」実行。 時計!「星!5 -5 移動する。 」実行。 時計!「星!10 右回り。 」実行。 時計!「星!消える。 」実行。
タイマーのオブジェクトを複数作り、それぞれの実行タイミングを設定することで、 図形を動かす命令の実行タイミングを変えることができます。(対応:JAVA版/JS版)
/////////Step1:図形を描く///////// かめた=タートル!作る。 三角=「かめた!60 歩く 120 左回り」!3 繰り返す 図形を作る。 三角!(赤)塗る。 星=「かめた!60 歩く 144 左回り」!5 繰り返す 図形を作る。 星!(黄)塗る。 /////////Step2:図形を異なるタイミングで動かす///////// 星時計=タイマー!作る。 星時計! 1秒 間隔 10秒 時間。 星時計!「 星!10 右回り。 星!-1 -1 移動する。 」実行。 三角時計=タイマー!作る。 星時計! 0.1秒 間隔 15秒 時間。 三角時計!「 三角! 1 1 移動する。 」実行。
マウスのカーソル位置を取得して、その位置に図形を移動することができます。 下記は、描いた星マークをマウスのカーソル位置に移動するプログラムです(対応:JAVA版)
/////////Step1:図形を描く///////// かめた=タートル!作る。 大星=「かめた!60 歩く 144 左回り」!5 繰り返す 図形を作る。 大星!(黄色)塗る。 /////////Step2:図形を異なるタイミングで動かす///////// 時計=タイマー!作る。 時計!100秒 時間 0.1秒 間隔。 時計!「 大星!(マウス!横の位置?) (マウス!縦の位置?) 位置。 」実行。
描いた図形の中心位置を取得し、その位置に別の図形を移動するようにプログラムすることで、 アニメーション作成時に常に同じ位置に重なって表示する図形を書くことができます。(対応:JAVA版)
/////////Step1:図形を描く///////// かめた=タートル!作る。 三角=「かめた!60 歩く 120 左回り」!3 繰り返す 図形を作る。 三角!(黄色)塗る。 点=かめた!10 円 図形を作る。 点!(赤)塗る。 座標表示=ラベル!"X:--- Y:---" 作る。 /////////Step2:図形を異なるタイミングで動かす///////// 時計=タイマー!作る。 時計!10秒 時間 0.1秒 間隔。 時計!「 三角! 2 -2 移動する。 点!( 三角のX座標)(三角のY座標) 位置。 三角のX座標=(三角!getx)。 三角のY座標=(三角!gety)。 座標表示!("X:" + (三角のX座標) + " Y:" + (三角のY座標) ) 書く。 」実行。
タートルオブジェクトの「衝突」メソッドに、「タートル:跳ね返る」を設定することで、 タートルが図形と衝突した時に、跳ね返ったような動作を追加することができます。(対応:JAVA版/JS版)
かめた=タートル!作る。 かめた!15 線の太さ 。 円=かめた!150 円 図形を作る 0 150 移動する。 かめた:衝突=タートル:跳ね返る。 かめた!(乱数(360))向き ペンなし。 時計=タイマー!作る。 時計!0.05秒 間隔 100秒 時間。 時計!「 かめた! 5 歩く。 」実行。
図形の位置を、数式と繰り返し回数を利用して求めることで、 放物線を描く軌道の動きを実現することができます。(対応:JAVA版/JS版)
かめた=タートル!作る (赤) 線の色。 かめた:初期角度 = 45度。 かめた:初期位置x = かめた!横の位置?。 かめた:初期位置y = かめた!縦の位置?。 かめた:初速度 = 70。 時計=タイマー!作る 8秒 時間 0.01 間隔。 時計!「|t0 | t1 = t0 /10 . x0 = かめた:初期位置x。 y0 = かめた:初期位置y。 v0 = かめた:初速度。 // 初速度 s0 = かめた:初期角度。 // 打ち上げ角度 x位置=(x0 ) +(v0) * (t1) * cos( s0 ) 。 y位置=(y0) + (v0) * (t1) * sin( s0) - 9.8 * (t1) * (t1) 。 かめた!(x位置 )(y位置)位置。 」 実行。
ボタンを押したことを契機に、別の動きを実現したい時はフラグ(変数)をうまく使うと実現できます。 この例では、かめたの動き方を、ボタンを押す前後で変化させます。(対応:JAVA版/JS版)
直進状態=はい。 動作変更ボタン=ボタン!”動作変更” 作る。 動作変更ボタン:動作=「 :直進状態 = いいえ。 」。 かめた=タートル!作る。 時計=タイマー!作る。 時計!60 時間。 時計!「 かめた!5 歩く。 「(:直進状態)== いいえ」!なら「かめた!5 右回り。 」実行。 」実行。