ゲーム作成の基本      
作品
オープニング
プレゼンテーションモードではじめる
シンプル画面ではじめる
作品のもくじを作る
テキストボックスに記録して終了 
得点の保存と読込み
文字提示
1文字ずつ表示 
グラフィック文字 
指定した位置にメッセージを出す
AVI動画を再生する 
いろいろな種類の動画を再生する
音・音楽
待つ効果音
待たない効果音 
音楽と音を出す
ブラウザで音楽を再生する
  カメを動かす  
ボタンで歩く
スライダーで操縦(そうじゅう)
キーで動かす 
ページの切り替え
ボタンでページを切り替える
ページの自動切替  
横スクロール(ランナー) 
縦スクロール(運転席からの風景) 
図形
円を描く
和模様を描く 
スタンプで模様を描く
ボタンで回転しながら落とす 
イベント動作
カメにぶつかったら動作
指定したカメにぶつかったら動作
色の上に乗ったら動作
位置で判定して動作する
運動の様子
何かして再現 
だんだん速くなるロケット
ボール投げ
ボール投げ(空気抵抗あり)
反射・回転・アイテム
 壁とラケットで反射
 植物の回転  
 動くゴキブリ
 アイテムで攻撃(こうげき)
 連続発射
  マウスで回答
ボタンで選択問題 
順序不同で選ぶ問題
順序を答える問題
写真の場所で答える問題 
マウスで移動して答える問題  
マークを移動しスタンプして答える問題   
文字で回答
1文字ずつ答える英単語クイズ
文字で答える問題
ダイアログで答える問題
プログラムを書いて車を動かす
制限・判定
音楽が終わるまで歩く
1分間で何周できるか
ゴールの着順判定 








▲TOP
オープニング
作品を開いたときの最初の画面です。オープニングを表示したら、作品の最初の画面を開きます。 
オープニング.mwx  作品の最初の画面.mwx

作品が開くと、オープニングの画面が自動的に表示され、作品の最初の画面を出します。
手順は スタートアップ
プレゼンテーションモード
仮の名前は 「番号 0」
くりかえす 33

仮の名前は 「番号 :番号 + 1」
形は :番号 待つ 2

待つ 5
作品を出す "作品の最初の画面
終わり

映画でも、映画が始まる最初の画面がありますが、それと同じように制作者によって特徴的なオープニングを作っておいて、それぞれの作品をオープニングから始めるようにすると、制作者がわかりやすくなります。
「スタートアップ」は、自動的に実行される手順です。
「スタートアップ」という名前は、マイクロワールドEXで最初から決めらた名前です。すでに予約して決められてしまっていますので、スタートアップという名前をカメの名前やテキストボックスの名前などに使うことはできません。

モニタサイズに合った作品にするために、新規作成のときに 作品のサイズは でページの大きさを決めておくとよいでしょう。

  
オープニングを作り始めると、みんな夢中になります。かっこいいオープニングができるといいですね。
▲TOP


▲TOP
 プレゼンテーションモードで起動
 ボタン類を表示しないシンプルな画面です。
 プレゼンテーションモードでスタート.mwx

作品を開くと、自動的にプレゼンテーションモードになります。
   
手順は スタートアップ
プレゼンテーションモード
終わり
 
 
プレゼンテーションモードは、作品のページ以外のボタンなど、ページの画面以外の余分な部分を黒にして表示する方法です。
元の画面に戻すには、外側の黒い部分をクリックするか、ESCボタンを押します。
命令語として、「プレゼンテーション」を実行すると、プレゼンテーションモードになり、もう一度「プレゼンテーション」を実行すると、元の画面に戻ります。別の手順やボタンからプレゼンテーションモードにしたいときは、手順の中に次のように書きます。
設定する "さくひん "プレゼンテーションモードか "ほんとう
このように「設定する」でプレゼンテーションモードにするプログラムにすると、どちらのモードのときでもプレゼンテーションモードになります。

プレゼンテーションに使うモニタサイズに合わせて、 新規作成のときに 作品のサイズは でページの大きさを決めておくとよいでしょう。

 
専用のプレゼンソフトのような画面になります。LOGO言語でプレゼンしたら、動きがあったり、プレゼン中にボタンの操作ができたりするおもしろいプレゼンができます。
▲TOP


▲TOP
 シンプル画面ではじめる
コマンドセンターやステータスバーを指定して表示しないようにする方法です。
シンプルな画面ではじめる.mwx

起動すると、ページだけのシンプルな画面になります。
※起動すると真っ白な画面になります。
   
手順は スタートアップ
設定する "さくひん  "コマンドセンターか "うそ
設定する "さくひん  "ステータスバーか "うそ
設定する "さくひん  "タブか "うそ
設定する "さくひん  "ツールバーか "うそ
終わり 
  
「手順は スタートアップ」は、作品が開くとき、自動的に実行される手順です。この手順での中の「設定する」で、画面のモードを設定することで、シンプルな画面にしています。
手順のタブエリアを表示しないようにしておけば、作品を使う人が間違って手順を書き換えたりできなくなります。

 
シンプルな画面も美しいのですが、LOGO言語の良いところには、「すぐにプログラミングできる」ということもあるので、プログラミングできない画面にしてしまうのは、作品の使い方をよく考えてからにすると良いでしょう。
▲TOP


▲TOP
作品のもくじを作る
作品の最初のページです。 
構造化もくじ.mwx   構造化ステージ1.mwx 


作品「構造化もくじ」にある「開始」ボタンをクリックしすると、「構造化ステージ1」が開き、「構造化ステージ1」の「もどる」ボタンをクリックすると、「構造化もくじ」にもどります。
   
手順は 開始
作品を出す "構造化ステージ1
終わり  
  
最初の画面では「はじめる」という命令のボタンを作りたくなりますが、これは、LOGO言語の予約語として、すでに使われているので使えません。そこで、「開始」という命令(手順の名前)を使っています。
ここで、「もどる」と表現しているのは、「作品を出す」で出す作品名を指定して開いているので、「元にもどる」ではなくて、「進む」の意味です。もどるためには、元の作品の名前をファイルとして保存し、「もどる」の手順で保存しておいたファイルにある作品名を開くようにします。

画面の多い作品を作るときは、いくつかの作品をつなげるように1つの作品にします。最初に見る画面の作品を 「もくじ」 として、そこから別の作品を開くように作っていきます。このような作りにすることで、作品の実行が遅くならず、1つ1つの作品を完全なものしてから、つないでいくことで作品のエラーを防ぐことができます。 


LOGO言語の作品をいくつか作ってみると、このようなもくじのページを作ることが便利であることがわかってきます。
もくじを中心にいろいろなページを開けるように作ることが作品作りの基本の形です。
▲TOP


▲TOP
テキストボックスに記録して終了
ゲームの途中経過を保存して、次回に使えるようにして終了します。終了したら、終了したことがわかる画面を表示します。 
保存して終了.mwx end.mwx


ウマ、あるいは、イヌをクリックしてから、「保存して終了」をクリックするとクリックした動物が「選んだ動物」に保存され、ENDの画面になります。
 
 
手順は 保存して終了
作品の保存
作品を出す "end.mwx
終わり

 

ゲーム中の得点やアイテムを保存しておき、次にゲームをするときに、保存した得点、アイテムを利用したいときがあります。
ゲームの得点や状態を記憶しておくには、作品を保存したときに、いっしょに保存されるものを使えば簡単です。
画面にあるカメ、ボタン、テキストボックス、スライダー、背景の色、さらに「カメの中の名前は」「作品内の名前は」で設定した値は、「作品の保存」で、作品ファイルの中にいっしょに上書き保存されます。
しかし、「名前は」で作った変数の値は、保存されないので、使えません。
テキストボックスには、文字だけでなく数字でも保存でき、内容を見て確認しやすいので便利です。

他に「字の保存」でテキストファイルとして保存する方法があります。この方法は、すでにテキストファイルが保存されているとき、そのままでは上書きができないので、必要なプログラムが増えてしまいますが、他の作品からも保存した内容を参照できる便利さがあります。

 <途中経過を保存する主な方法>
(1)テキストファイルとして保存
(2)テキストボックスに書き込んで、作品の保存といっしょに保存。
(3)「カメの中の名前は」で設定した変数に記憶して、作品の保存といっしょに保存。
(4)「作品内の名前は」で設定した変数に記憶して、作品の保存といっしょに保存。

終わりの画面も工夫したいところです。
作品を閉じる命令が無いので、「作品を出す」で ”end.mwx で「おわり」らしい画面を出して、終わった感を出すのも良いでしょう。


← end.mwx の画面


  
途中経過の保存は、テキストボックスがわかりやすくて、便利です。
▲TOP


▲TOP
得点の保存と得点の読み込み
テキストファイルで保存しておいた内容を他の作品で読み込んで使います。 
得点の保存と読込み.mwx 

得点の保存ボタンをクリックすると、「得点」テキストボックスの文字をを「得点.txt」が作られて保存されます。
得点の読込みボタンをクリックすると、「得点.txt」を読み込んで、「前回の得点」に表示します。
   
手順は 得点の保存
注意してやる
「ファイルを消す "得点.txt」「」
字のエクスポート "得点.txt "得点
終わり

手順は 得点の読込み
前回の得点は "
字のインポート "得点.txt "前回の得点
終わり
 
  
テキストボックスに途中経過を保存しておいても、別の作品で、その保存内容を知ることはできません。そこで、他の作品からも利用できるようにするには、テキストファイルを「字のエクスポート」で保存しておいて、それを「字のインポート」で読み込むことで利用できます。
「得点.txt」を保存するとき、上書きしようとすると、エラーが出て保存できないので、保存する前に「ファイルを消す」で「得点.txt」を削除しています。
このとき、まだ「得点.txt」が作られていない「得点.txt」を削除しようとするとエラーになってしまうので、「注意してやる」を使って表示しないようにしています。

いくつもの作品から、同時に書き込みが生じたときの処理は困難です。このような処理はデータベースソフトやグループウェアソフトで重要な機能です。


いくつもの作品から、共通のテキストファイルを読んだり、書き込んだりできるようにすれば、SNSのようなことができます。自分たちでSNSのようなものを作ってみるとSNSの扱い方の問題点や活用方法を考える学習になるでしょう。
▲TOP


▲TOP
1文字ずつ表示
ポチポチと1文字ずつ文字を出す方法です。 
1文字ずつ表示.mwx  click.wav


1文字ずつ、音を出しながら、文字が表示され、終わると「次」のボタンが表示されます。
利用するときは、「次」の手順を作って、次の場面へと進ませます。
 
