エナジージャンプ

BASIC入門編

ひろじいべーしっくch 第20回の動画の解説・補足。(0-020)

ここでは、サンプルプログラム「エナジージャンプ」の説明のほか、「使用している画像生成AIの説明」、「論理演算子のうち、論理積と論理和について」、「更新についての補足」の情報を紹介しています。

プログラム

今回のプログラムはこちら。(公開キー443E4X1、LOAD“N20_EJUMP”)

本プログラム、「エナジージャンプ」は、Aボタンを押すとエネルギーゲージが上昇と下降を繰り返し、その後Aボタンを離すとゲージが停止(決定)し、同時にそのゲージに相当するジャンプを開始、ジャンプの距離を競うゲームです。

このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。

RESTORE命令など、一部の内容を省略している箇所があります。

詳細を知りたい方は公式リファレンス等も参照してください。

[]については省略可能ですが、一部の命令(例えばDIM命令等)については最低一つの[]は必要です。

BEEP

BEEP [効果音番号[,[音程][,[音量][,[パンポット]]]]]

単純な警告音・効果音を再生する

以下、引数の説明です。

効果音番号

鳴らす音の種類

効果音番号        説明

0~156 プリセット音

224~255      ユーザ波形

256~383      BGM音源

・省略時は0。

音程

音程の値: -32768~32767 (100で半音)

・省略時は0。

音量

再生する音量: 0~127

・省略時は64。

パンポット

パンポット: 0(左)~64(中央)~127(右)

・省略時は64。

動作の説明

おおまかな動作の説明です。

ラベルMAINより上は画面の初期設定です。

ラベルMAINの中についての概略図は以下の通りです。

変数Eが250を超えたときにEを減少する様にしていますが、その際にもわずかな時間ですが250を超えるタイミングがもう一度あることから理論上の最高は253あたりです。

上記の@JUMPの拡大部分

実行画面(1.Aボタンを押している間)

実行画面(2.Aボタンを離し、ジャンプの開始中、タイトルや説明文も一緒になって下がり、雪が降るような演出がある。)

実行画面(3.着地。結果の画面)

補足(動画内での袋とじコーナー)

今回は、「画像生成AI」、「論理演算子のうち、論理積と論理和について」、「更新についての補足情報」の3つが動画内で紹介されています。

補足1.使用している画像生成AI

こちらで使用しているアプリは、iPhoneやiPad専用のアプリ「Anime AI Drawing」です。アプリの検索ワードでは「AIイラスト作成」と紹介されています。

販売元 YAO SHIBIN

本動画では、「インスピレーション」「創作」「AIチェンジ」「AI写真」という4つある作成方法のうち、「創作」の一部を紹介しています。

「創作」では、「説明文」「画像アップロード」「スタイル」「画像サイズ」「詳細設定」の5つに操作がわかれており、必須なのは「説明文」と「スタイル」と「画像サイズ」です。さらに最初から「スタイル」は左上のもの、「画像サイズ」は1:1に設定されているので、「説明文」にイメージした画像の説明を日本語で入力(例:元気な女の子 秋 黄昏)すれば、とりあえず画像生成が始まります。

CM視聴が始まり、視聴が完了すると生成終了です。説明文によっては失敗することがあります。もちろん常識の範囲内で公序良俗に反するような内容は使えませんが、詳細なことはわかりませんが、2024年3月の段階で、説明文を「明るい表情の女の子」としただけでも失敗するため、使用できる範囲は不明ということになります。

よりイメージを反映させたい場合には、「画像アップロード」を利用することを勧めます。本動画では「種の絵」と呼ばせていただいた落書きのような画像でもアップロードとともに、「説明文」との組み合わせで生成する方法です。

ただ、あくまでも考えるのはAIであり、道具として考えたとしてもこちらのイメージはなかなか伝わりにくいです。ある程度の妥協と修正用としての画像編集ソフトを組み合わせて使うことがお勧めです。自分が修正に利用している画像編集ソフトはパソコンに最初から備わっている「ペイント」とNCH Softwareの「Photo Pad」です。

「詳細設定」のうちの「キーワードの類似性」は1.0から30.0で、動画内で解説している通り、5.0から7.5あたりが、「種の絵」との関連性とのバランスが崩れないものと思われます。

補足2.ANDと&&、ORと||

プチコン4(Smile BASIC)の論理積と論理和の解説です。第4回(https://hirogreat.com/230/)でもビット演算子としての論理積(AND)の解説もしており、今回はその続きです。

まず、用語の解説です。論理積とはウィキペディアで「与えられた複数の命題のいずれもが例外なく真であることを示す論理演算である。」と説明されています。仮に2つの条件が提示され、それらを論理積として演算すると2つの条件を満たしたときに正しい(真である)こととする演算です。

PとQの論理積(PかつQ)の真の範囲

論理和については、仮に2つの条件が提示され、それらを論理和として演算するといずれか1つの条件を満たしたときに正しい(真である)こととする演算です。

PとQの論理和(PまたはQ)の真の範囲

さて、プチコン3ではビット演算子としての論理積、プチコン4では整数演算子としての論理積をANDを用いた演算子として扱っています。「ビット演算子」や「整数演算子」という言い回しの変化についてはここで述べることはできませんが、「ビットごとの論理積」にANDを使用する様に説明されています。同様に「ビットごとの論理和」にORを使用する様に説明されています。

公式リファレンスより(例の部分はカットしています。)

ANDの場合には、各ビットについてそれぞれ以下の様に計算します。真が1、偽が0です。

例えば、&B1001 AND &B1000(&Bは2進数の意味です) については

       1001
AND)   1000
---------------
       1000

