プログラミング言語「ドリトル」

大阪電気通信大学 兼宗研究室

ユーザ用ツール

サイト用ツール


ch_qa_sample_prg

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
ch_qa_sample_prg [2019/06/26 17:51]
klab [Q10:図形に当たったら跳ね返るアニメーションを作りたい]
ch_qa_sample_prg [2020/12/11 22:26] (現在)
klab 以前のリビジョンを復元 (2020/12/11 21:30)
ライン 5: ライン 5:
  
 ## Q1:​描いた図形をアニメーションで動かしたい ## Q1:​描いた図形をアニメーションで動かしたい
-かめたで描いた図形は、「図形を作る」のメソッドで部品化できます。+かめたで描いた図形は、「図形を作る」の命令で部品化できます。
 部品化した図形は、タイマーの処理を利用することで一定間隔で移動することができます。 部品化した図形は、タイマーの処理を利用することで一定間隔で移動することができます。
 ここでは、棒という図形を描いて、これを右から左に動かしています。(対応:JAVA版/​JS版) ここでは、棒という図形を描いて、これを右から左に動かしています。(対応:JAVA版/​JS版)
ライン 12: ライン 12:
 //////step1 動かしたい図形を作る////////​ //////step1 動かしたい図形を作る////////​
 かめた=タートル!つくる。 かめた=タートル!つくる。
-「かめた!100 歩く 90 右回り」!4 繰り返す。+「かめた!20 歩く 90 右回り 100 歩く 90 右回り」!2 繰り返す。
 棒=かめた!(青) 図形を作る。 棒=かめた!(青) 図形を作る。
 棒!200 100 位置。 棒!200 100 位置。
ライン 20: ライン 20:
 時計!「棒!-20 0 移動」実行。 時計!「棒!-20 0 移動」実行。
 </​code>​ </​code>​