手順は スタートアップ
 注意してやる 「無くす "ボタン」 「」
 テキスト2は "
 テロップ2 "|紀元前5000年,高度な文化をもった亀帝国があった。|
終わり

手順は テロップ2 :テロップ文
 もし 空か :テロップ文
 「ボタン "ボタン 「194 -180」 「次」  設定する "ボタン "おおきさ 「100 40」 止まる」
 テキスト2、 文末へ 書き入れる 最初 :テロップ文
 click
テロップ2 最初以外 :テロップ文
終わり
 
  
作品を起動すると、自動的に実行される手順として、スタートアップがあります。スタートアップの手順で初期設定をしています。
テキストボックスに1文字書き込むときは、「書き入れる」で改行しないで書き入れます。
テキストが1文字ずつ表示され、すべての文字が表示されると、「次」のボタンが出てきます。

テキストボックスは、不透明のときだけ、文字の書込みができます。透明なテキストボックスに文字を書き込みたいときは、不透明で表示していないテキストボックスに書き込んでから、透明にして表示するようにします。表示したあと、また見えなくすると、文字がなくなり、ちらつくので、透明なときにスタンプすると、文字がちらつかなくなります。


映画の始まりのような作品を作ってみたいですね。
▲TOP


▲TOP
グラフィック文字
きれいにデザインされた表示です。 
グラフィック文字.mwx 

をクリックすると、グラフィック文字が提示されます。グラフィック文字をクリックすると、消えます。
   
手順は 使い方
仮の名前は 「X 横の位置」
仮の名前は 「Y 縦の位置」
HELP、 位置は リスト :X - 180 :Y - 50 
出てくる
終わり

マウスでクリックした場所にメッセージを出すには、マウスの位置を「横の位置」と「縦の位置」で調べ、「仮の名前は」で手順の中だけで使える変数X と変数Y に代入します。
その位置から、ちょうど良い位置にずらして、「位置は」でカメの位置を指定して、形をメッセージにしたカメを出します。カメの形の番号を変えることで、ちがうメッセージも出せるでしょう。

グラフィック文字を作るには、テキストボックスを透明にして、字のスタンプ して背景に文字を画像としてスタンプします。そして、スタンプされた文字の画像を選択・コピーして、カメの形に貼り付けます。

テキストは、PCごとによるので、作品を他のPCで利用したとき、文字の位置がずれたり、別の文字になったりする心配がありますが、文字をペイントツールでグラフィックとして作って使うと、ずれや文字化けの心配がなくなります。

  
テキストボックスで文字表示するのに比べて、デザインの幅が広がるとともに、PCを変えても文字化けしない作品になります。
▲TOP


▲TOP
指定した位置にメッセージを出す
カメの近くにメッセージを出します。 
指定した場所にメッセージを出す.mwx 

女の子、男の子を左クリックすると、女の子の場合は、右上に、男の子の場合は、左上にメッセージが出ます。
 
 
手順は 吹き出し :言葉 :右 :上
仮の名前は 「横 横の位置」
仮の名前は 「縦 縦の位置」
設定する ”メッセージ ”いち リスト :横 + :右 :縦 + :上
メッセージを出す :言葉
終わり

メッセージを出す」を使うと、簡単にメッセージのダイアログを出せます。
メッセージを出す位置を設定するには、「設定する」を使います。
 設定する ”メッセージ ”いち 「100 100」
メッセージが表示すると、「OK」のボタンをクリックしないと、次へ進まなくなるので、プログラムの流れを一時停止したいときに便利です。

  
カメをクリックすると、そのカメからメッセージダイアログを出すように見えます。
▲TOP


▲TOP
AVI動画を再生する
マイクロワールドでのLOGO言語の「動画再生」の機能を使って、動画を再生します。再生ボタンをクリックすると、カメが右を向き、動画が再生されます。再生が終わるとカメが上を向きます。
動画の再生.mwx  クラゲ.avi 

「クラゲ」のボタンか、動画画面の上を左クリックすると、クラゲの動画が再生されます。


 ファイルのインポート→ビデオ

 でAVI形式の動画ファイルをインポートしておきます。
手順は 再生
始める「クラゲ 向きは 0」
向きは 90
終わり
 

拡張子がAVIの動画ファイルは、Windowsの独自形式です。同じAVIでも時代によって、圧縮形式が変わってきています。マイクロワールドEXのファイルのインポートで再生できるのは、圧縮形式が Microsoft Video 1 のAVIファイルです。

ビデオで撮影した動画をAVIファイルとして利用するときは、動画編集ソフトで、AVI形式の Microsoft Video 1に指定して保存したものを使います。
「クラゲ」というAVIファイルの再生に 始める を使っています。
  
ファイルのインポート→ビデオ でAVI形式の動画を再生する方法です。
拡張子がAVIの動画で圧縮形式が Microsoft Video 1の動画ファイルを再生します。
▲TOP


▲TOP
いろいろな種類の動画を再生する
AVI形式以外の動画をブラウザ機能で再生する方法です。
いろいろな種類の動画を再生する.mwx   究極の鳥型グライダー.mp4

ボタンをクリックすると、AVIファイル形式以外の動画ファイルをブラウザ機能で再生します。
手順は 再生
設定する "ブラウザ "アドレス ワード カレントディレクトリ "究極の鳥型グライダー.mp4
ブラウザ
終わり

拡張子がAVIの動画ファイルは、ブラウザの機能を使って再生できます。
の「ハイパーリンクを作る」に書く、動画ファイルのアドレスは、絶対アドレスなので、作った作品を他のPCで開くとアドレスが違ってしまいます。そこで、「設定する」を使って、そのPCのディレクトリを調べて、アドレスを書き込んで動画を再生しています。

  
ブラウザの機能を使って動画を再生するときは、ブラウザが起動するまで、ちょっと間が空きます。
▲TOP


▲TOP
待つ効果音
音を出し終わるまで、動きを待たせてアニメーションする方法です。
音を出すことが「待つ」と同じように使えます。
待つ効果音.mwx   openb.wav

開始ボタンをクリックすると、ウマが音を出しながら走ります。
   
手順は 開始
形は 2
前へ 40
openb
形は 1
待つ 1
終わり 

手順の中に openb とだけ書くと、 openb の再生が終わるまで、プログラムの実行が次の行に進みません。
openb と 「待つ」で一時停止して、「形は」でウマの形を替えています。

  
openbで音が出し終わるまで、次の行へ進めません。
▲TOP


▲TOP
待たない効果音
音を出しながら、動かせる方法です。
 待たない効果音.mwx   click.wav


開始ボタンをクリックすると、アヒルが音を出しながら歩きます。
   
手順は 開始
始める 「click」
形は 2
前へ 10
待つ 1
形は 1
前へ 10
待つ 1
終わり

始める」を使うと click の音が始まると、音が終わる前にアヒルが動いています。
待つ」で一時停止して、「形は」でアヒルの形を替えています。
プログラムを待たせず、いくつもの処理をさせることを並行処理と言います。
LOGO言語では、はじめるを使う方法以外にも、無限を使う方法、カメの中に命令を書いてクリックオンする方法で簡単に並行処理ができます。

以下の方法で、始める を使うのと同じように実行できます。
<無限を使う方法> 待たない効果音2.mwx へのリンク
手順は 開始
無限に 「click これをとめる」
形は 2
前へ 10
待つ 1
形は 1
前へ 10
待つ 1
終わり

<カメを使う方法> 待たない効果音3.mwx へのリンク
かめ2を作り、かめ2の中にclik と書いてから、以下のように書き直す。
手順は 開始
たのむ かめ2 「クリックオン」
形は 2
前へ 10
待つ 1
形は 1
前へ 10
待つ 1
終わり

ボタンの無限にチェックを入れて、カメを動かすのと、ボタンを1回にチェックして、カメに無限のチェックを入れて動かしても、どちらも同じ無限の動作をしますが、カメを無限にした方が速く動きます。同じ動作のプログラムでも、プログラムの仕方によって速さが異なるので、いろいろ試してみるとことが重要でしょう。

  
始める」を使うことで、clickの音が終わらなくても、(ちょっと、間が空くこともありますが)次の行を実行しています。

音楽再生プログラムを作ったとき、音楽がはじまると他の処理が止まってしまうと不便です。そんなときは、いくつもの処理が同時に行えるような並行処理(マルチタスク)の機能が便利になります。

▲TOP


▲TOP
音楽と音を出す
音楽を流しながら、音を出します。
音楽と音を出す.mwx   click.wav  jazz.mid

開始ボタンをクリックすると、音楽が流れて手をたたきます。
   
手順は 開始
始める 「jazz みんなとまる」
無限に 「歩く」
終わり

手順は 歩く
形は 1 click
形は 2 待つ 2
形は 3 待つ 2
終わり
 

始める」でjazz を再生すると、jazz が終わるのを待たずに次の行へ進みます。
同様に「無限に」を使っても 手順「歩く」が終わらなくても、次の行へと進みます。
手順「歩く」の中でも clik で効果音が再生されますが、 jazz と違う形式で、違う方法で再生しているので、両方が同時に再生することができます。

  
音楽と効果音は、同時に出すことができます。
▲TOP


▲TOP
ブラウザで音楽を再生する
インポートで使えない音をブラウザの機能で再生する方法です。 
ブラウザで再生.mwx   ants.mid

再生ボタンを左クリックすると曲名に書かれた曲が再生されます。
手順は 再生
 設定する "ブラウザ  "アドレス ワード カレントディレクトリ 曲名
 ブラウザ
終わり

ファイルのインポートで指定できないファイルを作成す方法としてハイパーリンクの機能を使います。
ハイパーリンクのファイルのアドレスは、絶対アドレスなので、「カレントディレクトリ」で絶対アドレスを調べ「設定する」を使って、ハイパーリンクの設定を行っています。

再生するごとにブラウザが開いたままになるので、再生が終わったらブラウザを閉じます。
音楽ファイル、動画ファイル、ワープロファイルなど、独自の形式のファイルは、時代ごとに変わっているので、マイクロワールドEXのLOGO言語でファイルを開けない場合があります。しかし、ブラウザで開けるなら、マイクロワールドEXのLOGO言語でブラウザを開いて再生できるわけです。

  
この方法を使うと、ページに聞きたい曲名のボタンを作り、ボタンをクリックして曲を流すことができます。
▲TOP


▲TOP
ボタンで歩く
ボタンをクリックして、人物を上下左右の方向に歩かせます。
壁にぶつかると止まります。
ボタンで歩く.mwx    stamper.wav

「歩く」のボタンを左クリックすると音を立てながら歩きだします。「北」「西」「南」「東」のボタンを左クリックすると、歩く向きが変わります。
   
