アリさんエサ探しシミュレーター作る

,,,
私たちの身の回りの自然には実は不思議がいっぱいです。身近な昆虫のアリもよく見てみると、不思議な行動をしています。地面にお菓子が落ちているとき、巣穴までアリの行列ができているのをみたことがないですか?どうやって行列ができるのか、ちょっと不思議です。今回はScratchでアリの行列ができる様子をマネるシミュレーションを作ってみます。そんなに多くないコードで自然の不思議を再現できるのが面白いですね。

普段のアリはランダムに動いている

アリはあまり目が見えないそうです。なので、普段はウロウロとランダムに動いています。実際のアリを観察してみると、動いて、止まって、方向を変えて、また動いてを繰り返しているように見えます。そんな動きを再現するには、乱数を使うとできそうですね。

エサを見つけるとフェロモンのにおいを残して、巣穴に帰る

お菓子などのエサを見つけたアリは、体からフェロモンのにおいを出して巣穴に帰るそうです。においを残すことで、他のアリに、こっちに甘いエサがあるよって教えてるのでしょうね。Scratchでにおいを残すには、ペンやスタンプなどで、色をつけて行くと良さそうです。

他のアリはにおいをたどってエサに向かう

他のアリは、フェロモンのにおいが強い方を目指して動いていきます。においを色で残したなら、ライントレースをしていけば、エサにたどり着きそうです。

完成版はこちら

youtubeの解説動画はこちら
Scratchのプロジェクトはこちらです。

乱数を使ってニャンコ叩きを作る

,,
乱数を使ったモグラ叩き風のニャンコ叩きです。どの穴からニャンコが出てくるかを乱数で決めています。本当はニャンコ大好きです。 穴からたまにニャンコが出てくるように乱数を使います。1から10までが出るサイコロを振って、10になった時だけ、ニャンコに出てきます。こんなコードになりますね。 解説動画はこちら。
完成したプロジェクトはこちらです。

Scratchでライントレースを作る

,
今回はライントレースするネコをスクラッチで作ってみます。床に黒い線が書いてあって、線にそって走る車を見たことがありますか?あれがライントレースです。いちいち、右とか左とか指示を出さなくても、勝手に線に沿って進んでいくのが不思議ですね。 ライントレースの仕組みは、とても簡単です。左右のセンサーでコースを見ながら、
  • 右にはみ出したら、ちょっと左を向く
  • 左にはみ出したら、ちょっと右を向く
  • はみ出してなかったら進む
です。 実際にスクリプトを組んでみるとこんな感じですね。 センサーの部分には『色が色に触れたら』というブロックを使っています。
完成したプロジェクトはこちらです。

気になるスクラッチスタジオを集めてみた

,
スクラッチにはたくさんの作品(プロジェクト)が共有されています。こちらの『見る』からプロジェクトを探すことができますが、日本語で無いものも多いので、親しみやすそうなプロジェクトを載せているスタジオを5つ、選んでみました。遊んでみてください。スマホの方で閲覧いただいてる方ごめんなさい。プロジェクトを埋め込んでいますがAdobeFlashPlayerが使えないので動きません。 最後のは宣伝です。

「Why!?プログラミング」番組スタジオ

「Why!?プログラミング」番組スタジオ 2016年2月からNHKで放送されている『Why!?プログラミング』で取り扱われた作品のスタジオです。

日本人の作品

日本人の作品 とにかくたくさんの日本人の作品が集められたスタジオです。550プロジェクト以上ある様子。

Scratchではじめよう!プログラミング入門

Scratchではじめよう!プログラミング入門 日経BP社の書籍『Scratchではじめよう!プログラミング入門』の中で作成されていくシューティングゲームを掲載したスタジオです。
スーパーハードモードなど多くのリミックス作品が作られています。

徳之島でプログラミングにチャレンジ!

徳之島でプログラミングにチャレンジ! 総務省による「若年層に対するプログラミング普及推進」事業の一貫で、CA Tech Kidsが事業者として鹿児島県徳之島町と地域メンター育成を行いました。研修を受けたメンターが地域のこども達と一緒に作った作品を集めたスタジオです。
徳之島での産卵が有名なウミガメについてのクイズです。

あみこども未来ラボのスクラッチスタジオ

あみこども未来ラボのスクラッチスタジオ どんどんプロジェクトを増やしていきます。乞うご期待。
[amazon_link asins='4822297748' template='ProductCarousel' store='kikushun-22' marketplace='JP' link_id='320174b4-3326-11e8-b7bd-5788e8a710fc']

マイクラMakeCode エージェント君

,,
MakeCodeをつないでマイクラを始めると、こんなカワイイキャラクターがプレイヤーの隣に現れます。 ・・・誰!? 彼はエージェント君です。エージェント君は普段はポツンと待っていますが、プログラムで指示を与えるとずーっと働き続けてくれます。でもプログラムが間違っていると大変なことにもなります。エージェント君は私たちの身の回りにあるコンピュータと同じですね。

