Rank User name Block num Score for each map Sum
1 2 3 4 5 6 7 8


×
ドロイド君の動きをプログラミングして、ハイスコアを目指そう!
ドロイド君
とは?
地形の種類
エディタモード
ブロックの種類
エディタ操作
ブロック追加
選択
削除
エディタ操作
ブロック移動
エディタ操作
ブロック接続
条件編集
基礎編
条件編集
実践編
条件編集
応用編
ドロイド君杯
2020
ランキング
保存
読み込み
テストモード
エネルギー残量
マップ選択
スタート
ポーズ
ストップ
ドロイド君とは?
ドロイド君とは、未開拓の土地でゴールドを回収するために開発された、自立行動型のロボットである。
君にはこのドロイド君の行動をプログラムして、未知のマップに隠されたゴールドを回収してもらいたい。おおまかな流れは、以下のとおりだ。
  1. ドロイド君の行動をプログラムする
  2. ドロイド君を動かす
  3. ドロイド君はエネルギー切れになるまで、プログラムに従って動作しマップ上に隠されたゴールドを回収する
  4. ドロイド君のプログラムを改良し、より多くのゴールドを回収できるプログラムを作る
開発の工程は、プログラム作成 -> テスト動作 -> プログラム作成 -> テスト動作 -> ....と繰り返して、性能を高めていってくれ。
満足いくプログラムが出来たら、是非ドロイド君杯に提出して全国のドロイド君技師と鎬を削りあおう!! 匿名だから身バレする心配はないぞ!
ドロイド君の動きをプログラミングするのが、このエディタモードだ。
そして、作ったプログラムの動作をサンプルマップを使って動作テストをする、テストモード
の2つのモードがある。
画面の左上にある
をクリック(スマホだとタップ、以下クリックで統一)する度に、モードが切り替わる。
テストモード時は、動作テストが終了しているストップ状態でないと切り替えができないぞ。
地形の種類
テストモードで動作テストをしている時は、このような画面になる。
左側(スマホの縦持ちの場合上側)にテスト中のマップが表示されている。 ドロイド君が2次元マップの上を、作成したプログラムに従って動作しているのを確認することが出来る。
マップで使用している地形は、全部で6種類だ。
ドロイド君が通ることができるただの地面だ。
通っても特に良いことも悪いことも無いぞ。
ゴールドが置いてある地形だな。
通ることでゴールドを取得できる。
ゴールドを取得することで、スコアが+1される。
じゃんじゃん取って、スコアを稼ごう!
エネルギーが置いてある地形だ。
通ることでエネルギーを取得できる。
エネルギーを習得すると、ドロイド君のエネルギーが+100されるぞ。
なるべく取るようにしないと、すぐにガス欠だ。
壁だな。
ドロイド君は通ることが出来ないらしい。
ドロイド君がまだ行ったことのない未知の地形だ。
ドロイド君が通る事で「地面」「ゴールド」「エネルギー」「壁」の、どの地形なのかがはっきるする。