手順は 歩く
もし 下の色 < 1

 形は 形番号 待つ 2 
形は 形番号 + 1 前へ 7  はじめる 「stamper」 
 形は 形番号 待つ 2 
 形は 形番号 + 2 前へ 7  はじめる 「stamper」 

終わり

手順は 北
向きは 0 形番号は 10 前へ 7
終わり

手順は 東
向きは 90 形番号は 1 前へ 7
終わり

手順は 南
向きは 180 形番号は 4 前へ 7
終わり 

手順は 西
向きは 270 形番号は 7 前へ 7
終わり

 
 
歩くアニメーションになるように、歩く向きごとの歩く画像を用意しています。
向きは」でカメの向きを変えると、それに合った画像を「形は」で表示しています。
音が出るときに動きが止まらないように、「はじまる」を使っています。
くりかえし音を出すときに音が重なって消えることがあるので、使う音は、再生時間が短いものを使います。

ボタン操作で、ピコピコと歩きます。 
▲TOP



▲TOP
スライダーで操縦(そうじゅう)
スライダーでカメの左右に動かします。
スライダーで操縦.mwx    click.wav  fanfare.wav  shout.wav


開始ボタンを左クリックすると、カメが動き出します。左右のスライダーで曲がります。
壁にぶつかると、スタート位置に戻ります。ゴールに入るとファンファーレが鳴って終わりです。
 
手順は 開始
前へ 5 click
右へ 左右
終わり

手順は 壁
shout
位置は 「22 -145」
終わり

手順は ゴール
fanfare
みんなとまる
終わり

 

「右へ」だけで、スライダーの値が-の数値になれば、左に曲がります。スライダーは、動いてしまうことがあるので、作品タブエリアのスライダー「左右」を右クリックして固定します。カメがゴールすると、「みんなとまる」でプログラムを終了しています。

ボタンから手順を起動したとき、どこかに無限があると、ボタンがへこんだままになります。もう一度、へこんだボタンを左クリックするとボタンがもどるとともにプログラムが終わります。

  
「開始ボタン」を無限にしているので、2回目のクリックで止まります。
▲TOP


▲TOP
キーで動かす
矢印キーで怪獣を動かし、スペースキーで炎を出します。
キーで動かす.mwx   bear.wav


スタートボタンを左クリックすると文字コードにボックスに「開始」と表示されます。
←→キーを押すと怪獣が左右に動きます。スペースキーを押すと、炎を出します。
もう一度、スタートボタンを左クリックすると終わります。
   
手順は 開始
もしどちらかを 終わったか 「チェック」
「文字コードは ”開始 無限に 「チェック」」
「文字コードは ”おわり みんなとまる」
終わり

手順は チェック
仮の名前は 「キー 受けた字」
文字コードは アスキー :キー
もし (アスキー :キー) = 39 「向きは 90 前へ 10」
もし (アスキー :キー) = 37 「向きは 270 前へ 10」
もし (アスキー :キー) = 32 「発射」
もし (アスキー :キー) = 16513 「発射」
終わり

手順は 発射
形は 2 始める 「bear 形は 1」
終わり 
 

キーを押すと、文字がタブエリアやコマンドセンターに書かれてしまうことがあるので、ページの背景をクリックさせて文字が書き込まれないようにして、スタートさせています。
コマンドセンター、タブエリアを非表示にする方法では、ページの上のテキストボックスへの書込みを防げません。
受けた字」でキーを押したときの信号を受け取り、「アスキー」でコード番号に変換しています。処理が遅くならないように「受けた字」は、チェックの手順の中で、1回だけにしています。

英数モードのときは、スペースキーのアスキーコードは32ですが、日本語モードになっていると16513になります。
LOGO言語には、日本語モードを解除する命令がないので、作品を使う人に日本語モードを解除してもらうしかないでしょう。

  
キーボードをたたいて、アニメーションになるので、楽しいです。しかし、やりすぎて、キーボードをこわさないようにしましょう。
▲TOP


▲TOP
ボタンでページの切り替え
ボタンをクリックして、ページをめくります。プレゼンツールの基本形です。
ボタンでページの切り替え.mwx 

ボタンをクリックすると、ボタンに書かれたページを開きます。
 

ページをめくるようなつくりになるので、最初に基本の形となるページを作り、そのページを複製してから、複製したページを修正していくようにしていきます。このようにして作ると、ページの同じ位置にボタンがあるので、マウスを移動しなくてもパラパラとページをめくるようにページを替えられます。
ページを出すには、「ページを出す」を使いますが、省略して、ページの名前だけ書いても同じです。
(1)基本の形のページを作る
 


(2)ページの複製でコピーする。


(3)好みによっては、ページの切り替え効果を設定する。

作品の作りはじめは、切り替え効果や効果音を入れたくなりますが、ページの中身に内容があり、内容をしっかりと見たいような作品はページの切り替え効果や効果音あるとじゃまになることがあります。

ボタンにページの名前を書かずに、手順でページを開くようにすれば、ページを開くの同時にページの中のカメを動かすようなことができますが、実際のプレゼンテーションでは、ページを開いてから、ページの中のボタンをクリックして動くようにした方が話しに合わせやすいです。

  
マイクロワールドのLOGO言語で作ったプレゼンテーションは、提示中にボタンで操作したりして、説明力のあるプレゼンテーションになります。
▲TOP


▲TOP
ページの自動切替
 カメが動いていって画面のはじまで行くと次の画面になって進んで行くプログラムです。
ページの切り替え.mwx

開始ボタンをクリックすると鳥が飛んでいき、はじまで行くとページ2に替わり、ページ2にいる 鳥のかめ2 を動かします。
かめ2は、はじまで行くと、ページ1に替わり終わりになります。

 
手順は 開始
かめ1、 鳥1
かめ2、 鳥2
終わり

手順は 鳥1
まえへ 15 まつ 1
もし 横の位置 > 400
「横の位置は -400 ページ2 とまる」
鳥1
終わり

手順は 鳥2
まえへ 15 まつ 1
もし 横の位置 > 400
「横の位置は -400 ページ1 とまる」
鳥2
終わり 

ページを開くには、「ページを出す」を使うか、ページの名前だけを書きます。
ページ2に替わった時にページ2にあるカメを動かすために、カメの名前を かめ2 として、ページ1のカメと違う名前にしています。これで、開始の手順で、ページ1の時でもページ2のカメを動かせます。
ページ2に替わるときにページ1のカメを止めなくてはいけないので、鳥1の手順では、無限を使わず、手順の最後の行で、自分自身の手順を呼んで、くりかえしています。もしも、鳥が画面のはじまでいったことを、横の位置で判定して、 「とまる」で手順を止めています。このようなくりかえしの手順であれば「とまる」が使えます。

同様に見せるには、これ以外にも大きなシェイプをページの画面のように見せて切り替えるとか、新しい手順を読み込んで、ページを作り直す方法とか、作品を読み直す方法もあります。

  
このような方法で、ロールプレイングゲームのように登場人物がページの上で探検していくような仕組みを作れます。
▲TOP


▲TOP
横スクロール
画面の背景が横に移動する作品を作ります。
横スクロール.mwx   willtell.mid  sleep.wav

STARTをクリックすると、夜景が左から右へ動き出します。イヌが走っているように見えます。
手順は START
無限に「willtell」
くりかえす 4「夜景が動く 5」
くりかえす 9「夜景が動く 2」
くりかえす 30「夜景が動く 1」
くりかえす 340「夜景が動く 0.1」
くりかえす 3000「夜景が動く 0」
くりかえす 2「夜景が動く 10」
かめ2、 形は 3
sleep
みんなとまる
終わり

手順は 夜景が動く :時
かめ1、 前へ 10 待つ :時
かめ2、 形は 1
かめ1、 前へ 10 待つ :時
かめ2、 形は 2
終わり

走る速さは、夜景を動かす量を変えるか、待つ時間を変えるかでできますが、イヌの形の変化と合わせるには、待つ時間を変えた方が簡単でしょう。
手順「START」が始まってから、「くりかえす」の回数と「待つ」の時間を変化させて、だんだん速くなるように見せています。
コンピュータは縦にスクロールが標準の機能なので、昔のゲームは、横ではなくて、縦に移動させるものがほとんどでした。LOGO言語では、カメを移動させることで、画面を横に移動しているように見せられるので簡単です。

 横にスクロールする画面は、ページサイズの2倍の大きさで作ります。ちょうど2倍になっていないと、ちらついて見えてしまいます。

 また、つながりが自然になるように左端の絵と右端の絵を同じ高さでそろえて、つながるように見せることも大切です。
  
だんだん速くなる感じを待つ時間を変化させて作っています。
▲TOP


▲TOP
縦スクロール
カメが上から下へ大きさを変えながら動き、電車が動いているに見えます。
縦にスクロール.mwx   circus.mid

「発車」をクリックすると、音楽が始まり、景色が放射状に動いて、電車が前に進むように見えます。
   
手順は 発車
始める「circus みんなとまる」
それぞれをやる「i 「かめ1 かめ2 かめ3 かめ4 かめ5」」
「かめは :i 向きは どれか「130 230」 位置は 「0 200」
  大きさは 5 前へ 50 * 最後 :i 前へ出す」
かめ6、 位置は「0 -15」
無限に「前へ出す 向きは 乱数 360 前へ 3 後ろへ 3」
カメは「かめ1 かめ2 かめ3 かめ4 かめ5」
無限に「前へ 大きさ / 30 大きさは (250 - 縦の位置) / 5」
終わり

手順は リセット
大きさは 5 形は 1 位置は 「0 200」
終わり 

遠くは、小さくて、近づいてくると大きく見せることで、電車が進んでいるように見せています。
カメの景色は、遠くのときは最小の5で、近づきながら大きくしています。
それぞれをやる」の中で、「前へ出す」を使って、カメの形が重なるとき手前の物が表に表示されるようにしています。

電車の窓枠をカメの形で作って、電車のゆれを出しています。

  
景色の動きを変化させて、スピードを変えられる機能をつけ足してもおもしろいでしょう。
▲TOP


▲TOP
円を描く
カメのある場所を中心にして円を描きます。
円を描く.mwx      

「円 100 15」のボタンを左クリックすると半径100ドットで色番号15の赤い円が描かれます。
   
手順は 円 :半径 :カラー
仮の名前は 「元位置 位置」
横の位置は 横の位置 - :半径
ペンを下ろす
仮の名前は 「元色 色」
色は :カラー
くりかえす 360
「前へ (:半径 * 2 * 円周率) / 360 右へ 1」
ペンを上げる
色は :元色
位置は :元位置
終わり