エージェント君にできること

  • プレーヤーの場所に戻る
  • 移動する
  • 向きを変える
  • ブロックを置く
  • ブロックを壊す
  • 足元を耕す
  • 目の前にブロックがあるか確かめる
  • アイテムを落とす
  • アイテムを拾う
  • アイテムを持ち帰る
  • 持っているアイテムを確認する
  • 攻撃する
どれもシンプルな動作ですが、実はプレーヤーができることとほとんど同じことができます。組み合わせると例えばこんなことができます。

整地する

エージェント君、整地作業を開始しました。 clear 20 とお願いしたので、20×20のエリアを整地し終わるまで、黙々と作業をしてくれます。 終わりました。ありがと、おつかれ!けなげだよエージェント君。

豆腐ハウスを建てる

build 8 6 9 エージェント君、一緒に暮らせる家を作ろう。というか作ってくれないか。僕はコーヒー飲んで待っているから。縦8×高さ6×横9の豆腐ハウスを作っておくれ。 Good Jobエージェント君。君が作業している間、僕はただ君を見ていたよ。何か別な作業をしていればよいのに・・・ 見とれてしまいました。 マルチじゃないと、マイクラの世界って1人で孤独です。村人や動物は全く言うことを聞いてくれないので、エージェント君がいてくれると、嬉しくなってしまいます。

【音あり注意】懐かしのテトリス風

,,
コードはこちらから。ちょっと長いです。
  • スプライトとしてブロックが落ちてくる
  • ブロックが底か他のブロックに当たると止まる
  • 止まると次のブロックが落ちてくる
  • 止まった時に一行隙間なくそろうと行が消える
  • 行が消えると上のブロックが下に落ちる
  • 止まった時に高さが一杯だとゲームオーバー
  • BGMを鳴らす

マイクラMakeCode チュートリアル紹介

,,
前回はMakeCodeを使いWindows10版のマイクラでプログラミングする記事を書きました。MakeCodeのサイトにはたくさんのチュートリアル(サンプル)が紹介されています。今回は面白そうなものをいくつか、実際に実行してみながら紹介してみます。

1.超ジャンプ(mega jump)

チャットコマンドに jump 10 のように入力すると、好きな高さまでジャンプできるプログラムです。10は好きな数字でOKです。 使うブロックも2個だけで、シンプルなコードです。num1という変数に入力した高さが入ってきます。では飛んでみましょう。 ちなみに高さ23以上にジャンプすると命の保証ができません・・・。

2.足跡に咲く花(flower trail)

こちらもシンプルです。 プレイヤーが歩いたら、というブロックを使っています。花の種類や、咲かせる場所を変えたりできますね。 息子君と一緒に、足跡に湧くスライムというプログラムを作ったら大変なことになりました。

3.1000TNT

すぐにこういう悪いコトをしてみたくなりますね。ブロックのまとめて置いています。10☓10☓10で1000個ですね。 ちょっと長くなってしまいますが、繰り返しを使って同じコードを書くこともできます。 実行してみると流石に迫力があります。 火遊びはイケナイと知りつつも・・・・、あ~ぁ、この世の終わりです。

MakeCodeでマイクラプログラミング

,
マイクロソフトはMakeCodeというサービスを提供しています。MakeCodeはmicro:bitのコードエディタになっています。
Microsoft MakeCode brings computer science to life for all students with fun projects, immediate results, and both block and text editors for learners at different levels. (意訳) Microsoft MakeCodeは全ての生徒にワクワクするようなコンピュータ・サイエンスの学びを提供します。楽しいプロジェクト、すぐに実行できる環境、様々なレベルに対応するブロック型とテキスト型のコードエディタがあります。
2017年10月23日に、マインクラフトが追加されました。マインクラフトのWindows10版またはEducation Editionがあれば、MakeCodeからマイクラの世界をプログラミングできます。Java版(PC)を購入済みの方はWindows10版をインストールすることができます。 [Minecraft] Java版所有者が無料でWindows10版をダウンロードする手順 Chicken Rainのチュートリアルで、導入の手順を見ておきます。 始めるとすぐに「マイクラとつながっていません、コードコネクトAppを入れて下さい」と英語で表示されます。早く日本語化して欲しいですね。 「Download the App」を押すと今度はこんな画面になります(また英語)。 「Download Code Connection」を押してダウンロードして下さい。終わると「CodeConnection.msi」がありますのでインストールします。インストールが終わると「Code Connection for Minecraft」というショートカットが作成されますので、実行します。こんな画面が表示されると思います。 コピーボタンを押して、コマンドをコピーしておきます。 続いて、プログラミングしたいマイクラの世界を起動します。設定を確認して、チートを有効にしておいて下さい。 マイクラの中で「tキー」を押してチャットを開き、先ほどコピーしたコマンドをペーストして実行します。 するとCodeConnectionがこんな画面になります。 MakeCode以外にも色々接続できるようですね。今回はMakeCodeボタンを押します。 さて準備ができたので、Chicken Rainに戻るとこんな感じのコードを組むことになります。 早速実行してみましょう。「tキー」を押して、チャットを開きchickenと入力します。 大量のニワトリが・・!! MakeCodeのマイクラプログラミングはかなり高度なことができそうです。 全て使うのは大変なくらいブロックが揃っています。