われらがドロイド君だ。
左から上向き、右向き、下向き、左向きだ。
ドロイド君は自分の周囲の8マスの地形を見て、マップを更新していく。 例えば、テストマップ開始直後はこのように未知の地形ばかりだが、(ちなみに、ドロイド君は左上の方に居る)
しばらく動かした後は、こんな風にドロイド君がどこを通ったのかが良くわかるな。
流石、こうせいのうセンサーは伊達じゃないな。
エディタモード
エディタモードではこのようにブロック(
) 同士を線で繋いでプログラムを作成し、ドロイド君の動きを制御する。
ドロイド君は「S」と描いてあるスタートブロック
から、 線で繋がっているブロックを順番に実行していく。 上の図の場合だと、
->
->
->
と実行する。
六角形のブロック
は、 ある条件が成り立てば右側の処理へ進み、成り立たなければ左側の処理へ進む。 この場合は、このブロックを実行したら次は右側の
か、 左側の
のどちらかを実行する事になる。
次に繋がるブロックが無い場合は、再びスタートブロック
に戻って、 初めから実行する。
ドロイド君はスタートブロック
以外のブロック(
)を実行する度にエネルギーを1消費する。 エネルギーがゼロになると、ドロイド君は活動停止してしまうぞ。
ブロックの種類
ブロックは全部で5種類ある。
スタートブロック。ドロイド君はこのブロックから実行し始める。
前進ブロック。ドロイド君が向いている方向に1マス進む。
もし、ドロイド君の前方が壁だった場合、ドロイド君は移動できない。
左回転ブロック。ドロイド君がその場で左に90度向きを変える。
右回転ブロック。ドロイド君がその場で右に90度向きを変える。
条件分岐ブロック。ある条件が成り立てば右側の処理に進み、成り立たなければ左側の処理へ進む。
条件の詳しい説明は後程しよう。
エディタ操作
ブロックの追加/選択/削除
基本的な説明は以上だ。ここからは、指示に従ってプログラムを試作しながら説明を聞いてくれ。
ブロックの追加
上部にある
をクリック。
次に追加したいブロックをクリック。
クリックしたブロックが追加される。
君も、どのブロックでもいいから追加してみよう。
ブロックの選択
ブロックをクリックすると、クリックされたブロックが選択された状態になる。
これは右回転ブロック
が選択された状態である。
選択を解除するには何もないところをクリックしてくれ。 ブロックの選択・解除をしてみよう。
ブロックの削除
削除したいブロックを選択して、上部にある
をクリック。
選択したブロックが削除される。
ただし、スタートブロック
は削除することが出来ない。 ブロックの削除を実際にやってみよう。
ブロック移動
視点移動
何もない場所をドラッグすると、視点を移動することが出来る。
ブロック移動
ブロックをドラッグをすると、そのブロックだけが移動する。(ブロックを選択する必要はない)
拡大縮小
マウスホイール回転(ピンチイン/アウト)で拡大縮小が出来る。
ブロック接続
ブロック同士の接続をやってみよう。 まずは、このようにブロックを設置してくれ。
では、
->
に接続してみよう。 接続元のブロック
を選択して
接続先のブロック
をクリックすると
このようにブロック同士が接続される。
前進ブロック
から条件分岐ブロック
へ接続させてみよう。
条件分岐ブロック
は、接続元が右側と左側の2つある。 ブロックを選択するときに、接続したい側をクリックして選択することで、右側、左側を選ぶことが出来る。
例えば、右側に接続をしたい場合は、ブロックの右側をクリックして選択して
接続先のブロックをクリックする。
これで条件分岐ブロックの右側が接続された。
条件分岐ブロック
の左側から左回転ブロック
へ接続させよう。
接続先を変更したいときの説明をしよう。 例えば、前進ブロック
を右回転ブロック
に繋がるように接続しなおす場合は、変更したい接続元のブロックを選択して
新しい接続先のブロックをクリックすればいい。
つまり、接続と全く同じ操作でOKだ。
接続を解除したい場合は、解除したい接続元のブロックを選択して
もう一度そのブロックをクリックしてくれ。(要は接続元をダブルクリック)
接続が解除されるぞ。
このように接続されているブロックがあったとする。
ここで条件分岐ブロック
を削除すると
このように、関係する接続は自動的に解除される。
1つのブロックから複数のブロックに接続する事はできない。(条件分岐ブロックは右側・左側がそれぞれ1つのブロックに接続される)
しかし、複数のブロックが1つのブロックに接続する事は可能だ。
条件編集 基礎編
条件分岐ブロック
は、 ある条件が成り立てば右側に接続されたブロックへ進み、、成り立たなければ左側へ接続されたブロックに進む。 この条件の設定の仕方を説明するぞ。 まずは、設定したい条件分岐ブロックを選択して、上部にある
をクリックしよう。
すると、このような条件編集モードになる。
ここで、どのような条件の時に右側の処理へ進むのか、を設定する。
右上の
をクリックすると、 元のエディタモードに戻る。
条件は、ドロイド君の現在地の周辺マップがどのようになっているか?を仮定することで設定する。 例えば、「ドロイド君正面が壁であるか?そうであれば、 この条件分岐ブロック
の右側の処理へ進み、違うならば左側の処理へ進む」 という風に考える。
この例で実際に条件を設定してみよう。
条件編集モードの
この部分が、ドロイド君の周辺状況がどうなっているか?を仮定する場所である。 壁の地形(左側の灰色の四角)を、ドロイド君の正面のマスにドラッグで持っていこう。 この仮定の場ではドロイド君は上の方向を向いているので、ドロイド君の正面は1マス上になる。
したがって、このようになる。
これで、例題の「ドロイド君正面が壁であるか?そうであれば、 この条件分岐ブロック
の右側の処理へ進み、違うならば左側の処理へ進む」の設定が完了した。
このようにドロイド君の周辺がどうなっているかを仮定することで、条件の設定が出来る。
この仮定でセットした地形はドラッグで自由に移動することが可能だ。
これで、「正面が壁かどうか?」から、「背後が壁かどうか?」になった。 仮定の場から削除するにはドラッグで範囲外に持って行ってくれ。
ここで注意してほしい事が1点ある。 条件編集で設定するのはマップの上下左右方向ではなく、ドロイド君から見てどの方向か?という点だ。
例えば、現在テストモードでこのような状況だとする。
テストモード時の右側(スマホ縦持ちの場合は下側)には作成したプログラムが表示されている。 この時、次に実行されるブロックが選択されて表示される。
この場合は、次に条件分岐ブロックが実行されるということだ。 この条件分岐ブロックの設定は先ほどの「ドロイド君の正面が壁ならば~」である。ドロイド君の正面は
このようにエネルギーの地形なので、条件は成り立たたず、条件分岐ブロックの左側の方へ進む。
そして前進ブロック
が実行されて
ドロイド君が1歩前進する。
仮定で使用できる条件は全部で10種類ある。

