続けて雑 ⬥元作品 「テトリスエンジン(wip)」 https://scratch.mit.edu/projects/1296796313/ ⬥リプレイテスト(非圧縮) https://scratch.mit.edu/projects/1309903981/ ⬥効果音 「TETR.IO」by osk ーーーーーーーーーーーーーーーーーーーーー ⬥技術解説(?) 圧縮前のデータは 1.リプレイモード? 2.リプレイの長さ(フレーム) 3.セッションID(ネクスト生成などに使用) 4.圧縮データ? 5~.データ(非圧縮は8bitの2進数がリプレイの長さ分並んで、圧縮データなら5番目にすべてのデータが文字列で凝縮される) 5番目以降のデータを圧縮するために256文字の任意の文字列(リスト)を用意します たとえば、 ・0~9 ・アルファベット ・キーボードで入力できる大体の記号 ・Unicode順の大体のひらがなカタカナ ・アイウエオン(枠埋め) このような文字を256文字になるまで用意します ただし、同じ文字を2文字以上含んではいけません(圧縮ができなくなるため) 現状使用可能な全てのキー入力は8bitの2進数で表せるため、さっき用意した文字列を使って、1つのフレームの入力データを1文字にすることができます 例えば、 「00001000(左回転)」「10000000(左移動)」「10000000」「10000000」「00010000(ハードドロップ)」 これを 「8みみみG」 こう。(雑) ちなみに展開する際もこれと逆のことをすればできます(丸投げ) 余談: セッションIDはネクストをわざわざリストに格納してデータを増やしたくないからあります データを削減できた代わりにプログラムとブロック数が増えましたがね...