LOGO言語には「円」という命令がないので、「円」という命令を手順で作ります。
新しく作った命令は、以下の仕様になります。
  
  円 半径の数 色の番号
このようにして作られた手順を集めておけば、新しいプログラムを作るとに役立ちます。
ただし、すでにLOGO言語で決められている命令語は、予約語と呼ばれ、同じ名前の新しい手順をつくることはできません。

カメが進みながら、右へ右へと曲がっていけば円になります。1周で360度ですから、右へ曲がった合計の角度は360度になります。
カメが円を1周するのに進んだ距離は、円周になります。円周は「 直径×円周率 」ですので、カメが1回で進む距離は、「 (直径×円周率)÷360 」になります。プログラミングでは、「(:半径 * 2 * 円周率) / 360」の部分になります。

  
LOGO言語では、予約語以外の新しい命令語を手順で作ることができます。日本語以外の命令語を作ったり、方言の命令語を作ったりできそうでね。
▲TOP


▲TOP
和模様を描く
日本で、古くから使われている模様をLOGO言語で作ります。
和模様.mwx 

「麻の葉を描く」を左クリックするとカメが動きながら模様を描きます。
 
 
手順は 麻の葉を描く
絵を消す
名前は "個数 横の数 * 縦の数
名前は "Y 200
名前は "ずれ 0
くりかえす 縦の数

もしどちらかを :ずれ > 0 「名前は "ずれ 0」「名前は "ずれ 100 * cos 30」
名前は "X -480 + :ずれ
名前は "Y :Y - 50
くりかえす 横の数

かめ1、
名前は "X :X + 200 * cos 30 かめ1、 ペンを上げる 位置は リスト :X :Y 向きは 0
麻の葉 待つ 遅く描く / :個数


終わり

手順は 麻の葉
名前は "回転角度 0
くりかえす 6

かめ1、 向きは :回転角度
名前は "ふりだし 位置
かめ2、 ペンを上げる 位置は 頼む "かめ1 「位置」 向きは 頼む "かめ1 「向き」
かめ3、 ペンを上げる 位置は 頼む "かめ1 「位置」 向きは 頼む "かめ1 「向き」
葉 50 30
かめ1、 ペンを上げる 位置は :ふりだし
かめ2、 ペンを上げる 位置は 頼む "かめ1 「位置」 向きは 頼む "かめ1 「向き」
かめ3、 ペンを上げる 位置は 頼む "かめ1 「位置」 向きは 頼む "かめ1 「向き」
名前は "回転角度 :回転角度 + 60

終わり

手順は 葉 :茎 :広がり
かめ1、 ペンのサイズは 3 ペンを下ろす 前へ :茎 前へ :茎 待つ 10 / :個数
かめ2、 ペンのサイズは 3 ペンを下ろす 左へ :広がり 前へ :茎 / cos :広がり 右へ :広がり * 2 前へ :茎 / cos :広がり 待つ 遅く描く / :個数
かめ3、 ペンのサイズは 3 ペンを下ろす 右へ :広がり 前へ :茎 / cos :広がり 左へ :広がり * 2 前へ :茎 / cos :広がり 待つ 遅く描く / :個数
終わり

 
日本古来からの模様には、簡単な形をくりかえすことで模様にしているものがあります。
回転しながらのくりかえしなので、以外にも難しく、3つのカメを使っています。どのカメを動かすかを「頼む」で指定しています。

  
くりかしが図形になっておもしろいですね。
身の回りにもくりかえしの図形がないか、さがしてみるとおもしろいです。
▲TOP


▲TOP
スタンプで模様を描く
スタンプで同じ形をつなげて模様にします。
スタンプで模様を描く.mwx  

   
手順は スタンプで模様を作る
向きは 0 大きさチェック
くりかえす 4

くりかえす 8 「転写」
横の位置は -340
縦の位置は 縦の位置 - :縦 - 20

位置は 「-340 218」
終わり

手順は 転写
もし 形 = 2 「スタンプ 向きは 90 前へ :横 形は 4 止まる」
もし 形 = 4 「スタンプ 向きは 90 前へ :横 形は 2 止まる」
スタンプ 向きは 90 前へ :横
終わり

手順は 模様の変更
もし 形 = 1 「名前は "形番号 2」
もし 形 = 2 「名前は "形番号 4」
もし 形 = 4 「名前は "形番号 3」
もし 形 = 3 「名前は "形番号 1」
形は :形番号 大きさチェック
終わり

手順は 大きさチェック
もし 形 = 1 「名前は "横 68 名前は "縦 62」
もし 形 = 2 「名前は "横 84 名前は "縦 89」
もし 形 = 4 「名前は "横 84 名前は "縦 89」
もし 形 = 3 「名前は "横 98 名前は "縦 93」
終わり

手順は 初期化
絵だけ消す
位置は 「-340 218」
終わり

 
複雑な図形は、スタンプにしてつなげてしまうと簡単です。
図形を替えると、図形の縦横の大きさが変わるので、スタンプの位置を調節してから、「横の位置は」と「縦の位置は」で指定した位置にスタンプしています。

  
複雑な図形のくりかえしは、スタンプのくりかえしが簡単です。
▲TOP


▲TOP
ボタンで回転しながら落とす
図形を回転しながら落として、すきまなく積み重ねるゲームです。
ボタンで回転しながら落とす.mwx  walk.mid  cheers5.wav  buu.wav

開始ボタンを左クリックすると、図形が落下し始めます。回転ボタンで回転させて、すきまなく積みあがるようにします。
きれいに積みあがると歓声が上がって合格です。
   
手順は 開始
かめ6、 クリックオン
荷物は -300
かめ1、 縦の位置は -190 クリックオン
カメは「かめ3 かめ4 かめ5 かめ6」 隠れる
設定する ”ボタン1 ”めいれい 「始める 「2個目の図形を落とす」」
名前は ”落下中のカメ ”かめ2
かめ2、 形は 1 + 乱数 4 クリックオン
終わり

手順は 2個目の図形を落とす
かめ2、  
もし 縦の位置 < 90 「 
かめ3、 形は 1 + 乱数 4 出てくる クリックオン
設定する "ボタン1 "めいれい 「始める 「3個目の図形を落とす」」
名前は "落下中のカメ "かめ3」
終わり

手順は 3個目の図形を落とす
かめ3、
もし 縦の位置 < 90 「 
かめ4、 形は 1 + 乱数 4 出てくる クリックオン
設定する "ボタン1 "めいれい 「始める 「4個目の図形を落とす」」
名前は "落下中のカメ "かめ4」
終わり

手順は 4個目の図形を落とす
かめ4、
もし 縦の位置 < 90 「 
かめ5、 形は 1 + 乱数 4 出てくる クリックオン
設定する "ボタン1 "めいれい 「始める 「開始」」
名前は "落下中のカメ "かめ5」
終わり

手順は 回転
カメは :落下中のカメ
もし 形 > 3 「形は 1」
形は 形 + 1
終わり

手順は 最初から
全部「クリックオフ」
全部「位置は 「0 200」 形は 1 出てくる」
設定する "ボタン1 "めいれい 「始める 「開始」」
終わり

図形の回転は、カメの形を切り替えることでできます。図形が積まれたときに止めるには、カメの中の追加設定の衝突を使っています。
手順の中で「無限に」を使うと、ボタンがクリックされた状態でへこんだままになり、二度目のクリックで命令が実行できないので、カメの中の無限にチェックを入れておいて、カメを「クリックオン」でカメの中の命令を使ってゆっくりと落下させています。
追加設定の衝突は、透明以外の図形が重なると衝突と判定されます。図形の透明以外の部分がぶつかると「クリックオフ」で図形が落ちるのを止めています。このちょっとした図形の部分と部分が重なったことを判定するというのは、図形を描いているすべてのドット部分の重なりを無限に調べているわけで、PCにかなりの負担をかけています。カメの中の追加設定から、タグエリアの手順を呼ぶことは、処理が重くなりすぎてできません。

全部のカメが落下し終わったかの判定は、かめ1 を無限に設定しておき、かめ6 をクリックオンすることで、かめ1 が無限にチェックしています。
ゲーム中に音楽を流すのは、「始める」を使うと、ボタンがクリック状態でへこんだままになってしまうので、かめ6 に音楽ファイル名を書いて、かめ6 をクリックオンすることで流しています。

  
マイクロワールドのLOGO言語では、図形の衝突判定を、図形のちょっとした部分の重なりでも判定できます。
▲TOP


▲TOP
カメにぶつかったら動作
カメが動き回り、いろいろなカメにぶつかったときの処理を行います。
カメにぶつかったら動作.mwx  eat2.wav  bigger.wav  angry.wav  ants.mid

開始ボタンをクリックすると、カメが動き回り、ケーキ、ハンバーガー、ゴングとぶつかったら、ぶつかった相手の名前と賞金を表示します。
   
<かめ1の追加設定>
  景品は ぶつかったかめ 頼む ぶつかったかめ [クリックオン]
手順は 開始
無限に「ants」
賞金は 0
カメは 「ケーキ ハンバーガー コング」 形は 1
かめ1、 無限に「クリックオン」
終わり

カメどうしの衝突の判定をしています。カメどうしの衝突では、カメの図形と図形が重なることを無限に判定していることなので、コンピュータへの負担が大きな処理です。追加設定で、任意のカメどうしの衝突判定となると、さらに負担の大きな処理になります。
追加設定の衝突命令を使って、「ぶつかったかめ」と書くと、どのカメとぶつかったかの名前が返ります。「ぶつかったかめ」が使えと便利ですが、追加設定の衝突命令は、カメの中のプログラムだけで動作させ、外の手順を呼んだりしないようにします。

追加設定にある任意のカメどうしの衝突命令のような機能は、他のプログラミングソフトでは、ほとんど見ることがありません。LOGO言語でもマイクロワールドEXの日本版だけにある機能です。一般的なプログラムでは、「もし」と「ぶつかったか」を使って、どのカメとどのカメがぶつかるかを1つ1つ指定して衝突判定します。 

  
「ぶつかったかめ」使うと、どのカメにぶつかったときでもぶつかった相手のカメがわかるので便利です。しかし、追加設定を書いたカメから、外の手順を呼ぶとフリーズするので、注意が必要です。
▲TOP


▲TOP
指定したカメにぶつかったら動作
的に矢が当たったら何かするというプログラムです。
指定したカメとぶつかったら動作.mwx


開始ボタンをクリックすると、風船が動き出し、ボタンが「発射」になります。発射ボタンをクリックすると矢が発射され、ボタンが「終了」になります。
   