という具合です。

ORの場合は

となります。

ところで、今回のサンプルプログラム「エナジージャンプ」の15行目は

となっています。そして条件式にANDを用いていますが

以下の通り、条件式にも0か1の整数が与えられています。

動画の20分27秒当たり

まず、例としてダイレクトモードでAに3を代入します。PRINT文でAに3が入っていることが確認できます。

動画の21分2秒当たり

Aに3が入っている時に、 ?A==3を実行すると、正しいということで1の値が表示されます。同様に正しくない条件式を表示すると偽、すなわち正しくないとして0が表示されます。

「整数 AND 整数」「整数OR 整数」として扱うべき演算子も、条件式としての値は0か1なので、とりあえず正しく動作します。

なお、これから初心者として学ぶ皆様には以下の様にリファレンスでも解説されている様に、論理積は&&、論理和については||に慣れていただきたいと思います。

例えばIF~THENで2つの条件式を演算する際に通常用いる際には公式リファレンス通り&&や||が勧められます。

例外としてビットごとに論理積を行っている場合もあります。今回のサンプルプログラムでのボタンの判定でビットごとの論理積を使用しています。

動画の22分1秒当たり

12行目と13行目のANDはそのまま用いて下さい。ここを&&に変更してしまうと、Aボタンに限らず全てのボタンで条件を満たす誤動作が生じます。詳細は第4回(https://hirogreat.com/230/)でビット演算子としての論理積(AND)を解説しています。その他のANDは&&と置き換えることができます。

最後にショートカットの説明です。

以下の様に多くの条件式が&&で用いた場合に

条件式1 && 条件式2 && 条件式3 && ・・・

条件式1が既に条件を満たさない場合には、全体として返値が0(偽)なので、条件式2以降の内部計算を終了して、全体として値を0とする、というショートカットです。多項の場合や条件式の内容が複雑で計算結果に時間がかかる場合には、無駄な計算を省くのに便利です。なお、条件式1が正しく1(真)、条件式2も1、条件式3も1・・・と続く場合にはショートカットせずに計算を続けるため、結果が確定しない内は真面目に計算し続けることから必ずしも全ての場合が時間節約になるとは限りません。

||についても同様です。

条件式1 || 条件式2 || 条件式3 || ・・・

条件式1が既に条件を満たしている場合には、全体として返値が1(真)なので、条件式2以降の内部計算を終了して、全体として値を1とする、というショートカットです。多項の場合や条件式の内容が複雑で計算結果に時間がかかる場合には、無駄な計算を省くのに便利です。なお、条件式1が満たされず0(偽)、条件式2も0、条件式3も0・・・と続く場合にはショートカットせずに計算を続けるため、結果が確定しない内は真面目に計算し続けることから必ずしも全て場合が時間節約になるとは限りません。

公式リファレンスブック(旧)13頁、公式リファレンスブック(2023年改訂版)19頁には全ての演算子の優先順位が記載されています。全ての演算子のうち、最も優先順位が高いのは()(カッコ)です。&&と||を混合して使用する際には、必ず()を使ってショートカットが発動しない様に優先すべき条件を確定させてください。3つ以上の条件式からショートカットが生じるものと考えられます。&&と||を混合して使用する際には()を使用して2つの条件式ごとにまとめれば理解しやすいと思います。

補足3.更新補足情報

1. 更新のチェックは「作品を見る」→「ローカル」の中で、チェックしたいプロジェクトをAボタン長押しし、「更新チェック」を選ぶことで行えます。

2. 更新の際に、更新内容と同じプロジェクト名の中に同じプログラム名のものがあれば上書きされます。同じプロジェクト名の中で別の名前のプログラムであれば上書きされずに残ります。動画内で実験をしています。

3.公開キーでもう一度公開キーを入力してダウンロードしても更新できます。

4.話は少し変わりますが、「作品を見る」→「公開作品」の中のYボタンで変更できる検索メニューが「最近の人気順」(略称「人気順」)である場合に、かなりの作品数が厳選から漏れることから、もし探している作品が見つからないばあいにはYボタンを押してほかの検索メニューに変更することを試してみてください。

まとめ

1.BEEPの設定を変えてみよう。音程、音量、パンポットも変更できます。

2.&&(かつ)と||(または)に慣れよう。

3.更新のチェックは「作品を見る」→「ローカル」の中で、チェックしたいプロジェクトをAボタン長押しし、「更新チェック」を選ぶことで行えます。

コメント

タイトルとURLをコピーしました