-[[http://​klab.eplang.jp/​honda/​djs/​index.html?​src=2f2f2f2f2f2f737465703120e58b95e3818be38197e3819fe38184e59bb3e5bda2e38292e4bd9ce3828b2f2f2f2f2f2f2f2f0ae3818be38281e3819fefbc9de382bfe383bce38388e383abefbc81e381a4e3818fe3828be380820ae3808ce3818be38281e3819fefbc81313030e38080e6ada9e3818fe38080393020e58fb3e59b9ee3828ae3808defbc8134e38080e7b9b0e3828ae8bf94e38199e380820ae6a392efbc9de3818be38281e3819fefbc81efbc88e99d92efbc89e38080e59bb3e5bda2e38292e4bd9ce3828be380820ae6a392efbc813230302031303020e4bd8de7bdaee380820a0a2f2f2f2f2f2f737465703220e59bb3e5bda2e38292e58b95e3818be381992f2f2f2f2f2f0ae69982e8a888efbc9de382bfe382a4e3839ee383bcefbc81e4bd9ce3828be380820ae69982e8a888efbc81e3808ce6a392efbc812d3230203020e7a7bbe58b95e3808de5ae9fe8a18ce38082|このプログラムをJS版ドリトルで動作確認する]]+[[http://​klab.eplang.jp/​honda/​djs/​index.html?​src=2f2f2f2f2f2f737465703120e58b95e3818be38197e3819fe38184e59bb3e5bda2e38292e4bd9ce3828b2f2f2f2f2f2f2f2f0ae3818be38281e3819fefbc9de382bfe383bce38388e383abefbc81e381a4e3818fe3828be380820ae3808ce3818be38281e3819fefbc81323020e6ada9e3818f20393020e58fb3e59b9ee3828ae38080313030e38080e6ada9e3818fe38080393020e58fb3e59b9ee3828ae3808defbc8132e38080e7b9b0e3828ae8bf94e38199e380820ae6a392efbc9de3818be38281e3819fefbc81efbc88e99d92efbc89e38080e59bb3e5bda2e38292e4bd9ce3828be380820ae6a392efbc813230302031303020e4bd8de7bdaee380820a0a2f2f2f2f2f2f737465703220e59bb3e5bda2e38292e58b95e3818be381992f2f2f2f2f2f0ae69982e8a888efbc9de382bfe382a4e3839ee383bcefbc81e4bd9ce3828be380820ae69982e8a888efbc81e3808ce6a392efbc812d3230203020e7a7bbe58b95e3808de5ae9fe8a18ce38082|このプログラムをJS版ドリトルで動作確認する]]
  
 ## Q2:​かめた(タートル)で図を描いた後、線を描かずにかめたの位置を変更したい ## Q2:​かめた(タートル)で図を描いた後、線を描かずにかめたの位置を変更したい
-かめたは「ぺんなし」のメソッドを利用することで、線を描かずに移動するようになります。 +かめたは「ぺんなし」の命令を利用することで、線を描かずに移動するようになります。 
-なお再び線を引かせたい場合は「ぺんあり」メソッドを利用します。(対応:JAVA版/​JS版)+なお再び線を引かせたい場合は「ぺんあり」の命令を利用します。(対応:JAVA版/​JS版)
  
 <​code>​ <​code>​
ライン 42: ライン 42:
  
 ## Q3:​図形にぶつかったら、かめたを消したい ## Q3:​図形にぶつかったら、かめたを消したい
-かめたの「衝突」メソッドに、ぶつかった相手を消す命令を書くことで、+かめたの「衝突」の命令に、ぶつかった相手を消す命令を書くことで、
 図形にぶつかった瞬間に、衝突した対象の図形などを消去する動作を実現できます。(対応:JAVA版/​JS版) 図形にぶつかった瞬間に、衝突した対象の図形などを消去する動作を実現できます。(対応:JAVA版/​JS版)
  
ライン 70: ライン 70:
  
 下記の例では、開始から5秒間以上 かめたが図形にぶつからなければ「ゲームクリア」と表示し、 下記の例では、開始から5秒間以上 かめたが図形にぶつからなければ「ゲームクリア」と表示し、
-開始から五秒以内に図形にぶつかったら「ゲームオーバー」と表示します。(対応:JAVA版/​JS版)+開始から五秒以内に図形にぶつかったら「ゲームオーバー」と表示します。 
 + 
 +衝突により「:ゲーム状態」というフラグ(変数)の中身が変わることがポイントです。 
 +衝突時に「時計」で実行中の動作を中断しているため、ぶつかった瞬間に「最後に実行」の内容が実行されます。 
 +したがって、衝突するとすぐにゲームオーバーの文字が表示されます。 
 + 
 +(対応:JAVA版/​JS版)
  
 <​code>​ <​code>​
ライン 182: ライン 188:
 大星=「かめた!60 歩く 144 左回り」!5 繰り返す 図形を作る。 大星=「かめた!60 歩く 144 左回り」!5 繰り返す 図形を作る。
 大星!(黄色)塗る。 大星!(黄色)塗る。
-/////////​Step2:​図形を異なるタイミングで動かす/////////​+/////////​Step2:​マウスの位置に合わせて図形を動かす/////////​
 時計=タイマー!作る。 時計=タイマー!作る。
 時計!100秒 時間 0.1秒 間隔。 時計!100秒 時間 0.1秒 間隔。
ライン 193: ライン 199:
 ## Q9:​図形の中心位置に別の図形を配置したい ## Q9:​図形の中心位置に別の図形を配置したい
 描いた図形の中心位置を取得し、その位置に別の図形を移動するようにプログラムすることで、 描いた図形の中心位置を取得し、その位置に別の図形を移動するようにプログラムすることで、
-アニメーション作成時に常に同じ位置に重なって表示する図形を書くことができます。(対応:JAVA版)+アニメーション作成時に常に同じ位置に重なって表示する図形を書くことができます。 
 +このサンプルでは、「三角」の図形の中心位置を取得し「点」図形をその位置に移動しています。(対応:JAVA版)
  
 <​code>​ <​code>​
ライン 203: ライン 210:
 点!(赤)塗る。 点!(赤)塗る。
 座標表示=ラベル!"​X:---  Y:---"​ 作る。 座標表示=ラベル!"​X:---  Y:---"​ 作る。
-/////////​Step2:​図形を異なるタイミングです/////////​+/////////​Step2:​三角の中心座標を取得して点図形を動す/////////
 時計=タイマー!作る。 時計=タイマー!作る。
 時計!10秒 時間 0.1秒 間隔。 時計!10秒 時間 0.1秒 間隔。
 時計!「 時計!「
  三角! 2  -2 移動する。  三角! 2  -2 移動する。
 + 三角のX座標=(三角!getx)。
 + 三角のY座標=(三角!gety)。
  点!( 三角のX座標)(三角のY座標) 位置。  点!( 三角のX座標)(三角のY座標) 位置。
-   ​三角のX座標=(三角!getx)。 
- 三角のY座標=(三角!gety)。 
  座標表示!("​X:"​ +  (三角のX座標) ​ + "  Y:"​ + (三角のY座標)  ) 書く。  座標表示!("​X:"​ +  (三角のX座標) ​ + "  Y:"​ + (三角のY座標)  ) 書く。
    
ライン 217: ライン 224:
  
 ## Q10:​図形に当たったら跳ね返るアニメーションを作りたい ## Q10:​図形に当たったら跳ね返るアニメーションを作りたい
-タートルオブジェクトの「衝突」メソッドに、「タートル:跳ね返る」を設定することで、+タートルオブジェクトの「衝突」の命令に、「タートル:跳ね返る」を設定することで、
 タートルが図形と衝突した時に、跳ね返ったような動作を追加することができます。(対応:JAVA版/​JS版) タートルが図形と衝突した時に、跳ね返ったような動作を追加することができます。(対応:JAVA版/​JS版)
  
ライン 256: ライン 263:
  」 実行。  」 実行。
 </​code>​ </​code>​
-[[https://bitarrow.eplang.jp/bitarrow/fs/pub/​0d7cb6de/​q11.html|実行例(BitArrow)]]+[[http://klab.eplang.jp/honda/djs/index.html?​src=e3818be38281e3819fefbc9de382bfe383bce38388e383abefbc81e4bd9ce3828be38080efbc88e8b5a4efbc89e38080e7b79ae381aee889b2e380820ae3818be38281e3819fefbc9ae5889de69c9fe8a792e5baa62020202020202020efbc9d20203435e5baa6e380820ae3818be38281e3819fefbc9ae5889de69c9fe4bd8de7bdae78e38080202020efbc9de38080e3818be38281e3819f21e6a8aae381aee4bd8de7bdaeefbc9fe380820ae3818be38281e3819fefbc9ae5889de69c9fe4bd8de7bdae79e38080e3808020efbc9de38080e3818be38281e3819f21e7b8a6e381aee4bd8de7bdaeefbc9fe380820ae3818be38281e3819fefbc9ae5889de9809fe5baa6e38080e38080e380802020efbc9de380803730e380820ae69982e8a888efbc9de382bfe382a4e3839ee383bcefbc81e4bd9ce3828be3808038e7a792e38080e69982e9969320e38080302e3031e38080e99693e99a94e380820ae69982e8a888efbc81e3808cefbd9c743020efbd9c0a20202020207431203d207430202f3130202e0ae38080e38080e380807830203d20e3818be38281e3819fefbc9ae5889de69c9fe4bd8de7bdae78e380820ae38080e38080e380807930203d20e3818be38281e3819fefbc9ae5889de69c9fe4bd8de7bdae79e380820a20202020207630203d20e3818be38281e3819fefbc9ae5889de9809fe5baa6e3808220e38080e380802f2f20e5889de9809fe5baa60a20202020207330203d20e3818be38281e3819f3ae5889de69c9fe8a792e5baa6e38082e38080e380802f2f2020e68993e381a1e4b88ae38192e8a792e5baa60ae38080e38080e3808078e4bd8de7bdaeefbc9d28783020292020efbc8b28763029202a2028743129202a20636f7328207330202920e380820ae38080e38080e3808079e4bd8de7bdaeefbc9d28793029202b2028763029202a2028743129202a2073696e2820733029202d20392e38202a2028743129202a202874312920e380820ae38080e38080e38080e3818be38281e3819fefbc81efbc8878e4bd8de7bdae20efbc89efbc8879e4bd8de7bdaeefbc89e4bd8de7bdaee380820ae38080e3808d20e5ae9fe8a18ce38082|このプログラムをJS版ドリトルで動作確認する]]
  
 ## Q12:​ボタンを押したら動きを変えたい ## Q12:​ボタンを押したら動きを変えたい
ライン 264: ライン 271:
 <​code>​ <​code>​
 直進状態=はい。 直進状態=はい。
- 
 動作変更ボタン=ボタン!”動作変更” 作る。 動作変更ボタン=ボタン!”動作変更” 作る。
- 
 動作変更ボタン:動作=「 動作変更ボタン:動作=「
     :直進状態 = いいえ。     :直進状態 = いいえ。
ライン 276: ライン 281:
 時計!「 時計!「
  かめた!5 歩く。  かめた!5 歩く。
-「(:直進状態)== いいえ」!なら「かめた!5 右回り。 」実行。+ 「(:直進状態)== いいえ」!なら「かめた!5 右回り。 」実行。
  
 」実行。 」実行。
 </​code>​ </​code>​
-[[https://bitarrow.eplang.jp/bitarrow/fs/pub/​0d7cb6de/​q12.html|実行(BitArrow)]]+[[http://klab.eplang.jp/honda/djs/index.html?​src=e79bb4e980b2e78ab6e6858befbc9de381afe38184e380820ae58b95e4bd9ce5a489e69bb4e3839ce382bfe383b3efbc9de3839ce382bfe383b3efbc81e2809de58b95e4bd9ce5a489e69bb4e2809de38080e4bd9ce3828be380820ae58b95e4bd9ce5a489e69bb4e3839ce382bfe383b3efbc9ae58b95e4bd9cefbc9de3808c0ae38080e38080e38080e38080efbc9ae79bb4e980b2e78ab6e6858be38080efbc9d20e38184e38184e38188e380820ae3808de380820a0ae3818be38281e3819fefbc9de382bfe383bce38388e383abefbc81e4bd9ce3828be380820ae69982e8a888efbc9de382bfe382a4e3839ee383bcefbc81e4bd9ce3828be380820ae69982e8a888efbc81363020e69982e99693e380820ae69982e8a888efbc81e3808c0ae38080e3818be38281e3819fefbc813520e6ada9e3818fe380820ae38080e3808cefbc88efbc9ae79bb4e980b2e78ab6e6858befbc89efbc9defbc9de38080e38184e38184e38188e3808defbc81e381aae38289e3808ce3818be38281e3819fefbc81efbc95e38080e58fb3e59b9ee3828ae38082e38080e3808de5ae9fe8a18ce380820a0ae3808de5ae9fe8a18ce38082|このプログラムをJS版ドリトルで動作確認する]] 
 + 
 + 
 +## Q13:​WebAPIやWebクライアントオブジェクトが通信できない場合の対処方法 
 +学校のネットワークでは,プロキシサーバを通してインターネットと通信している場合があります。 
 +WebAPIやWebクライアントで通信ができない場合は,下記の設定を行い,通信ができるか試してみてください。 
 + 
 +  - dolittle.batをテキストエディタ(メモ帳等)で開く 
 +  - プロキシの設定を追加する(色囲み部分) 
 +{{ ::​プロキシ.png?​400|}} 
 + 
 +色囲み部分の意味は下記の通りです.利用するネットワーク環境に合わせてご変更ください。 
 +<​code>​ 
 + ​-Dhttp.proxyHost= ***  // ***の部分に利用しているプロキシ(http通信用)のドメインを設定してください. 
 + ​-Dhttp.proxyPort=8080  // 8080の部分は実際に利用しているプロキシ(http通信用)のポート番号を設定してください. 
 + ​-Dhttps.proxyHost= ***  // ***の部分に利用しているプロキシ(https通信用)のドメインを設定してください. 
 + ​-Dhttps.proxyPort=8080  // 8080の部分は実際に利用しているプロキシ(https通信用)のポート番号を設定してください. 
 +</​code>​ 
 + 
 +なお,Ver.3.40以降では,ドリトルのプログラム上から,http/​https通信用プロキシ設定をできるように機能変更を予定しています。 
 +  * http通信のプロキシ設定については,Ver3.31時点においても,**システム!proxy**を用いることで,ドリトルコード上からでも可能です。 
 + 
 + 
 + 
 +## Q14:​双方向通信(サーバーオブジェクト)による通信ができない場合の対処法 
 +学校のネットワークでは,各コンピュータが[[ファイアーウォール]]を利用している場合,この設定内容によっては, 
 +サーバー機能による通信が遮断されてしまう場合があります. 
 + 
 +この場合には2つの対応方法が考えられます. 
 + 
 +**■ファイアーウォールの設定を変更し,通信を遮断しないようにする.** 
 + 
 +ドリトルのサーバー機能は通信時に2020ポートを利用します.\\ 
 +ご利用のファイアーウォールの設定(通信ルールの設定)にて,2020ポートの送受信を許可してください. 
 + 
 +なお,ドリトルのサーバ機能については,ローカルエリアのみの通信で完結しています.\\ 
 +2020ポートを利用して,インターネットに接続することはありません.\\ 
 +ファイアーウォールの設定時,2020ポートの通信許可は利用するネットーワークのセグメントのみに限定いただいてOKです. 
 + 
 +**■ファイアーウォールの設定は変更せず,ドリトル側で通信可能なポートを指定する.**\\ 
 +下記の手順を実施してからプログラミングをすることで,ドリトルがサーバー機能で通信をする際の通信ポートを設定することができます.\\ 
 +この手順は,ドリトルを起動した直後に一回だけ実行すればOKです.  
 + 
 +__【ポートを指定してサーバーを起動する手順】__ \\ 
 +  1. 編集画面で「システム! XXX サーバーポート。」と記載して,実行ボタンを押す. \\ 
 +  2. serverのチェックをONにする\\ 
 + 
 +※通信ができない場合は,ドリトルを終了して,もう一度立ち上げてから上記を再度試してください. 
 + 
 + 
 +また,初期設定のファイルを作成することで,起動時に通信ポートの設定が完了した状態からプログラム作成をスタートすることができます.\\ 
 +(ただし,いくつかの制限事項があります.「3」の注意をご確認ください.) 
 + 
 +__【あらかめポートを指定してサーバーを起動する手順】__ \\ 
 +  1. dolittle.jar(dolittle.bat)と同じフォルダ上に,startup.iniという名前のテキストファイルを作る.\\ 
 +  2. 作成したstartup.ini内に以下の記述をして保存する.(XXXは利用するポート番号に置き換えてください) \\ 
 +    //​システム! XXX サーバーポート。 //\\ 
 +    //​サーバー! "​localhost"​ 接続。 //\\ 
 +  3. dolittle.batを起動し、一度「実行」ボタンを押下する.(注意:これより前に編集画面の「server」ボタンを押下しないよう留意してください)\\ 
 +  4. 指定したポートでサーバーが起動しているので、以降は通信プログラムを通常通り記述・実行してください. 
 + 
 +**■サーバー機能を利用する際の補足** 
 +  * 既にサーバーが起動している場合やうまく通信できない場合は、一度ドリトルを閉じてから上記の手順1から再度お試しください. 
 +  * 接続する側(送信する側)は、『システム! XXX サーバーポート。』を『サーバー! "​YYY"​ 接続。』の前に記述してください.(XXXはポート番号、YYYは接続先のIPアドレスに置き換えてください) 
 +  * ドリトルのサーバー機能による通信は,LANのみで簡潔しインターネットへの接続を必要としません. \\ コンピュータ室のセグメントのみ通信を許可する設定をしたコンピュータ上でも動作可能です. 
 +  * 利用可能な通信ポートの設定やセキュリティポリシーは,組織ごとに異なります. \\ コンピュータの設定状況は,利用可能なポートなどのについては,ネットワーク管理者または管理会社等にご確認ください. 
 + 
 + 
 +## Q15:​テキストの一定の文字で自動改行したい。 
 +現在のJAVA版ドリトルのGUIオブジェクトでは上記に対応していません。 
 +暫定的な対応として、[[qa_ automatic_line_break|テキストエリアオブジェクトに、指定した文字数で改行して表示する命令を追加する]]を紹介しています。
ch_qa_sample_prg.1561539066.txt.gz · 最終更新: 2019/06/26 17:51 by klab