手順は 開始
設定する ”ボタン1 ”めいれい 「始める 「発射」」
かめ2、 クリックオン
終わり

手順は 発射
設定する "ボタン1 "めいれい 「始める 「終了」」
かめ1、 クリックオン
終わり

手順は 衝突
かめ2、 形は 3 終了
終わり

手順は 終了
かめ1、 位置は「-290 -180」
設定する "ボタン1 "めいれい 「始める 「開始」」
みんなとまる
終わり
 

設定する」を使って「開始」と「終了」を1つのボタンで表示しています。
この作品では、風船と矢でカメが2匹しかいないので、カメの中の追加設定は使わず、「ぶつかったか」で判定しています。
ぶつかるカメの数が少ないときは、多少手順が長くなても、「どのカメと、どのカメの衝突の時に何をするか」がはっきりしていて、確実なプログラムの方法です。プログラムは、短い記述を考えることも大切ですが、わかりやすい記述にすることも大切です。

  
ぶつかったか」は、ぶつかるカメがわかっていて、数が少ないときの判定方法です。カメの中の追加設定の衝突命令より安全な方法で、フリーズすることがないようです。カメが動かないと判定できませんが、前へ 0 として、動く量を0にしても判定できます。
▲TOP


▲TOP
色の上に乗ったら動作
カメが色の上に乗ると、処理を行うプログラムです。
色の上に乗ったら動作.mwx


開始ボタンを左クリックするとカメが動き始め、色の上に乗ると得点します。
    

同じ動作をそれぞれのカメに「下の色」を使って判定することでできます。
赤色と青色で描いてから、色の上でに右クリックして、カメに色への命令を書きます。

プログラミングでは、同じ動作をいろいろな別の方法でできることが普通にあります。そのために、プログラムを作る人によって、プログラムの記述の量、わかりやすさなどが違い、プログラムの美しさが違ってきます。

  
タブエリアの手順に何も書かないプログラムです。こんなに少ないプログラミングになっていることにびっくりです。
▲TOP


▲TOP
位置で判定して動作する
カメがある高さまで移動すると変化するプログラムです。
位置で判定して動作する.mwx 


発射ボタンをクリックすると、気球が上がっていき、高さが変かすると、大きさが変化します。
   
手順は 発射
位置は「-230 -190」
向きは 30
無限に

前へ 10  形は 1 + (200 + 縦の位置) / 70 待つ 1
もし 縦の位置 > 200 「向きは 180 無限に「落下」」

終わり

手順は 落下
形は 8
前へ 0.1
もし 縦の位置 < -200 「みんなとまる」
終わり

 

気球は、上昇しながらふくらむので、大きさの違う気球をカメの形として作って使っています。




位置は」でカメの位置を指定しています。ページの中心が座標の中心になっていて「0 0」です。そこから上が+で下が-です。左が-で右が+です。
例えば、ページの上が200なら、ページの下は-200になります。
カメの縦の位置は、「縦の位置」でわかります。横の位置は、「横の位置」でわかります。LOGO言語は、普段の日本語に近い命令語が多いのが特長です。

プログラムの中で - にするときは、数字の前にスペースを入れずに半角の-を書きます。スペースが入ると減算になります。
小数を表すときは、すべて半角の数字と小数点を使います。

  
LOGO言語では、ページの中心が「0 0」です。
▲TOP


▲TOP
何かして再現
自動でLOGO言語の命令をいくつか実行し、後で実行した内容を再現するプログラムです。
何かして再現.mwx 


「何かしよう」のボタンを左クリックすると、「やること」の命令を10回実行します。
「やったことの再現」を左クリックすると、やったことを再現します。
 
手順は 何かしよう
やったことは ”
絵を消す 色は 9
ペンを下ろす やったこと、 書く ”ペンを下ろす
くりかえす 10

名前は ”実行すること 行のどれか "やること
やる  :実行すること やったこと、 書き入れる :実行すること
待つ 5 やったこと、 書く ”| 待つ 5|
」 
書く "ペンを上げる
終わり

手順は やったことの再現
絵を消す 色は 9 待つ 5
やる やったこと
終わり


どんな命令を実行するかを「やること」に書いておき、それらを「行のどれか」でランダムに10回実行します。
実行した内容は、「やったこと」に書きます。
再現するときは、「やったこと」に書かれた命令を「やる」で実行します。
 
LOGO言語の命令をテキストボックスに書きだし、書いたテキストボックスの命令を再現します。
▲TOP


▲TOP
だんだん速くなるロケット
本物のロケットの発射風景を見ていると、ロケットがゆっくりと発射して(実際はすでにかなり速いが、ロケット大きいので遅く見える)、だんだん速くなっていきます。
その様子を再現して、本物の動きのように見せます。
だんだん速くなるロケット.mwx 


発射ボタンをクリックすると、ロケットがだんだん速くなります。
 
手順は 発射
形は 1
無限に「エンジン音」
待つ 2 形は 2 待つ 2
加速 0
終わり

手順は 加速 :初期
もし 縦の位置 > 200 「縦の位置は -200 形は 1 みんなとまる」
形は 3 前へ :初期 待つ 0.1
形は 4 前へ :初期 待つ 0.1
加速 :初期 + 1
終わり

ロケットは、発射するとだんだん速くなります。このことを中学校では、「だんだん速くなる運動」と呼んでいますが、一般的には「等加速度直線運動」と言います。ここでは、「手順は 加速 :初期値」の :初期値 を「加速 :初期 + 1」で呼び出すごとに 1 ずつ速くしています。
画面の上までロケットが進んだら止めるために「縦の位置」でロケットの縦の位置を知り、「縦の位置は」で元の位置にもどしています。

数学や物理学では、等加速度直線運動は、時間とともに変わる数量として数学式で扱うのですが、LOGO言語のプログラミングでは、簡単に手順から、自分自身の手順をくりかえし呼び出すこと(再帰処理)で表現できます。

  
ロケットが自然な感じで発射されるように見せるには、だんだん速くなる動きにします。
▲TOP


▲TOP
ボール投げ
空気の抵抗を無視して、ボールが飛んで行く様子を描きます。 
ボール投げ.mwx 


発射ボタンをクリックすると、カメが投げられます。
 
手順は 発射
向きは 90 - 発射角度
ペンを下ろす
飛ぶ 1 0.001
ペンを上げる 位置は 「-450 -240」
終わり

手順は 飛ぶ :速さ :落下
前へ :速さ
縦の位置は 縦の位置 - :落下
もし 縦の位置 < -240 「とまる」
飛ぶ :速さ  :落下 + 0.0012
終わり

投げたあとのボールの速さは、変化させず、縦方向にだけ、地球の引力でだんだん速くなりながら落ちるようにしています。このようにして飛んだボールの軌跡を放物線と呼んでいます。だんだん速くするには、「手順は 飛ぶ :速さ :落下」を :落下 の量を 0.0012 ずつ増やすことで行っています。このときの小数は、半角の数字と半角の小数点で書きます。

どこまで、ボールが飛ぶかは、空気の抵抗がなければ、発射角度と発射の時の速さからわかります。空気の抵抗がなければ、45度で投げたときに一番遠くまで飛ぶことが分かります。

  
ボールが放物線を描いて飛んでいきます。
▲TOP


▲TOP
ボール投げ(空気抵抗あり)
空気の一部の抵抗を考えて、ボールの飛んで行く様子を描きます。 
ボール投げ(空気抵抗あり).mwx 


発射ボタンをクリックすると、カメが投げられます。カメは空気にじゃまされながら飛んで行きます。
 

手順は 発射
向きは 90 - 発射角度
ペンを下ろす
飛ぶ 1 0.001
ペンを上げる 位置は 「-350 -240」
終わり

手順は 飛ぶ :速さ :落下
前へ :速さ
縦の位置は 縦の位置 - :落下
もし 縦の位置 < -240 「とまる」
飛ぶ :速さ - (:速さ * :速さ) / 1500 :落下 + 0.001
終わり

  



空気の抵抗は、速いほど大きい傾向があるので、ここでは、投げたあとのボールの速さだけ、「(:速さ * :速さ) / 1500」で、空気の抵抗を受けて少しずつ遅くするようにしています。引力で落下する速さも空気抵抗の影響を受けるのですが、ここでは無視しました。

空気抵抗は、正確には、物体の形状や大きさ、速さに関係して一定ではなく変化します。小さい物体ほど、影響が大きいので、体の小さな昆虫は、どんなにがんばっても鳥ほど速く飛べません。水の中を泳ぐときの抵抗も同じようで、メダカは、クジラほど速くは泳げません。
陸上競技や水泳、スキーなどで、速さを競う競技では、体の大きな選手が有利になるも同様です。

ここでのプログラミングは、およそのプログラミングですが、空気抵抗の無いときには、45度で投げるのが一番飛びましたが、空気抵抗があると、40度ぐらいが一番飛ぶことが分かります。

空気抵抗は、速さに関係していますが一定の関係ではなく、ある速さで突然、空気の渦が大きくなって空気抵抗が大きくなります。野球やサッカー、バレーボールでの落ちるボールの仕組みです。

  
空気抵抗があるときは、45度より少ない角度で投げると遠くまで飛ぶようです。
▲TOP


▲TOP
鳥のフンの落下
空気の抵抗は無視して、空飛ぶ鳥がフンをしたとき、そのフンが落ちていく様子を描きます。
鳥のフンの落下.mwx 

「開始」ボタンをクリックすると、鳥が飛び始め、「開始」ボタンは、「投下」ボタンになります。「投下」ボタンをクリックすると、鳥がフンを落とし、「投下」ボタンは「終了」ボタンになります。
   
手順は 開始
設定する ”ボタン1 ”めいれい 「始める 「投下」」
糞、 ペンを上げる 絵だけ消す
加速度は 0
落下速度は 0
横の位置は 頼む "鳥 「横の位置 + 20」 
縦の位置は 頼む "鳥 「縦の位置 - 15」
鳥、 クリックオン
糞、 クリックオン
終わり

手順は 投下
糞、 ペンを下ろす
設定する "ボタン1 "めいれい 「始める 「終了」」
加速度は 0.001
落下速度は 0
終わり

手順は 着地
加速度は 0
落下速度は 0
終わり

手順は 終了
設定する "ボタン1 "めいれい 「始める 「開始」」
みんなとまる
終わり
 

鳥とフンがいっしょに動くときは、「頼む」で鳥の位置を知り、「横の位置」と「縦の位置」で調べた位置に「横の位置は」と「縦の位置は」でフンを移動しています。
もしも、空気の抵抗が無ければ、フンの水平方向の速さは、鳥の速さと同じで、最後まで一定です。
フンの落下する速さは、地球の引力で、だんだん速くなります。
この2つを同時に表現すると、放物線という曲線を描くことになります。

  
鳥のフンの落下で、放物線の説明をしています。
▲TOP


