お久しぶりです、 @tomato-0809です。 前回のプロジェクトが2024/08/04ですから、実に2か月ぶりですね(メインアカウントは驚異の10か月ぶり) さて、誰もが知るであろう、某イーロン・マスクが買収したコミュニティにて、面白いコンセプトのプログラミング言語を見かけましたので、Scratch向けにインタプリタを移植しました。 詳しくは下をご覧ください。 目次 第一章 / 説明!InmFu*kの概要 (概要) 第二章 / Link.2011反撃!犯されるUrban Müller (操作方法と詳細) 第三章 / 追記!そして公式サイトへ (追記) 第四章 / 超絶ロング!変態と化した仕様 (仕様) 第一章 / 説明!InmFu*kの概要 Brain***k の派生言語である「InmFu*k」を実行するための、高い互換性を持つScratch製インタプリタです。 InmFu*k は Link.2011氏によって考案された言語で、Brain***k の命令を淫夢語録に置き換えた言語です。 「Ook!」と似たコンセプトの言語ですが、命令が一対一で対応するという点が異なります。 テキストに淫夢語録を混ぜた結果、あまりにも中途半端な状態になりました。淫夢語録の翻訳に協力してくれる方はご連絡ください。 ボランティアとして協力してくださった方はこ↑こ↓に名前を掲載できます(任意) 第二章 / Link.2011反撃!犯されるUrban Müller このプロジェクトには、 - Link.2011氏によるJavaScript製インタプリタ (をScratchに移植したもの) - Tomato. (私) によるScratch製インタプリタ の2種類を実装してあります。 万一正しく動作しない・インタプリタ同士で動作が違う場合は、このプロジェクトのコメント欄など、私が反応できる範囲内で指摘してください。 矢印キーでカーソル [*] を移動し、Enter または スペースキーで決定です。数字が表示されてるときは数字キーでも操作できます。キーボードがない人はボタンで何とかしてください。 キー操作が反応しなくなった場合は再読み込みで直ります。Scratchが悪いです。 バージョン履歴 1.2.0 CR, LFの動作を追加 (予定) 1.1.0 1.0 初版 第三章 / 追記!そして公式サイトへ Link.2011氏公式のJavaScript製InmFu*kインタプリタは以下のURLからご利用いただけます。 このプロジェクトのインタプリタと動作が異なる場合は、お手数をおかけしますが、何らかの手段でご連絡ください(このプロジェクトのコメント欄でも構いません)。 https://野獣先輩.com/tools/yajuscript/ また、より高度なことをする場合はTurboWarpを利用することをお勧めします。 TurboWarpで実行すると以下のことができます: - テープ長を無制限に変更可能 (Scratchの場合、200000まで) - より高速な実行 https://TurboWarp.org/1198819859 第四章 / 超絶ロング!変態と化した仕様 - テープ長 (メモリの長さ) は 30000 (0-29999) - オーバーフロー、アンダーフローに対応 - このインタプリタではテープ長を自由に変更可能 - Scratchでは 200000 まで、TurboWarpでは無制限 - 各セルの値はデフォルトで 0-255 の整数を格納できる (JavaScriptのUint8Arrayと同じ挙動) (変更可能) - Brain***k の命令は使用不可、1対1で命令が対応する (半角全角の違いなどは未定義扱いとなる) (下部に記載してある例外を除いて、一般的なBrain***kと同じ挙動です) (Brain***k と InmFu*k の命令の挙動は同じ) (未定義の命令がある場合は無視します) >: ンアッー! <: イキスギィ! +: やりますねぇ! - : 王道を征く [ : まずうちさぁ ] : 屋上あんだけど . : で、出ますよ , : ファッ!? - ファッ!?の挙動は本家と異なります - 入力が確定されるまで待機します (本家と同じ) - 入力の最初の1文字目のみ使用されます (本家と同じ) - 入力がない場合は 0 が代入されます (本家と同じ) - ASCII外の文字 (日本語など) が代入された場合、0 が代入されます (本家では String.prototype.charCodeAt で得られた値を256で割ったあまり(Uint8Arrayによるもの) が代入されるため、「あ」が入力された時に 66(B) が代入される) - [ ] ("まずうちさぁ", "屋上あんだけど") の対応関係に問題がある場合(数が合わない)、JavaScript製インタプリタは実行前にエラーを出力し、Scratch製インタプリタの場合は実行中にエラーを出します (JavaScript製インタプリタの挙動は本家と同じ)