プレイヤー

[su_accordion] [su_spoiler title="トリガー" open="yes" style="default" icon="plus" anchor="" class=""]
  • チャットコマンドを入力した時
  • 歩いた・泳いだ・落下した・登っている・飛んだ・スニークした・走った・バウンドした時
  • 死んだ時
  • 矢を放った時
  • テレポートした時
[/su_spoiler] [su_spoiler title="アクション" open="yes" style="default" icon="plus" anchor="" class=""]
  • メッセージを送信する
  • 現在の位置からテレポートする
  • コマンドを実行する
  • チャットコマンドを実行する
[/su_spoiler] [/su_accordion]

ブロック

[su_accordion] [su_spoiler title="トリガー" open="no" style="default" icon="plus" anchor="" class=""]
  • ブロックが置かれた時
  • ブロックが壊された時
[/su_spoiler] [su_spoiler title="アクション" open="no" style="default" icon="plus" anchor="" class=""]
  • ブロックを置く
  • ブロックをまとめて並べる
  • ブロックで文字を描く
  • レバー・リピーターを操作する
  • ブロックをコピーする
[/su_spoiler] [/su_accordion]

生き物

[su_accordion] [su_spoiler title="トリガー" open="no" style="default" icon="plus" anchor="" class=""]
  • 行動不能になった時
[/su_spoiler] [su_spoiler title="アクション" open="no" style="default" icon="plus" anchor="" class=""]
  • スポーンする
  • 行動不能にする
  • エンチャントする
  • ブロック・アイテムを渡す
[/su_spoiler] [/su_accordion]

エージェント

[su_accordion] [su_spoiler title="アクション" open="no" style="default" icon="plus" anchor="" class=""]
  • 自分の位置に連れてくる
  • 移動させる
  • 向きを変える
  • ブロックを置く
  • 拾わせる
  • 攻撃する
  • 破壊させる
  • 耕させる
[/su_spoiler] [/su_accordion]

ゲームプレイ

[su_accordion] [su_spoiler title="アクション" open="no" style="default" icon="plus" anchor="" class=""]
  • 天気を変える
  • 時間を設定する
  • 難易度を変える
  • ゲームモードを変える
  • 経験値をあげる
[/su_spoiler] [/su_accordion]

ビルダー

[su_accordion] [su_spoiler title="アクション" open="no" style="default" icon="plus" anchor="" class=""]
  • 移動させる
  • 向きを変える
  • マーカーを置く
  • テレポートする
  • ブロックでう埋める
  • ブロックで線を引く
  • ブロックで壁を作る
[/su_spoiler] [/su_accordion]

シェイプ

[su_accordion] [su_spoiler title="アクション" open="no" style="default" icon="plus" anchor="" class=""]
  • ブロックで線を描く
  • ブロックで円を描く
  • ブロックで球を作る
[/su_spoiler] [/su_accordion]

拡張機能

剣で空を飛ぶ!

,,,
今回はpollBlockHitsという、触ったブロックを検出するプログラムを使って空を飛でみます。まずは、こんなコードを実行してみます。 [python] import mcpi.minecraft as minecraft import time mc = minecraft.Minecraft() while True: hits = mc.events.pollBlockHits() if hits: for h in hits: mc.postToChat(h.pos.x) mc.postToChat(h.pos.y) mc.postToChat(h.pos.z) mc.postToChat(h.face) mc.postToChat(h.type) mc.postToChat(h.entityId) time.sleep(0.1) [/python] whileループで繰り返しながら、pollBlockHitsをしています。 このpollBlockHits、利き手に剣を持った状態で、右クリック(ブロックを置くのと同じ操作)すると、そのイベントが記録されます。どんな感じに記録されるかと言うと、 チャットに出力したように、 -93  1  55  7  0  216 こんな感じで記録されます。これは順番に触ったブロックの
  • x座標
  • y座標
  • z座標
  • 方向
  • イベントタイプ(いつも0)
  • エンティティID(今度詳しく)
です。 さて、このpollBlockHitsを使って、何回かに渡って面白いことをやってみましょう。今日は飛んでみます。コードはこんな感じ。 [python] import mcpi.minecraft as minecraft import time import mcpi.block as block from mcpi.vec3 import Vec3 mc = minecraft.Minecraft() def fly(): while True: if len(mc.events.pollBlockHits()): mc.player.setPos(mc.player.getPos() + Vec3(0,3,0)) time.sleep(0.1) fly() [/python] pollBlockHitsのイベントの中身は見ていませんが、イベントがあったか(右クリックしたかどうか)だけをみて、あったら主人公を上に飛ばしています。右クリックしたら飛ぶってことですね。飛んでみると、 おぉー飛んだ。まだまだ飛んだ! 飛びすぎかな~~、あ、落ちた! あ~あ、死んじゃいました。飛びすぎには注意ですね。着地は水の上がいいかもしれません。 [amazon_link asins='1119269067,3864903734,4800711657,4839960488,479814911X,4800711274' template='ProductCarousel' store='kikushun-22' marketplace='JP' link_id='8fc8bd6a-4ea4-11e7-9891-d399843555be']