▲TOP
壁とラケットで反射
ボールが壁やラケットに当たると音を出して反射するプログラムです。 
壁とラケットで反射.mwx   openb.wav

開始ボタンをクリックすると、玉が動き出します。玉は壁や天井にぶつかると反射します。ラケットを動かして、玉をはね帰します。
 
 
手順は 開始
かめ1、 無限に「前へ 0.1 もし ぶつかったか ”かめ1 ”かめ2 「ラケットと反射」」
かめ2、 無限に「横の位置は ラケット」
終わり

手順は 天井と床
向きは 180 - 向き 音1
終わり

手順は 壁
向きは 360 - 向き 音1
終わり

手順は ラケットと反射
向きは 160 - 向き + 乱数 41 音1
終わり

手順は 音1
始める「openb」
終わり 

壁にボールがぶつかったときの判定は、色の中のカメの命令で行っています。ラケットはカメで作られているので、ラケットとボールがぶつかったときの判定は、「ぶつかったか」で行っています。
壁とぶつかったあとの反射の向きは、カメの向きと関係することは、すぐに気づくでしょう。そこで、「180 - 向き」か「360 - 向き」であることは、直感的に思いつくと思います。LOGO言語のプログラミングのいいところは、直感的な思いつきをすぐに試して、確かめられることです。
ノートに作図しながら考えると上の壁と下の壁の反射の式は同じになり、左横の壁と右横の壁の反射の式は同じになります。これは、真上が常に0度と考えているからですが、ぶつかる物体との相対的な角度を調べる命令を作ると、新しい記述方法が作れるでしょう。プログラミングでは、プログラムする人のアイデアで新しい算数・数学を作っていけるような楽しさがあります。 

  
壁との反射は、上下が同じ、左右が同じプログラムになります。
▲TOP


▲TOP
植物の回転
植物の角度を変えて撮影した写真を切り替えて表示して、植物を回転して見せるプログラムです。
植物の回転.mwx 

「ON」のボタンをクリックすると、回転レバーを左右に動かすことで、写真のセイタカアワダチソウが回転して見えます。
 
手順は ON
無限に「回転」
終わり

手順は 回転
形は ダイヤル
もし 反対 形 * 6 - 6 = 回転角度 「回転角度は 形 * 6 - 6」
終わり

手順は OFF
みんなとまる
終わり

回転レバーを動かすと、すぐに写真が回転するように回転レバーの数値を無限で調べています。
セイタカアワダチソウを6度ずつ60回、回転して写真を撮影した。これをレバーで切り替えて見せれば回転しているように見える。回転レバーは、スライダーで作っていますが、スライダーの数字と回転角度の数は合わないので、手順の中でスライダーの数字を6倍して、回転角度にしています。
回転角度をテキストボックスに無限にくりかえし表示すると、表示をくりかえしているのでチラチラとしてしまいます。そこで、「もし」と「反対」を使って、= が成り立たなくなったときに、表示するようにしています。

作品のボタンやスライダーを操作するときボタンやスライダーが動いてしまうことがあります。これを防ぐために、作品タブエリアで右クリックして、固定すると、動かなくなります。固定解除するときは、ここでもう一度右クリックして解除するか、固定されたボタンやスライダーの上で右クリックして解除します。
 


同じ方法で、野球やサッカーの動きの連続写真を使って、回転の作品を作るなど、応用の作品がたくさんできそうです。
▲TOP


▲TOP
動くゴキブリ
カメが向きを変えると、その向きの形になるように、ゴキブリが進む向きの形になってあしを動かして進みます。 
動くゴキブリ.mwx  ゴキブリ.mwa

開始ボタンを左クリックすると、ゴキブリが歩き回ります。
 
手順は 開始
前へ 40
変身
右へ どれか「-30 0 30」
終わり

手順は 変身
形は (向き / 30) + 1
待つ 1
形は 形 + 12
待つ 1
終わり

カメの向きには合わせて、図形を切り替えれば、カメが進む向きに合った図形になります。ここでは30度ずつ1枚目~12枚目の図形を作っています。さらに、その図形が歩いているように見えるように、1枚目~12枚目の図形を左右反転させた13枚目~25枚目の図形を作っておき、図1を表示したら、次に「形は 形 + 12」で図1より12番後の形に切り替えています。
 
回転する図形を作るときは、形の上をダブルクリックか右クリックして設定で形の編集を開いて、図形の周りを透明色にしてから、コピーして回転をくりかえして作ります。
 

ゴキブリのカメの中に手順を書いて、かめのエクスポートをすると、かめのインポートでゴキブリのカメを部品のように利用することができます。
ゴキブリ.mwa



身の回りの生き物の写真を使って、動き回る生き物を作ったらおもしろそうですね。
▲TOP


▲TOP
アイテムで攻撃(こうげき)
 怪獣(かいじゅう)が炎をはき、炎がゴリラにふれたことを判定します。
アイテムで攻撃.mwx   bear.wav

アイテムボタンを左クリックすると、怪獣(かいじゅう)がアイテムで攻撃(こうげき)します。アイテムの炎がゴリラにふれると、ゴリラはしゃがみます。
 
手順は アイテム
かめ1、
くりかえす 5 「形は 1 待つ 1 形は 3 待つ 1」
形は 4 前へ 0
もし ぶつかったか ”かめ1 ”かめ2 「無限に「攻撃」」
かめ1、 はじめる 「bear 形は 5 待つ 20 形は 1」
終わり

手順は 攻撃
かめ2、 形は 2 待つ 40 形は 1
これをとめる
終わり

アイテムの炎とゴリラがぶつかったかの判定は、カメとカメの「ぶつかったか」で判定しています。
カメの図形を変えて、炎がゴリラに重なっても、図形を変えるだけでは、カメが動いていないので「ぶつかったか」の判定ができません。そこで、図形を変えるときに「前へ 0」で動く量を0で動かして、判定しています。カメは前に進んでいませんが、「ぶつかったか」の判定ができます。
ゴリラは、攻撃(こうげき)を受けると、攻撃(こうげき)を受けたときの動きをさせるのですが、怪獣の動きを止めないように怪獣(かいじゅう)とは、独立した動き(並行処理)になるように「無限に」を使って、手順「攻撃」を呼んでいるのですが、手順「攻撃」1回で終わりたいので、「これをとめる」で無限の動作を終えています。
無限に起動した手順は、動作が終わったら止めなくてはいけないので、手順の中で「これをとめる」で止めています。

 
アイテムをいろいろ作ると、おもしろいですね。 
▲TOP


▲TOP
連続発射
ミサイルをボタンで連射します。
連続発射.mwx   decel.wav
発射ボタンで、ミサイルを連射します。UFOに命中すると得点が加算されます。
 
手順は 発射
号は 号 + 1
もし 号 > 5 「号は 1」
たのむ ワード ”かめ 号 「クリックオン」
終わり

手順は ミサイル
元は 位置 形は 2
始める「decel」
くりかえす 50 「待つ 0.1 前へ 10 もし ぶつかったか 今のカメ ”かめ6 「無限に「UFO」」」
位置は 元 形は 1
これをとめる
終わり

手順は UFO
たのむ ”かめ6 「形は 2 待つ 10 形は 1」
得点は 得点 + 1
もし 得点 > 10000 「得点は 0」
これをとめる
終わり  


ミサイル、UFOがそれぞれ独立して動くように「無限に」と、その無限を止めるために「これをとめる」を使っています。
発射の手順の中に無限があると、発射のボタンがへこんだままに、続けてクリックすることができなくなるので、発射の手順の中では、クリックオンを使っています。
ミサイルが飛んでいるときに、発射ボタンをクリックすると次のミサイルとなるように、「号」で表示された数字を「ワード」を使って”かめ につなげて ”かめ数字 の名前にして、その ”かめ数字 を「クリックオン」しています。発射されたミサイルは、手順の最初に「位置」で位置を「元」に記憶し、手順の最後で「位置は」で記憶して置いた位置に戻しています。

 
「無限」の処理は、コンピュータへの負担が大きいので、無限が重なってコンピュータが止まることがないように注意して使いましょう。 
▲TOP


▲TOP
ボタンで選択問題
ボタンのどれか1つを左クリックすると判定する、もっとも簡単なプログラムです。 
ボタンで選択問題.mwx  ボタンで選択問題2.mwx  seikai2.wav  buu.wav
発射ボタンで、ミサイルを連射します。UFOに命中すると得点が加算されます。

 
------------------選択ア------------------------
手順は ア
コメントは 「正解です。また、明日会いましょう。」
正解
終わり
-------------------選択イ-----------------------
手順は イ
コメントは 「午後の場面です。」
不正解
終わり
-------------------選択ウ-----------------------
手順は ウ
コメントは 「女の子は、去っていくところです。」
不正解
終わり
------------------------------------------------
手順は 正解
始める 「seikai2」
メッセージを出す "次に進みましょう。
作品を出す "ボタンで選択問題2
終わり
------------------------------------------------
手順は 不正解
始める 「buu」
終わり

これを一つのパターンとして、簡単に書き換えして、新しい問題が作れるように考えています。
ページを切り替えるよりも、「作品を出す」で新しい作品を読み込む方が作品の発展性があります。

---------選択ア---------
のように、手順から終わりの外側に書かれた行は、実行されないので、注釈文として利用できます。
 
テスト問題で、よくある選択問題です。
次の問題は、「作品を出す」で新しい作品で出します。
▲TOP


▲TOP
順序不同で選ぶ問題
アイでもイアでも正解になるというような問題です。 
順序不同で選ぶ問題.mwx  順序不同で選ぶ問題2.mwx  seikai2.wav  buu.wav
カレーライスに材料になる ア ウ エ を順序不同でクリックし、決定ボタンをクリックすると、正答となり、次の作品に進みます。
正解は、「正解」の中に、スペースを入れて ア ウ エ を区切って書き入れておきます。

 
「正解」に正解をスペースで区切って入れる
手順は ア
解答、 フォントのサイズは 24 書き入れる 文 "ア "
終わり

手順は イ
解答、 フォントのサイズは 24 書き入れる 文 "イ "
終わり

手順は ウ
解答、 フォントのサイズは 24 書き入れる 文 "ウ "
終わり

手順は エ
解答、 フォントのサイズは 24 書き入れる 文 "エ "
終わり

手順は オ
解答、 書き入れる 文 "オ "
終わり

手順は 取消
解答は "
終わり