左から、地面である・地面ではない、という仮定。

エネルギーである・エネルギーではない、という仮定。

ゴールドである・ゴールドではない、という仮定。

壁である・壁ではない、という仮定。

未知である・未知ではないという仮定。
未知である、という事は要するに「ドロイド君はまだこのマスの近くを、通っていないのか?」という仮定だ。 逆に未知ではない、という事は「ドロイド君はすでにこのマスの近くを、通っているのか?」という仮定である。
条件編集 実践編
条件編集 基礎編で基本的な考え方は理解できたと思う。 ここでは一緒に簡単な例を作ってみよう。
その1
「壁がくるまでひたすら直進、壁があると左を向く」
ドロイド君が最初に考えるの目の前が壁かどうか?だな。てことで、条件分岐ブロックを追加して、スタートブロックにつなげて・・・
目の前が壁じゃなければ直進だから、条件はこうで
前進ブロックを繋げて
最後に「目の前が壁ではない」が成り立たない、つまり目の前が壁の時は左を向くを繋げて
これで完成!!
完成したら実際にテスト動作させてみよう。 左上にある
をクリックしてテストモードに移行する。 すると、このような画面になる。
上部にある
をクリックすると、テスト動作を開始する。
テスト動作中、更に
をクリックすると、動作速度が速くなる。
で一時停止、
で停止する。
元のエディタモードに戻るには停止中に再び
をクリックすればよい。
その2
「右手を壁につけて移動する」(巨大迷路を解く時のアレ)
これをプログラムを作りやすく言い換えると、「右が壁なら前進、右が壁でない(つまり右方向に道がある)なら右向いて前進」と言える。 では、早速作ってみよう。 まずは、「右手が壁なら前進」を作るので
こんな風に配置して、条件が
こうなる。「次に壁でないなら右向いて前進」なので
これで完成!!
と思ったけれど、実はこれ動かしてみると思ったように動かない。
この場所で
->
->
->
->
・・・ とループしているな。
ドロイド君の右側が壁だから前進しようとして、でも正面が壁だから動けない・・・ってことだ。
そう、正面が壁だった時の処理が必要なんだ。ではこの「正面が壁かどうか?」の条件分岐ブロックはどこに追加すれば良いだろうか? 現状「前進しようとして、正面が壁だから前進できない」という状態だから、この前進ブロックの直前に入れるのが良さそうだな。
では、正面が壁だったときはどんな処理をしたら良いのだろうか。もともと「右手を壁につけて進んでいく」という考えだったよな。 なら、右が壁で、正面が壁なら次は左を見ればいい。てことで
こうなる。
ところで、「右・正面・左が壁だったときの処理も必要なのでは?」と思わかなったか。 もちろん必要だ。でも、今回はその処理を作ってやる必要はないんだな。
この状態は、今からスタートブロック
を実行しようとしている。右も正面も壁なので、
->
->
->
と処理は進んでいく。
左回転
を実行して
スタートブロックに戻ってくる。やはり右も正面も壁なので
->
->
->
と実行していって
はい、無事に袋小路を抜け出せた。
条件編集 応用編
応用 その1
「ドロイド君は動かせる」
条件編集モードで条件を仮定するときのアレ。ドロイド君もドラッグで動かすことが可能。
こんな風に。これで、より遠いマスを条件にすることができる。
応用 その2
「もっと複雑な条件」
今までの条件は、ある1マスがなんの地形なのか?を仮定して作ってきた。 実は、複数のマスを条件にすることも可能だ。例えば
こんな感じ。これは「1歩先が壁ではない。かつ、さらにその先がゴールドだったら」という条件になる。 この条件分岐ブロックの右側に前進ブロックを2つ繋げてやると、確実に2歩先にあるゴールドを取得することができる。 この時
下の方にあるスライドバーを動かして、マスの下にある数字が2になるようにする必要がある。
この数字は、とりあえず2マスを仮定したから2にした、と思っておいてくれ。 こんな風にすると
この数字は8だな。
応用 その3
「ふわっとした条件」
条件を考える時、「このあたりのマスのどれかがゴールドだったら」といった感じで作りたい、と思うことがあるかもしれない。 これ、できるんだな。
こんな風に作ると、「ドロイド君の左前・前・右前のどれか1つ以上がゴールドだったら」という条件になる。 さっきの応用その2との違いは、
マスの下の数字が1のままだ。
この数字は、仮定したマスのうち何個以上が正しかったら条件成立とする、を制御するための数字である。 例えば、この数字を2に変更すると
この条件の意味は、「ドロイド君の左前・前・右前のどれか2つ以上がゴールドだったら」になる。 では、3だったら
この条件の意味は、「ドロイド君の左前・前・右前のどれか3つ以上がゴールドだったら」となる。 言い換えると「ドロイド君の左前・前・右前が3つともゴールドだったら」、 さらに言い換えると「ドロイド君の左前がゴールド。かつ、前がゴールド。かつ、右前がゴールド」となり、 応用その2と同じ意味になる。
ドロイド君杯 2020
全国のドロイド君技師とスコアを競い合おう!
ドロイド君杯は、テストモードで用いたサンプルマップとは異なる8個の秘密マップによるスコアアタックだ。 匿名で、何度でも提出することが出来るし、結果の確認もすぐに出来るから、気軽にどんどん提出してくれ!!
今作っているプログラムをドロイド君杯2020に提出するには、 エディタモードの上部にある
をクリックしよう。
すると、このようなダイアログが出てくる。
ドロイド君杯2020で用いるユーザー名を入力して「OK」を押してくれ。
君が作ったプログラムを、大会本部の方で実行して、結果を返してくれるぞ。
詳しい結果や総合順位、マップごとの順位などは、次のランキングで確認することが出来る。
ランキング
エディタモードの上部の
をクリックしてくれ。
するとこのような画面になる。
上段のこの部分
が、君のドロイド君杯での結果だ。
下段のこの部分
が、他のライバルたちの結果になる。
保存
エディタモードの上部にある
をクリックしてくれ。
保存するファイル名を入力すれば
保存される。
ちなみに、拡張子はdrkだ。
読み込み
エディタモードの上部にある
をクリックしてくれ。
すると、読み込みたいファイルを聞かれる。
以前に保存していたファイルを選んでくれ。
windoesPCだと上のような感じで聞かれるが、スマホだと少しわかりにくい場合も。
AndroidOSの場合は
こんな風に聞かれるかも。それて、保存したファイルを選んくれ。
iOSの場合は
ブラウズから保存したファイルを選択してくれ。
あと、ファイル名についてだ。
例えば保存するときに「ドロイド君」と入力したとする。 windowsPCの場合は「ドロイド君.drk」っていうファイル名で保存されているはずだ。
スマホやタブレットの場合、「ドロイド君.drk.txt」となっている場合があるから、気を付けてくれ。
テストモード
サンプルマップを使って、作成したプログラムの動作テストをすることができる。 左側(スマホの縦持ちだと上側)にマップが、右側(下側)に自分が作ったプログラムが表示されるぞ。
左側(上側)をドラッグさせると、マップが移動する。マウスホイール回転・ピンチイン/アウトで拡大縮小できる。 右側(下側)を操作した時の動きはエディタモードでの操作と同じだ。
エネルギー残量
画面上部にある
がドロイド君の残エネルギー量だ。
これがゼロになると、ドロイド君は活動を停止してしまう。
マップ選択
画面上部の
でマップを選択する。選択中のマップは明るく表示されるぞ。
マス内の上部にある数字はそのマップでの最高スコアを、下部の数字は今のスコアを示す。
スタート、ポーズ、ストップ
それぞれ、動作テストのスタート・ポーズ・ストップだな。
マップの切替や、エディタモードへの切替は、ストップの状態でないと出来ないぞ。
動作テスト中にスタートボタンを再度押すと、ドロイド君の動く速度が
1倍速 -> 2倍速 -> 4倍速 -> 8倍速 -> 16倍速 -> 最高速度 -> 1倍速 -> ・・・
と変化する。
×
<
>