| 変数の教え方について | ■↑▼ |
2012/04/13 (Fri) 15:27:25
枚方津田高校の古川です。いつもお世話になっています。
1年の情報Aで3~5時間ドリトルの導入をやったあとで2年の物理で力学の導入にプログラムをつかえないかなぁと考えています。
その中で変数の扱い方なんですが・・・・
かめさん=タートル!作る。
時計=タイマー!作る 0.01 間隔 300 時間。
時計!「かめさん!(v) 歩く。」実行。
v=0。
ボタン1=ボタン!”ボタン1”作る。
ボタン1:動作=「v=1」。
では動きません。
ボタン1:動作=「:v=1」。
と変数vをグローバル化すると動くのですがこのあたりの事情をどういう風に説明するのがわかりやすいでしょうか。
また変数vを「かめさん:v」とすべてインスタンス変数にするとうごくのですが、
時計!「かめさん!(v) 歩く。」実行。
のvまで「かめさん:v」にしないと動きません。
時計!「かめさん!(v) 歩く。」実行。
のなかのvはもしかしたら、かめさんオブジェクトのプロパティじゃなくて時計オブジェクトのプロパティなのでしょうか?
細かい質問で恐縮ですがよろしくおねがいします。
野望としては等速度直線運動からはじめて加速度運動、放物運動、円運動、分子運動とかいろいろやってみたいけど高校2年ではそんなには無理かなぁ。
以下は教案化しようとしている下書きです。
---------------------------------------------------------------
ドリトルで力学を
1年の3学期に情報Aで3h~5hドリトルの導入を行っている。
1時目:音楽でドドソソララソを鳴らして逐次実行。
2時目:歩く、左回り、繰り返す、で図を描く。三角、四角、五角、六角、星、とげとげ。
3時目:通路を通過するプログラム。
4時目:ボタンで操作して通路を通過。
5時目:ボタンで操作して宝集め。
2年の力学
等速直線運動を作ってみよう。
提出フォルダの中のdolittleフォルダの中のdolittle.jarをダブルクリック。
編集画面
かめさん=タートル!作る。
実行。
ここでちょっとpaintに寄り道。かめさんではなく自分を作ります。
スタート→すべてのプログラム→アクセサリー→ペイント
ホームの左をクリック→プロパティ→ピクセル→幅を32→高さを32
ドット絵で自分を描く。
ファイル→名前を付けて保存→ファイルの種類はjpg→me.jpg→保存
ファイル→ペイントの終了
ドリトルの編集画面を表示
かめさん!”me.jpg”変身する。
実行。
4行目に かめさん!100 歩く。 速すぎて見えませんね。
3行目に 時計=タイマー!作る 0.01 間隔 300 時間。 を記入。
4行目を 時計!「かめさん!1 歩く。」実行。 と変更。
ゆっくり動くようになりました。速さ1で等速直線運動をしています。
速さ2の等速直線運動に修正して観察しなさい。
速さ3の等速直線運動に修正して観察しなさい。
速さをボタンで変えられるようにしよう。
4行目を 時計!「かめさん!(v) 歩く。」実行。 と変更。
v=0。
ボタン1=ボタン!”ボタン1”作る。
ボタン1:動作=「v=1」。
実はこれでは動きません。
ボタン1:動作=「:v=1」。 と変更。
速さ2の等速直線運動のボタンを作りなさい。
速さ3の等速直線運動のボタンを作りなさい。
速さ-1の等速直線運動のボタンを作りなさい。
速さ-2の等速直線運動のボタンを作りなさい。
速さ-3の等速直線運動のボタンを作りなさい。
2012/04/19 (Thu) 16:07:22
すみません。お返事が抜けていました。
> この違いは、vが時計のオブジェクトの変数になっているからなのでしょうか。
変数は、メソッドの実行の場合はそのオブジェクトの変数を探してから、グローバルの変数を探します。
それ以外の実行の場合は、グローバルの変数を探します。
私のプログラムでは、前進はかめさんのメソッドですので、vはかめさんのvを探してから、なければグローバルのvを探します。
タイマーの実行はメソッドの実行ではありませんので、グローバルのvを探します。他のオブジェクトの変数は探しませんから、かめさんのvは見えないことになります。
2012/04/14 (Sat) 06:59:50
ありがとうございます。生徒にインスタンス変数の説明をするのは
敷居が高いので:vでやってみることにします。
そのときは
-------------------------------------------------
かめさん=タートル!作る。
時計=タイマー!作る 0.01 間隔 300 時間。
時計!「かめさん!(:v) 歩く。」実行。
:v=0。
ボタン1=ボタン!”ボタン1”作る。
ボタン1:動作=「:v=1」。
-------------------------------------------------
のようにすべてのvを:vにしたほうが、生徒にとっては分かりやすいか
ボタン1の中だけ:vにしたほうがいいかちょっと迷っています。
動くことが一番かなとも思いますし・・・
以下は自分中でのちょっとした疑問なんですが先生のプログラムはかめさんの中ではv
のままで動きますのに以下のように時計の中にvを書きますと動きません。
-------------------------------------------------
かめさん=タートル!作る。
時計=タイマー!作る 0.01 間隔 300 時間。
時計!「かめさん!(v) 歩く。」実行。
かめさん:v=0。
ボタン1=ボタン!”ボタン1”作る。
ボタン1:動作=「かめさん:v=1」。
-------------------------------------------------
以下のように時計の中もかめさん:vにすると動きます。
-------------------------------------------------
かめさん=タートル!作る。
時計=タイマー!作る 0.01 間隔 300 時間。
時計!「かめさん!(かめさん:v) 歩く。」実行。
かめさん:v=0。
ボタン1=ボタン!”ボタン1”作る。
ボタン1:動作=「かめさん:v=1」。
-------------------------------------------------
この違いは、vが時計のオブジェクトの変数になっているからなのでしょうか。
2012/04/13 (Fri) 15:40:17
古川先生、授業での利用をありがとうございます。
ボタン1:動作=「v=1」。
を実行すると、ボタン1のオブジェクトにvが定義されます。
他のオブジェクトからもvを見えるようにするには、ご指摘のように:vとしてグローバルにするのがわかりやすいと思います。
もしグローバルが美しくないと思われる場合は、タートルの速さの定義ですから、タートルのインスタンス変数にするのがよいと思います。
かめさん=タートル!作る。
かめさん:前進=「自分!(v)歩く」。
時計=タイマー!作る 0.01 間隔 300 時間。
時計!「かめさん!前進。」実行。
かめさん:v=0。
ボタン1=ボタン!”ボタン1”作る。
ボタン1:動作=「かめさん:v=1」。
| 原因不明のエラーが発生します。 | ■↑▼ |
2010/06/22 (Tue) 17:55:57
はじめまして。*(アスタリスク)と申します。
最近学校の授業でドリトルのタートルグラフィックスについて学習しました。
面白かったので自分でプログラムを書いてみました。
その翌週、授業でメソッドの作成について学習したので、自分で書いたプログラムに改良を加えることにしました。
ですが、メソッドを追加しただけでエラーが発生しました。
自分で調べても先生に聞いても分からないので、この掲示板を利用することにしました。
どなたかこのプログラムのデバックと、原因に関する解説をしていただけませんか?
ドリトルに関しては初心者ですので、あまりすごいプログラムではありませんが、よろしくお願いします。
なお、本文が長すぎるようなのでプログラムはこの後投稿します。
2012/02/17 (Fri) 07:52:07
次の行がエラーになっているようです。
カッコの数が多いので、どのカッコとどのカッコが対応しているかを確認してみてください。
わかりやすく行を分けて書くと、次のようになります。
・時計が繰り返すで終わっている。
・「が実行で終わっている。
など、いくつか原因がありそうです。
時計!6 回数「
「
敵たち!「|敵|敵! 30 0 移動する」それぞれ実行
」。実行
」! 3 繰り返す。
2012/02/17 (Fri) 00:16:00
時計=タイマー! 作る 1秒 間隔。が違うといわれます。
助けてください。
// カメ太の動き(ステップ1)
カメ太=タートル! 作る 90 左回り ペンなし 0 -250 位置。
左=ボタン! "左" "LEFT" 作る。
左:動作=「カメ太! -20 0 移動する」。
右=ボタン! "右" "RIGHT" 作る -670 265 位置。
右:動作=「カメ太! 20 0 移動する」。
// 発射ボタン(ステップ2)
カメ太:発射=「タイマー! 作る「自分! 20 歩く」実行」。
発射=ボタン! "発射" "UP" 作る -670 220 位置。
発射:動作=「カメ太! 作る 55 歩く"rocket.gif" 変身する 発射」。
// 敵たちの生成(ステップ3)
敵たち=配列! 作る。
敵=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち!(敵! -300 200 位置)書く。
敵たち!(敵! 作る -200 200 位置)書く。
敵たち!(敵! 作る -100 200 位置)書く。
敵たち!(敵! 作る 0 200 位置)書く。
敵たち!(敵! 作る 100 200 位置)書く。
// 敵たちの移動(ステップ4)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち!「|敵|敵! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち!「|敵|敵! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち!「|敵|敵! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ5)
カメ太:衝突=「自分! 消える」。
敵:衝突=「自分! 消える。敵たち!(自分)消す」。
// 敵たち2の生成(ステップ6)
敵たち2=配列! 作る。
敵2=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち2!(敵2! -300 250 位置)書く。
敵たち2!(敵2! 作る -200 250 位置)書く。
敵たち2!(敵2! 作る -100 250 位置)書く。
敵たち2!(敵2! 作る 0 250 位置)書く。
敵たち2!(敵2! 作る 100 250 位置)書く。
// 敵たち2の移動(ステップ7)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち2!「|敵2|敵2! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち2!「|敵2|敵2! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち2!「|敵2|敵2! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ8)
カメ太:衝突=「自分! 消える」。
敵2:衝突=「自分! 消える。敵たち2!(自分)消す」。
// 敵たち3の生成(ステップ9)
敵たち3=配列! 作る。
敵3=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち3!(敵3! -300 300 位置)書く。
敵たち3!(敵3! 作る -200 300 位置)書く。
敵たち3!(敵3! 作る -100 300 位置)書く。
敵たち3!(敵3! 作る 0 300 位置)書く。
敵たち3!(敵3! 作る 100 300 位置)書く。
// 敵たち3の移動(ステップ10)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち3!「|敵3|敵3! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち3!「|敵3|敵3! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち3!「|敵3|敵3! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ11)
カメ太:衝突=「自分! 消える」。
敵3:衝突=「自分! 消える。敵たち3!(自分)消す」。
// 敵たち4の生成(ステップ12)
敵たち4=配列! 作る。
敵4=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち4!(敵4! -300 150 位置)書く。
敵たち4!(敵4! 作る -200 150 位置)書く。
敵たち4!(敵4! 作る -100 150 位置)書く。
敵たち4!(敵4! 作る 0 150 位置)書く。
敵たち4!(敵4! 作る 100 150 位置)書く。
// 敵たち4の移動(ステップ13)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち4!「|敵4|敵4! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち4!「|敵4|敵4! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち4!「|敵4|敵4! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ14)
カメ太:衝突=「自分! 消える」。
敵4:衝突=「自分! 消える。敵たち4!(自分)消す」。
// 終了判定(ステップ20)
制限時間=30。
カウントダウン=フィールド! 作る -820 175 位置 150 0 移動する。
終了時計=タイマー! 作る 1秒 間隔(制限時間)時間。
終了時計!「|n|カウントダウン!(制限時間-n)書く。
「(敵たち! 要素数?) == 0」! なら「
ラベル! "GAME CLEAR!! "作る -100 200 位置。
終了時計! 中断
」実行
」実行。
2012/02/15 (Wed) 15:43:07
なるほど!
leはそういう意味だったのですね。
助かりました!ありがとうございます。
2012/02/15 (Wed) 10:49:52
わかりにくくてすみません。leは「less than or equal to」の略で「<=」のことですね。
「敵<=4」
という比較をしていますが、敵というのは
敵=タートル! 作る
で作られたタートルのようですので、数と比較することはできないと思います。
2012/02/15 (Wed) 10:43:42
わけのわからないエラーに困っています。
あ=タートル! 作る ペンあり。
あ! 90 向き。
「あ! 50 歩く 90 左回り 80 歩く 90 左回り」!2 繰り返す。
壁=あ! (黒)図形を作る。
壁! -200 -200 位置 作る。
壁! -400 -200 位置 作る。
壁! 0 -200 位置 作る。
壁! 200 -200 位置 作る。
壁! 400 -200 位置 作る。
あ! ペンなし 0 -300 位置。
時計=タイマー! 作る 1 回数 0.01 間隔。
左ボタン=ボタン!”←””LEFT”作る -500 -100 位置 50 50 大きさ。
左ボタン:動作=「時計!「あ! -10 0 移動する」実行」。
右ボタン=ボタン!”→””RIGHT” 作る。
右ボタン:動作=「時計!「あ! 10 0 移動する」実行」。
あ:発射=「タイマー!作る 0.5秒 間隔「自分!40 歩く」実行」。
発射ボタン=ボタン!”※””ENTER” 作る。
発射ボタン:動作=「あ!作る 50 歩く ”rocket.gif” 変身する 発射」。
右回避ボタン=ボタン!”右””DOWN”作る。
右回避ボタン:動作=「時計!「あ! 50 0 移動する」実行」。
左回避ボタン=ボタン!”左””UP”作る。
左回避ボタン:動作=「時計!「あ! -50 0 移動する」実行」。
あ:衝突=「|壁|壁! 消える」。
敵たち=配列! 作る。
敵=タートル! 作る ”ayumiAka.gif” 変身する ペンなし 90 右回り。
敵たち!(敵! 作る -300 200 位置)書く。
敵たち!(敵! 作る -200 200 位置)書く。
敵たち!(敵! 作る -100 200 位置)書く。
敵たち!(敵! 作る 0 200 位置)書く。
敵たち!(敵! 作る 100 200 位置)書く。
敵たち!(敵! 作る 200 200 位置)書く。
敵たち!(敵! 作る -300 200 位置)書く。
敵たち!(敵! 作る 300 200 位置)書く。
敵たち!(敵! 作る -300 300 位置)書く。
敵たち!(敵! 作る -200 300 位置)書く。
敵たち!(敵! 作る -100 300 位置)書く。
敵たち!(敵! 作る 0 300 位置)書く。
敵たち!(敵! 作る 100 300 位置)書く。
敵たち!(敵! 作る 200 300 位置)書く。
敵たち!(敵! 作る -300 300 位置)書く。
敵たち!(敵! 作る 300 300 位置)書く。
敵たち1=敵たち! 作る。
敵2=タートル! 作る ”ayumiBrue.gif” 変身する ペンなし 90 右回り 90 90 位置。
敵たち1!(敵2! 作る -300 200 位置)書く。
敵たち1!(敵2! 作る -200 200 位置)書く。
敵たち1!(敵2! 作る -100 200 位置)書く。
敵たち1!(敵2! 作る 0 200 位置)書く。
敵たち1!(敵2! 作る 100 200 位置)書く。
敵たち1!(敵2! 作る 200 200 位置)書く。
敵たち1!(敵2! 作る -300 200 位置)書く。
敵たち1!(敵2! 作る 300 200 位置)書く。
敵たち1!(敵2! 作る -300 300 位置)書く。
敵たち1!(敵2! 作る -200 300 位置)書く。
敵たち1!(敵2! 作る 0 300 位置)書く。
敵たち1!(敵2! 作る 100 300 位置)書く。
敵たち1!(敵2! 作る 200 300 位置)書く。
敵たち1!(敵2! 作る -300 300 位置)書く。
敵たち1!(敵2! 作る 300 300 位置)書く。
移動=「「敵<=4」!なら「自分! 0.1 歩く 1 右回り 90秒 時間。」そうでなければ「自分! 0.1 歩く 2 左回り 3 歩く 7 右回り 80秒 時間。」実行する」!4 繰り返す。
敵2移動! 実行する。
時計1=タイマー! 作る 1秒 間隔。
時計1!6 回数「敵たち!「|敵|敵! 30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
時計1!12 回数「敵たち!「|敵|敵! -30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
時計1!12 回数「敵たち!「|敵|敵! 30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
時計1!12 回数「敵たち!「|敵|敵! -30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
時計1!12 回数「敵たち!「|敵|敵! 30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
時計1!12 回数「敵たち!「|敵|敵! -30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
時計1!12 回数「敵たち!「|敵|敵! 30 0 移動する」それぞれ実行」実行。
時計1!1 回数「敵たち!「|敵|敵! 0 -30 移動する」それぞれ実行」実行。
エラー
”le”という命令が見つかりません。
お助けください!
| 変身できる画像について | ■↑▼ |
2011/11/10 (Thu) 11:07:49
こんにちは。
授業でドリトルを使わせていただいてます。
変身できる画像の一覧が、いくら探しても見当たりません。
(もともと用意されているものです。)
ダウンロードページにマニュアルの補足として書かれているpngファイル以外の
gif画像などの一覧はどこにあるのでしょうか?
「ドリトルで学ぶプログラミング」第2版 にも載っていないようです・・・
よろしくお願いします。
2012/02/17 (Fri) 00:11:40
時計=タイマー! 作る 1秒 間隔。が違うといわれます。
助けてください。
// カメ太の動き(ステップ1)
カメ太=タートル! 作る 90 左回り ペンなし 0 -250 位置。
左=ボタン! "左" "LEFT" 作る。
左:動作=「カメ太! -20 0 移動する」。
右=ボタン! "右" "RIGHT" 作る -670 265 位置。
右:動作=「カメ太! 20 0 移動する」。
// 発射ボタン(ステップ2)
カメ太:発射=「タイマー! 作る「自分! 20 歩く」実行」。
発射=ボタン! "発射" "UP" 作る -670 220 位置。
発射:動作=「カメ太! 作る 55 歩く"rocket.gif" 変身する 発射」。
// 敵たちの生成(ステップ3)
敵たち=配列! 作る。
敵=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち!(敵! -300 200 位置)書く。
敵たち!(敵! 作る -200 200 位置)書く。
敵たち!(敵! 作る -100 200 位置)書く。
敵たち!(敵! 作る 0 200 位置)書く。
敵たち!(敵! 作る 100 200 位置)書く。
// 敵たちの移動(ステップ4)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち!「|敵|敵! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち!「|敵|敵! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち!「|敵|敵! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ5)
カメ太:衝突=「自分! 消える」。
敵:衝突=「自分! 消える。敵たち!(自分)消す」。
// 敵たち2の生成(ステップ6)
敵たち2=配列! 作る。
敵2=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち2!(敵2! -300 250 位置)書く。
敵たち2!(敵2! 作る -200 250 位置)書く。
敵たち2!(敵2! 作る -100 250 位置)書く。
敵たち2!(敵2! 作る 0 250 位置)書く。
敵たち2!(敵2! 作る 100 250 位置)書く。
// 敵たち2の移動(ステップ7)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち2!「|敵2|敵2! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち2!「|敵2|敵2! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち2!「|敵2|敵2! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ8)
カメ太:衝突=「自分! 消える」。
敵2:衝突=「自分! 消える。敵たち2!(自分)消す」。
// 敵たち3の生成(ステップ9)
敵たち3=配列! 作る。
敵3=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち3!(敵3! -300 300 位置)書く。
敵たち3!(敵3! 作る -200 300 位置)書く。
敵たち3!(敵3! 作る -100 300 位置)書く。
敵たち3!(敵3! 作る 0 300 位置)書く。
敵たち3!(敵3! 作る 100 300 位置)書く。
// 敵たち3の移動(ステップ10)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち3!「|敵3|敵3! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち3!「|敵3|敵3! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち3!「|敵3|敵3! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ11)
カメ太:衝突=「自分! 消える」。
敵3:衝突=「自分! 消える。敵たち3!(自分)消す」。
// 敵たち4の生成(ステップ12)
敵たち4=配列! 作る。
敵4=タートル! 作る"ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち4!(敵4! -300 150 位置)書く。
敵たち4!(敵4! 作る -200 150 位置)書く。
敵たち4!(敵4! 作る -100 150 位置)書く。
敵たち4!(敵4! 作る 0 150 位置)書く。
敵たち4!(敵4! 作る 100 150 位置)書く。
// 敵たち4の移動(ステップ13)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数「「敵たち4!「|敵4|敵4! -30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!1 回数「「敵たち4!「|敵4|敵4! 0 -10 移動する」それぞれ実行」。実行」! 3 繰り返す。
時計!6 回数「「敵たち4!「|敵4|敵4! 30 0 移動する」それぞれ実行」。実行」! 3 繰り返す。
// 衝突定義(ステップ14)
カメ太:衝突=「自分! 消える」。
敵4:衝突=「自分! 消える。敵たち4!(自分)消す」。
// 終了判定(ステップ20)
制限時間=30。
カウントダウン=フィールド! 作る -820 175 位置 150 0 移動する。
終了時計=タイマー! 作る 1秒 間隔(制限時間)時間。
終了時計!「|n|カウントダウン!(制限時間-n)書く。
「(敵たち! 要素数?) == 0」! なら「
ラベル! "GAME CLEAR!! "作る -100 200 位置。
終了時計! 中断
」実行
」実行。
2011/11/10 (Thu) 15:33:03
tonbo.gifについても、画像を用意しなくても使えると思います。
わかりづらくてすみません。この点も説明を追加したいと思います。
2011/11/10 (Thu) 15:16:46
ありがとうございます。
ダウンロードページ、参考にさせていただきます。
たとえば、本に出てくる"tonbo.gif"の画像ファイルですが、
これは、ダウンロードページには見当たりません。
どこか、掲載してあるところがあれば教えてください。
2011/11/10 (Thu) 12:42:00
わかりにくくて申し訳ありません。ダウンロードページを見ていただくと、一覧がありますのでご覧ください。
今後はマニュアル・書籍等にも掲載したいと思います。
http://dolittle.eplang.jp/index.php?%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9
| ゲームを終わらせられません。 | ■↑▼ |
2011/02/11 (Fri) 12:57:24
赤色のカメが長方形の図形にぶつかったらゲームクリア、
他の色のカメがぶつかったらゲームオーバー
という命令を出したいのですが、どうすればよいのでしょうか?
IF関数のようなものを使うのでしょうが、ピンポンゲームの作り方を参照しても
わかりません(><)
2012/02/16 (Thu) 19:16:16
タイマーの実行中に条件判定をしているからかもしれません。
(判定の行の前後にラベルなどで文字を表示してみると、タイマーが終わる前に表示されることがわかると思います)
タイマーの「待つ」という命令を調べてみてください。
2012/02/16 (Thu) 00:21:40
ゲームを終わらすことができません。助けてください。
これは、プログラムの一部です。
終焉のカウントダウン予告=ラベル! 作る "地球侵攻まで残り・・・” 書く 300 -200 位置。
ラベル! 作る ”秒” 書く -250 450 位置。
制限時間=100。
終焉のカウントダウン=フィールド! 作る 300 -250 位置。
終了時計=タイマー! 作る 1秒 間隔 (制限時間) 時間。
終了時計!「|n|終焉のカウントダウン!(制限時間-n)書く。
」実行。
敵:衝突=「自分! 消える。得点!10 増やす」。
得点=フィールド!作る 0 書く 100 50 大きさ 450 250 位置 (黄) 色。
「(得点! 読む)>= 20」!なら「ラベル!”地球侵攻を防ぎました!おめでとう!!!” 作る 200 200 位置。 ラベル!”くそ!撤退だ!” 作る 100 100 位置。終了時計!中断」そうでなければ「ラベル!”地球が侵攻されました・・・” 作る 200 200 位置。 ラベル!”Game Over” 作る 100 100 位置。 終了時計!中断」実行。
2012/02/13 (Mon) 21:49:29
タイマーに分岐させてラベルを作る行でエラー表示が出ているんですが
何が原因なのかがどうしても分からないです…
プログラミングの文章は合っているはずですし…
ここまで教えていただいて本当にありがとうございます!
2012/02/13 (Mon) 21:04:49
ぷにょさん、わだです。
まずはどこでエラーが出てるのかを確かめてください。
エラーが出た所を理解した上でもう一度考えてみてください。
2012/02/13 (Mon) 19:04:23
本当に何回も申し訳ないです!
このプログラムで大丈夫でしょうか?
ドリトルのサイトのお試し版(家でもできるやつ)でやったらエラーがでたのですが…
---
かめこ=タートル!作る”runner.png”変身する。
左ボタン=ボタン!”左””LEFT”作る。
左ボタン:動作=「かめこ! 30 左回り」。
右ボタン=ボタン!”右””RIGHT”作る。
右ボタン:動作=「かめこ! 30 右回り」。
時計=タイマー!作る 0.1秒 間隔 20秒 時間。
時計!「かめこ!5歩く。「(宝物!要素数?) == 0」!なら「ラベル!"おめでとう!!!"作る -100 200 位置。時計!中断 」実行」実行。
画面! (緑) 塗る。
宝物=配列!作る。
宝=タートル!作る "star.png" 変身する 。
宝物!(宝!(乱数(600)-300)(乱数(300)-150) 位置)書く。
宝物!(宝!作る (乱数(600)-300)(乱数(300)-150) 位置)書く。
宝物!(宝!作る (乱数(600)-300)(乱数(300)-150) 位置)書く。
宝物!(宝!作る (乱数(600)-300)(乱数(300)-150) 位置)書く。
宝物!(宝!作る (乱数(600)-300)(乱数(300)-150) 位置)書く。
かめこ:衝突=「|宝|宝! 消える。 宝物!(宝)消す」。
---
| メロディと旋律 | ■↑▼ |
2012/02/09 (Thu) 13:52:27
いつもおせわになっています、枚方津田の古川です。
今年も1年の3学期にドリトルでプログラミングの入門をやっています。
今年は他の教材で時間がかかりすぎてドリトルは5コマくらいになりました。
自分の予習がおそろかになっていて授業直前になってはじめて気がついたことがあります。
昨年使わせていただいたドリトルのバージョンでは
きらきらぼし=メロディ! 作る。
の「メロディ」を「旋律」に変えると予約語じゃないのでエラーがでるという説明に使わせてもらってたのですが、
ことしの2.30ではエラーが出ないんですね。「旋律」も予約語になったのですね。
去年使った教材だからといって予習をちゃんとやっとかないといけませんね。反省です。
2012/02/10 (Fri) 12:06:36
実際には、「旋律」は「メロディ」の別名としてオブジェクト名となっているのが使いやすいとおもいます。
予約語じゃないとエラーがでるよ、という例にはちょっとアドリブで「メロディー」というふうに長音記号をつけると予約語じゃなくなってエラーになります、という説明をしました。
いつもありがとうございます。
2012/02/10 (Fri) 08:58:45
いつもご利用ありがとうございます。
V2.3を確認したところ、「旋律」は「メロディ」の別名としてオブジェクト名になっていました。
使いやすいように改良していきますので、お気づきの点などがありましたらお知らせください。
| チャットプログラムで質問します | ■↑▼ |
2010/06/21 (Mon) 16:50:54
ドリトルを授業で活用しています。
とくにチャットプログラムは盛り上がるのですが、人間関係の悪いクラスは
偽名を使い始めます。もちろんかなり注意はしているのですが、なにか機械的に
ログを残す方法はありますでしょうか。
2012/01/25 (Wed) 13:22:06
ご利用ありがとうございます。前の章(Activity10)のサーバーの起動などは済んでいるわけですね。
11.1の送信プログラムと11.2の受信プログラムは、原理を説明のための短いサンプルですので、十分なチャットができるわけではありません。
11.1の送信プログラムでメッセージを書き込むたびに、11.2の受信プログラムを「実行!」ボタンで実行して表示してください。
2012/01/25 (Wed) 13:04:56
「チャットをつくろう」の章を学習しています。中学校です。
P66,67の送受信プログラムをしても、「はろー」以外は変化ない状態です。
どうすればよいか、教えてください。
2010/06/23 (Wed) 22:21:42
プログラムを入力させるときに、ユーザ名を使うのも手かもしれませんね。
名前=システム:user。
これを、意味を理解して任意の名前に修正する生徒さんがいたら、褒めてあげるということで。(^^
名前="かめた"。
2010/06/23 (Wed) 09:05:07
なるほど。積極的利用という道もありますね。
アドバイスありがとうございます。
ログを残す方法は別のアプリ(パケットキャプチャなど)で対処することにして
「成りすまし」の授業に発展してみたいと思います。ありがとうございます。
2010/06/22 (Tue) 23:04:08
野村先生、ご利用ありがとうございます。
私の授業では、偽名を積極的に活用しています。掲示板のニックネームはいくらでも成りすましが可能という説明に使えますので。
クラスに同じ姓や同じ名前の学生はいることが普通ですので、悪意はなくても「誰か、俺の名前で書いてる!」という声が聞こえたりします。
もしご不便でしたら、名前を乱数で生成してはいかがでしょうか。
名前=乱数(10000)。
| ≧が・・・ | ■↑▼ |
2012/01/15 (Sun) 16:15:47
得点が20以上でゲームクリアにしたいのですが、何故か≧だとなにもおきません
≦(以下)だと命令が通るのですが・・・
プログラムの一部です
//衝突の定義(ステップ5)
かめ:衝突=「自分! 消える」。
敵:衝突=「自分! 消える。敵たち!(自分)消す。得点!10 増やす」。
//終了時間(ステップ6)
制限時間=15。
カウントダウン=フィールド! 作る 150 0 移動する。
終了時計=タイマー! 作る 1秒 間隔 (制限時間) 時間。
終了時計!「|n|カウントダウン!(制限時間-n)書く。
」実行。
//得点表
得点=フィールド!”0” 作る 100 50 大きさ 450 250 位置 (黄) 色。
//勝敗
「(得点!読む)20」! なら「
ラベル! "おめでとう!!! "作る-100 200 位置。
終了時計! 中断
」実行。
2012/01/15 (Sun) 16:33:07
// 主役と左右の動き(ステップ1)
かめ=タートル! 作る 90 左回り ペンなし 0 -150 位置。
左=ボタン! "左" "LEFT" 作る -200 -180 位置。
左:動作=「かめ! -20 0 移動する」。
右=ボタン! "右" "RIGHT" 作る 50 -180 位置。
右:動作=「かめ! 20 0 移動する」。
// 発射ボタン(ステップ2)
かめ:発射する=「タイマー! 作る 「自分! 20 歩く」実行」。
発射=ボタン! "発射" "UP" 作る -50 -180 位置 100 45 大きさ。
発射:動作=「かめ! 作る 55 歩く "rocket.gif" 変身する 発射する」。
//敵たちの生成(ステップ3)
敵たち=配列! 作る。
敵=タートル! 作る "ayumiAka.gif" 変身する ペンなし 90 右回り。
敵たち! (敵! -300 200 位置) 書く。
敵たち! (敵! 作る -200 200 位置) 書く。
敵たち! (敵! 作る -100 200 位置) 書く。
敵たち! (敵! 作る 0 200 位置) 書く。
敵たち! (敵! 作る 100 200 位置) 書く。
敵たち! (敵! 作る 200 200 位置) 書く。
敵たち! (敵! 作る 300 200 位置) 書く。
//敵たちの移動(ステップ4)
時計=タイマー! 作る 1秒 間隔。
時計!6 回数 「敵たち! 「|敵|敵! 30 0 移動する」それぞれ実行」 実行。
時計!1 回数 「敵たち! 「|敵|敵! 0 -30 移動する」それぞれ実行」 実行。
時計!6 回数 「敵たち! 「|敵|敵! -30 0 移動する」それぞれ実行」 実行。
//衝突の定義(ステップ5)
かめ:衝突=「自分! 消える」。
敵:衝突=「自分! 消える。敵たち!(自分)消す。得点!10 増やす」。
//終了時間(ステップ6)
制限時間=15。
カウントダウン=フィールド! 作る 150 0 移動する。
終了時計=タイマー! 作る 1秒 間隔 (制限時間) 時間。
終了時計!「|n|カウントダウン!(制限時間-n)書く。
」実行。
//得点表
得点=フィールド!0 作る 100 50 大きさ 450 250 位置 (黄) 色。
//勝敗
「(得点!読む)≧20」! なら「
ラベル! "おめでとう!!! "作る-100 200 位置。
終了時計! 中断
」実行。
プログラムの全体です…
2012/01/15 (Sun) 16:29:07
プログラムの全体を見ていないのでわかりませんが、
「4.6 タイマーの終了を待つ」「C.7 スレッドと待ち合わせ」のあたりが関係しているかもしれませんね。
2012/01/15 (Sun) 16:17:14
あ、書き忘れていましたが
プログラムのほうにはちゃんと「(得点!読む)≧20」! とかいています
| 相手に応じた対応の変化 | ■↑▼ |
2012/01/14 (Sat) 23:40:22
初めまして、ドリトルを使わせて頂いている過程で、
どうしても分からないところがあったので質問させて頂きました。
衝突した敵に応じて対応を変えたいのですが・・・。
カメ太:衝突=
「|相手|「相手==敵1」!なら「得点! 1 増やす」
実行」。
カメ太:衝突=
「|相手|「相手==敵2」!なら「得点! 2 増やす」
実行」。
このように両方とも書くと、ドリトルの上の方に書いた命令が実行されず、
下の方に書いた命令のみ実行されてしまいます。
敵1:衝突=「|相手|「相手==カメ太」!なら
「得点! 2 増やす」
実行」。
敵の方に全て処理を任せようと思い、このように書き、
カメ太自身には衝突を定義しないでいると、
カメ太と衝突すらしてくれませんでした。
どのように書けば衝突した敵に応じて対応を変えることが出来るのでしょうか・・・。
2012/01/15 (Sun) 00:22:35
動いたようでよかったですね。
基本が理解できたと思いますので、いろいろ楽しんでみてください。
2012/01/15 (Sun) 00:13:49
あっさりと出来ました、ありがとうございます、感謝です。
分かってみれば物凄く単純なことで、
何で気づけなかったのかと自問自答したくなりました。
これがコロンブスの卵というやつですね・・・。
2012/01/14 (Sat) 23:45:21
カメ太:衝突=「」。
カメ太:衝突=「」。
と書くと、最初にカメ太に衝突を定義した後で、次の衝突で上書きしてしまいます。
x=1。
x=2。
と書くと、最初にxに1を代入した後で、次にxに2を代入するのと同じです。
衝突の定義はひとつにしておいて、その中に相手に応じた処理を書いたらいかがでしょう。
カメ太:衝突=「
// 相手が〜なら〜するという処理。
// 相手が〜なら〜するという処理。
」。
| ライフポイントってどうしたらいいのでしょうか・・・ | ■↑▼ |
2012/01/08 (Sun) 03:10:42
今、授業でグループになって作品を作っています。
私のところはシューティングゲームをつくることになったんですが・・・
ライフのプログラミングをどうすればいいのかわかりません。
敵の攻撃が自分にあたるごとに、画面上部に表示してある自分のライフをあらわすものがひとつずつきえていくようにしたいです。
ライフの数は3個です。
至急教えて頂けると大変たすかります・・・
よろしくお願いします
2012/01/09 (Mon) 09:22:48
画像を変えたときは画像の大きさも変わりますので、そのあたりが影響しているかもしれません。
2012/01/09 (Mon) 01:41:04
プログラムのバグは自分たちで調べてみてください。
シューティングゲームを説明している章の説明をよく読むと、いろいろとヒントが書かれています。
2012/01/08 (Sun) 22:45:49
カメ太を戦闘機の絵に変身させてやってみたのですが、なぜだかライフが相手にあたったら減ったり、ゲームオーバーが3こもでてきたりと
バグが生じました。
これは一時的なものでしょうか
画像ファイルはgifです。
2012/01/08 (Sun) 19:45:30
おめでとうございます。動くと嬉しいですね。
2012/01/08 (Sun) 19:43:25
出来ました!!
長々とおつきあいしていただき、本当にありがとうございます!
感激しました!!!!!