手順は 決定
名前は "誤答数 0
;----テキストボックスでは行末のコードが入っている
もし 反対 空か 解答
「名前は "選択数 数 リストにしたもの 正解
過不足判定 リストにしたもの 解答
重なり判定 リストにしたもの 解答
正答判定 リストにしたもの 解答
もしどちらかを :誤答数 > 0 「不合格」「合格」」
終わり

手順は 過不足判定 :答
もし 反対 (数 :答) = :選択数 「名前は "誤答数 :誤答数 + 1」
終わり

手順は 重なり判定 :答
くりかえす :選択数
「もし あるか 最初 :答 最初以外 :答 「名前は "誤答数 :誤答数 + 1」
仮の名前は 「答 文 最初以外 :答 最初 :答」」
終わり

手順は 正答判定 :答
くりかえす :選択数
「もし 反対 あるか 最初 :答 正解 「名前は "誤答数 :誤答数 + 1」
仮の名前は 「答 文 最初以外 :答 最初 :答」」
終わり

手順は 合格
seikai2
メッセージを出す "正解です。次の問題に進みます。
作品を出す "順序不同で選ぶ問題2
終わり

手順は 不合格
解答は "
buu
終わり

手順は 正解の表示
もしどちらかを 設定 "正解 "みえるか 「設定する "正解 "みえるか "うそ」「設定する "正解 "みえるか "ほんとう」
終わり

アウエが順序不同で正解ということは、アウエ、アエウ、ウアエ、エウア、ウエア、エアウ が正解ということで、これを手順の中ですべてチェックしています。
LOGO言語では、文字をリストという考え方で、スペースや句点、カッコで区切って使うことができます。ここでは、正答例の「ア ウ エ」は、アとウとエの間にスペースを入れてあります。これを「リストにしたもの」で「ア」「イ」「ウ」という「リスト」にしてから判定に利用しています。
」を使うといくつかのリストを1つのリストにできます。

リスト処理は、便利ですが、ちょっと長い手順になってしまったので、手順を書き換えずにページの文字や絵を修正するだけで、新しい問題の作品が作れるように手順を作りました。このように、一度作った手順を他の作品でも使いやすくしたものを集めておくと便利です。

 
テスト問題でも、ときどき見られる形式ですが、採点するのが大変です。LOGO言語の作品は、自動的に採点してくれるのですごいですね。
▲TOP


▲TOP
順序を答える問題
アイは正解だけど、イアは間違いという、順序を答える問題です。 
順序を答える問題.mwx  順序を答える問題2.mwx seikai2.wav  buu.wav
ガスバーナーの点火手順を正しく順にクリックすると、正解になる問題です。

 
手順は ア
解答、 フォントのサイズは 24 書き入れる "ア
終わり

手順は イ
解答、 フォントのサイズは 24 書き入れる "イ
終わり

手順は ウ
解答、 フォントのサイズは 24 書き入れる "ウ
終わり

手順は エ
解答、 フォントのサイズは 24 書き入れる "エ
終わり

手順は オ
解答、 フォントのサイズは 24 書き入れる "オ
終わり

手順は 取消
解答は "
終わり

手順は 決定
もしどちらかを 全く同じか 解答 正解 「合格」「不合格」
終わり

手順は 合格
seikai2
メッセージを出す "正解です。次の問題に進みます。
作品を出す "順序を答える問題2
終わり

手順は 不合格
解答は "
buu
終わり

手順は 正解の表示
もしどちらかを 設定 "正解 "みえるか 「設定する "正解 "みえるか "うそ」「設定する "正解 "みえるか "ほんとう」
終わり

順序正しくの問題では、正答は、1つしかないので、「まったく同じか」で判定するだけですみます。

 
テスト問題でも、ときどき見られる形式ですが、採点するのが大変です。
LOGO言語での問題なら、採点も自動ですし、写真を順番に選択する問題にしてもいいですね。
▲TOP


▲TOP
写真の場所で答える問題
写真のクリックした場所で判定する問題です。 
写真の場所で答える問題.mwx  写真の場所で答える問題2.mwx  seikai2.wav  buu.wav
写真の心臓の上を左クリックすると正解になる問題です。
 
手順は ホットポイント
かめ2、 
位置は マウスの位置
もし 下の色 = 105 「合格」
buu
終わり

手順は 合格
seikai2
メッセージを出す "正解です。次の問題に進みましょう。
作品を出す "写真の場所で答える問題2
終わり

写真の上をマウスでクリックすると、クリックした場所に応じて、メッセージが出るというのは、クリックした位置の座標で調べる方法があります。しかし、LOGO言語では、正解の場所の色で判定すると簡単です。
マウスの位置」でマウスカーソルの位置を知り、その位置に、「位置は」で かめ2 を移動し かめ2の下の色を「下の色」を使って調べて正答の色かどうかで判定します。

正解の色が見えてしまっては、問題にならないので、かめ1 の形を正解の色のない写真にして、その写真で隠された裏の背景に正解の青(105番)を塗っています。

背景の正解の写真は、かめ1 をスタンプして、心臓のところだけを青(105番)でペイントしただけなので、簡単に作れます。




 
ここでは、カエルの写真に青色の105番が使われていなので、簡単に心臓を105番の青色で塗っているだけですが、写真にいろいろな色があるときは、じゃまな部分を消しておく必要があります。
▲TOP


▲TOP
マウスで移動して答える問題
記号や図形をマウスで動かして、正しい位置に置いて答える問題です。 
マウスで移動して答える.mwx  マウスで移動して答える2.mwx  seikai2.wav  buu.wav
写真の心臓の上を左クリックすると正解になる問題です。

 
手順は 正解位置の記憶
全部「よこは 横の位置 たては 縦の位置」
終わり

手順は 決定
!数は 0
全部「もし (絶対値 (よこ - 横の位置)) > 10
 「!数は !数 + 1」 
もし (絶対値 (たて - 縦の位置)) > 10
 「!数は !数 + 1」」
もしどちらかを !数 > 0 「不合格」「合格」
終わり

手順は 不合格
buu
終わり

手順は 合格
始める 「seikai2」
メッセージを出す ”正解です。次に進みましょう。
作品を出す ”マウスで移動して答える2
終わり


カメの中の名前」で作った変数の値は、作品を保存すると、作品の中に保存されます。そこで、「カメの中の名前」で作った「よこ」「たて」に正解とする座標位置を記憶しています。写真を移動して置いたとき、「横の位置」「縦の位置」で位置を調べ、ずれが正解と10ドット以内だと合格にしています。

 
写真の移動でなくて、文字を画像にすれば、文字を移動して答える問題になります。
▲TOP


▲TOP
マークを移動してスタンプして答える問題
テレビのお天気番組のように、天気の記号を地図の上にスタンプします。
さらに、スタンプした位置によって、解説を出したり、新しいページにジャンプしたりするプログラムです。
マークを移動しスタンプして答える.mwx   寒風山.mwx  

お天気マークを左クリックすると、スタンプマークがマウスといっしょに動くようになる。白地図の上で、クリックするとお天気マークがスタンプされて、解説が表示されます。
東北地方でスタンプすると、「天気が良いので寒風山へ行こう」のメッセージが出て、作品「寒風山」を開きます。
 
 
手順は 押印
もしどちらかを 形 = 1
「形は 2
名前は "元位置 位置
名前は "子カメ 今のカメ
親カメ、 クリックオン

「形は 1
スタンプ
たのむ "親カメ 「クリックオフ」
位置は :元位置
分岐 今のカメ ページ2の色 マウスの位置

終わり

手順は マウスの取得
たのむ :子カメ 「位置は マウスの位置」
終わり

手順は ページ2の色 :座標
たのむ "裏のカメ 「位置は :座標 名前は "情報 下の色」
表示 :情報
終わり

手順は 分岐 :天気 :色情報
もし :色情報 = 35 「解説は (ワード "北海道は :天気 "ですね)」
もし :色情報 = 45 「解説は (ワード "東北は :天気 "ですね)  もし :天気 = "晴れ 「メッセージを出す "天気が良いので寒風山へ行こう 作品を出す "寒風山」」
もし :色情報 = 85 「解説は (ワード "北陸は :天気 "ですね)」
もし :色情報 = 65 「解説は (ワード "関東は :天気 "ですね)」
もし :色情報 = 95 「解説は (ワード "近畿は :天気 "ですね)」
もし :色情報 = 105 「解説は (ワード "関西は :天気 "ですね)」
もし :色情報 = 125 「解説は (ワード "中国地方は :天気 "ですね)」
もし :色情報 = 15 「解説は (ワード "四国は :天気 "ですね)」
もし :色情報 = 134 「解説は (ワード "九州は :天気 "ですね)」
終わり 

ボタンをクリックしたら、無限にカメの位置をマウスカーソルの位置にすれば、マウスといっしょにカメが動くようになりますが、ボタンが押されたままになり、再度ボタンをクリックすると、プログラムが止まってしまい二度目にボタンをクリックするという処理ができなくなってしまいます。そこで、「親カメ」という名前のカメを作り、親カメをクリックで無限に動作するようにして、ボタンが押されたままにならないようにしています。
マークをスタンプした場所を判定するには、ページ2を作って、ページ2にページ1で使われていない名前のカメ「裏のカメ」を作って使います。
裏のカメの下の色を聞くと、ページ2の色を答えるので、ページ2に白地図に色を塗った絵をスタンプしておき、ページ2の色に応じて、手順「分岐」の「もし」でスタンプした場所に応じて、メッセージを出すなどの処理をしています。ここで、東北地方で「晴れ」をスタンプすると、「作品を出す」で「寒風山」の作品を開くようにしています。

改造しやすいように、書き換えする場所の手順を作っていあります。
手順は 分岐 :天気 :色情報
 もし ・・・
 もし ・・・
おわり
の中身を書き換えることで、いろいろな作品に応用できるでしょう。

  
机の上に文房具を並べるとか、ひな人形をひな壇に並べるとか、料理をさらに並べるとか・・・、応用がいろいろありそうです。
▲TOP


▲TOP
1文字ずつ答える英単語クイズ
音楽が終わるまでに、出題された英単語をキーボードで入力します。1文字タイプするごとに判定して正しくタイプされると PIPON が鳴り、間違えてタイプすると angry の音の間タイプできなくなります。 
1文字ずつ英単語クイズ.mwx  PIPON.wav  angry.wav


日本語モードを解除して、英数半角モードにしてから始めます。
スタートボタンをクリックすると日本語と英単語が表示されます。英単語のアルファベットを1文字ずつ、キーボードで答えます。
   
手順は 開始
得点は 0
もし 反対 終わったか「チェック」「日本語は ” 英語は ” みんなとまる」
次の問題
無限に 「チェック」
終わり

手順は 次の問題
タイマーのリセット
仮の名前は 「単語文 リストにしたもの 行のどれか "単語帳」
日本語は 最初 :単語文 英語は 最初以外 :単語文
終わり

手順は チェック
仮の名前は 「キー 受けた字」
もし 反対 空か :キー

もしどちらかを (最初 英語) = :キー 
「音 英語は 最初以外 英語 もし 空か 英語 「次の問題」」「angry」

終わり

手順は 音
くりかえす 1 「はじめる 「PIPON」」
得点は 得点 + 1
終わり

英単語を高速に1文字ずつタイプして、タイプするたびに音が出るようにするために、無限の使い方をいろいろ試して、1文字ずつ入力するために「受けた字」を使い、音の手順で「くりかえす 1」を使って、「無限・・・・これをとめる」としました。
1つの目的のプログラムを何種類も作り、実行速度を比べて、最善のプログラムを見つけることは、よくあることです。

正解のプログラミングが1つあるわけではなくて、プログラミングする人がいろいろ試しながらプログラムを作ります。だから、プログラミングはおもしろいのでしょう。

  
小学校で出てくる英単語を単語帳に入れました。単語帳には、スペースで日本語と英単語を区切って「日本語 スペース 英単語」と書き込みます。
▲TOP


▲TOP
文字で答える問題
回答らんに文字をキーボードで入力して答える問題です。 
1文字ずつ英単語クイズ.mwx  seikai2.wav  buu.wav


写真の生物の名前を「アメリカザリガニ」「アメリカ ザリガニ」「ザリガニ」のいずれかをキーボードで入力して答えると正解になります。
 
 
手順は 決定
名前は "正答数 0
名前は "正解例数 数 リストにしたもの 正解
正答判定 リストにしたもの 正解
もしどちらかを :正答数 > 0 「合格」「不合格」
終わり

手順は 正答判定 :答
くりかえす :正解例数
「もし 全く同じか 解答 最初 :答 「名前は "正答数 :正答数 + 1」
仮の名前は 「答 文 最初以外 :答 最初 :答」」
終わり

手順は 不合格
buu
フォントのサイズは 24 解答は ”
終わり

手順は 合格
始める 「seikai2」
メッセージを出す "正解です。次に進みましょう。
作品を出す "文字で答える問題2
終わり

手順は 正解の表示
もしどちらかを 設定 "正解 "みえるか 「設定する "正解 "みえるか "うそ」「設定する "正解 "みえるか "ほんとう」
終わり


正答の範囲が広い場合、答えた文字が正解がどうかの判定が大変です。
「アメリカザリガニ」ではなくて、「ザリガニ」も正解として判定しています。LOGO言語では、文字の間にスペースが入ると、スペースで区切られてしまうので、工夫が必要です。
正答判定をするには、スペースで区切られた正答例を「リストにしたもので」でリストに分けて「最初」で最初のリストから、順に判定しています
アルファベットで答え問題では、大文字と小文字の問題もあります。ここでは「全く同じ」を使っているので、大文字と小文字を区別しています。例えば「The」と「the」は、違うと判定になります。

  
判定が難しい、文字回答での判定プログラムです。
▲TOP


▲TOP
ダイアログで答える問題
お店の前で、ロボットがお客の案内をするように、ダイアログで会話するように出題する問題を決めるプログラムです。 
ダイアログで答える問題.mwx 魚類の学習.mwx 動物の学習.mwx


「こんにちは」のボタンをクリックすると、「発問」にある文章がランダムに選ばれて、質問 でダイアログが開きます。
キーボードで書き込みをすると、書き込んだ内容を「コース」から見つけて、その学習コースを開きます。見つからないときは、その他の学習コースに進みます。何も入力しないでEnterキーを押すと終了です。
手順は こんにちは
名前は "今日の課題 ぎょうのどれか "発問
質問 :今日の課題
もしどちらかを 0 < 数 答え
「検索 答え」「メッセージを出す "何か入力してね」
終わり

手順は 検索 :言葉
コース、
選ばない 文頭へ
さがす (ワード "/ :言葉 "/)
 もしどちらかを 見つけたか
 「選ばない 選ぶ 行末へ 学習決定 :言葉 選んだもの みんなとまる」
 「その他の課題」
質問 :今日の課題
もしどちらかを 0 < 数 答え
「検索 答え」「メッセージを出す "またね!」
終わり

手順は その他の課題
コース、
選ばない 文頭へ
さがす "/その他/
 もしどちらかを 見つけたか
 「選ばない 選ぶ 行末へ 学習決定 :言葉 選んだもの みんなとまる」
 「メッセージを出す "何か入力しましょう。」
終わり

手順は 学習決定 :題 :次のページ 
メッセージを出す ワード :題 "| の学習に進みましょう。| 
作品を出す :次のページ
これをとめる
終わり


ダイアログを開いて、質問するのは、よくある方法ですが、入力した文字をどのように処理するかが大変です。
ここでは、「コース」の中で「さがす」で検索して、「見つけたか」で同じ文字があると、「選ぶ」で選び、「選んだもの」で選択したものの行の右側の文字のファイルを開くようにしています。
質問のダイアログの位置を指定するには、「設定する」を使って、次のようにします。
 設定する ”しつもん ”いち 「-100 -100」
メッセージのダイアログの位置を指定するには、「設定する」で、次のようにします。
 設定する ”メッセージ ”いち 「100 100」

  
いろいろな入力を「コース」の中から検索して、いくつかの学習課題にしぼる使い方になります。
▲TOP


▲TOP
プログラムを書いて車を動かす
LOGO言語のプログラムを「あなたのプログラム」の中に書いて実行して、ページにある車を動かします。 
プログラムを書いて車を動かす.mwx

テキストボックスにサンプルを見ながら、プログラムを書いて、「GO!」をクリックして、車を動かします。
手順は GO!
かめ1, 
クリックオン
やる あなたのプログラム
終わり

手順は サンプルの実行
かめ1, 
クリックオン
やる サンプル
クリックオフ
終わり


車が向きを変えると、図形も変えなくてはいけないので、かめ1 の中にカメの向きによって、図形を変えるプログラムを書いて、カメの無限にチェックを入れて、「クリックオン」で行っています。

  
実際の車を動かすのと同じプログラムを書いて試せます。
▲TOP


▲TOP
音楽が終わるまで歩く
音楽が終わるまで、画面の人が歩きます。
音楽が終わるまで歩く.mwx   ants.mid

開始ボタンを左クリックすると、音楽が始まり、音楽が終わるまで、黒い人間が歩きます。

手順は 開始
はじめる 「ants 止」
無限に 「歩く」
終わり

手順は 歩く
形は 1 前へ 20 待つ 2
形は 2 前へ 15 待つ 2
形は 3 前へ 20 待つ 2
終わり

手順は 止
形は 4 みんなとまる
終わり


音楽が終わった時に、形を4に替えて、終わったことがわかるようにしてから、「みんなとまる」で終えています。
  


動くアニメーションは、形パレットに動きの絵を入れて、形を切り替えて作ります。




音楽をタイマーとして使っているプログラムです。 
▲TOP


▲TOP
1分間で何周できるか
タイマーを使って、1分間の制限で、車をコントロールしてコースを何周できるかのプログラムです。 
1分間で何周できるか.mwx  shout.wav  jig.mid

開始ボタンをクリックしたら、「車のハンドル」をマウスで動かして車をコントロールします。1分間だけ動きます。1分間で何周できるでしょう。

手順は 開始
向きは 90 形は 10 位置は「-6 -184」 車のハンドルは 0
周回数は 0
タイマーのリセット
名前は "前秒 0
無限に「経過チェック 610」
無限に「jig」
無限に「車」
終わり

手順は 経過チェック :上限
もし :上限 < タイマー 「終了」
名前は "今秒 整数 (:上限 - タイマー) / 10
もし 反対 :前秒 = 秒数 「秒数は :今秒」
名前は "前秒 整数 (:上限 - タイマー) / 10
終わり

手順は 車
形は 1 + 向き / 10
前へ 2 待つ 0.1
右へ 車のハンドル / 10
終わり
手順は ゴール
周回数は 周回数 + 1
終わり

手順は 事故
後ろへ 50 shout
終わり

手順は 終了
みんなとまる
終わり



タイマーのイベント処理の命令語があると便利なのですが、LOGO言語にはないので、代わりになる手順「経過チェック」を作ります。
「経過チェック」は、「タイマー」で作品を開始してからの時間を無限に調べて指定した時間になると「終了」を実行します。
タイマーで1は、0.1秒です。プログラムの中で使われる小数は、半角の数字と半角の小数点で書くか、割り算で代えます。
経過秒数を「時間」に表示していますが、チラチラして見えなくならないように、秒数が変化したときだけ書き込んでいます。
ここでは、説明の為に車のアニメーションをタグエリアの手順に書いていますが、カメの中に書いて手順を見えにくくして、カメごとエクスポートして、他の作品で使えるようにすると、カメがプログラミングの部品のように使えます。
  


車のアニメーションは、形パレットに動きの絵を入れて、形を切り替えて作ります。




他でも使えそうなカメはエクスポートしておきましょう。
▲TOP


▲TOP
ゴールの着順判定
車と人とどっちが速いのか、赤い線でゴールしたときの着順判定をします。 
ゴールの着順判定.mwx  drum.wav  cheers5.wav 

スタートボタンをクリックすると、車と人間が走り始めます。ゴールすると、着順判定の結果が表示されます。

手順は スタート
設定する ”ボタン1 ”めいれい 「始める「停止」」
名前は "着順 0
ゴール判定は ”
全部「横の位置は -300」
早川君、 形は 1
待つ 10 drum
全部「クリックオン」
終わり

手順は ゴール
名前は "着順 :着順 + 1
書く (ワード :着順 "|着は | 今のカメ)
たのむ 今のカメ 「クリックオフ」
始める「cheers5」
終わり

手順は 停止
設定する "ボタン1 "めいれい 「始める「スタート」」
みんなとまる
終わり

カメがゴールの色の上に乗ったときにゴールしたとすればいいわけですが、色とぶつかったかの判定は、色を右クリックして、色の中の命令を使っても、カメの中の色との命令を使っても同じです。着順を表示する文字列は、「ワード」で1つの文字列につなげてから表示しています。

作品を始めるボタンを1つで「スタート」と「停止」に使うように、「設定する」で変更しています。



カメと色とのぶつかったかの判定は、カメの中心で判定しているので、車の前の部分が中心になるように図形を作っておきます。


  
だんだん速くなる運動が速いことがわかります。
▲TOP




































2018