トピック
ネタバレ
Villit nakahara1226

Villitくんが奮闘するトピック

RPGの息抜きで作っている作品の「復活の呪文」みたいなシステムに、現在大大大大苦戦中。 なので、淡々と苦戦する様子を公開し、たまーに助け船を求めて…って感じのトピックを建てました。 ひとまず自力で奮闘して、無理だと思った時点でココに救援要請します。はは。
10そうだね
プレイ済み
返信[1]
親投稿
Villit nakahara1226
ちなみに保存すべきデータは2進数で172桁になるものです。 これを、半濁音・小字・ゐ・ゑ・べ・ぼを除いたひらがな64パターンに圧縮展開する形。 …に、現在大苦戦中なのです。うぐぐぐぐ。
0そうだね
プレイ済み
返信[2]
親投稿
Villit nakahara1226
あ、172桁ってのはコレ完全に間違いですね。正しくは740桁です。 データA(1桁) データB(6桁) データC(2桁) データD(143桁) データE(588桁)の構成。
0そうだね
プレイ済み
返信[3]
親投稿
Villit nakahara1226
…データA,B,Cは10進数、データD,Eは2進数で使う変数です。 なので、圧縮は 【データA,B,Cを10進数から2進数に変換】 【変換したデータをデータD,Eと結合】 【結合したデータをひらがなに変換】 と、この3ステップになります…
0そうだね
プレイ済み
返信[4]
親投稿
Villit nakahara1226
…というのは理屈では分かるんですが、実際に作るとなるともう大苦戦。 絶賛大失敗中です。うむむ。
0そうだね
プレイ済み
返信[5]
親投稿
Villit nakahara1226
データからひらがなへの変換についてですが、 「あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶ」に、左から1~64を割り振っている形です。
0そうだね
プレイ済み
返信[6]
親投稿
Villit nakahara1226
(違う、0~63だ。)
2そうだね
プレイ済み
返信[7]
親投稿
moh6an moh6an
質問す。 二値演算、というか論理演算は大丈夫ですか?それから10進数は2の乗数に収まる数?
0そうだね
プレイ済み
返信[8]
親投稿
moh6an moh6an
例えばAの10進数が0-7までの数値しか想定してないのなら3桁で済むけど、9まであるなら4桁必要だったり
2そうだね
プレイ済み
返信[9]
親投稿
Villit nakahara1226
想定できる数値は、 データAは「0~1」、データBは「0~42」、データCは「0~3」なので、 恐らく大丈夫だと思います。
0そうだね
プレイ済み
返信[10]
親投稿
Villit nakahara1226
論理演算は…正直よくわかってません。行き当たりばったりでうまくいったやつを使ってます。ははは。
1そうだね
プレイ済み
返信[11]
親投稿
Villit nakahara1226
とりあえず今はひらがな化はカットして、二進数変換だけでテスト中です。
0そうだね
プレイ済み
返信[12]
親投稿
moh6an moh6an
なるほど、提示した桁数は2進変換した後の桁数だったのね。
0そうだね
プレイ済み
返信[13]
親投稿
otta777 otta777a
データからひらがなの変換にMID$関数、 ひらがなからデータへの変換にINSTR関数を使うと良いかと思います。
1そうだね
プレイ済み
返信[14]
親投稿
moh6an moh6an
論理演算は10進データの指定2値桁への移動と合成に使うかと、 ガンバです、( ゚∀゚)o彡°
0そうだね
プレイ済み
返信[15]
親投稿
Villit nakahara1226
ありがとうございます。頂いたコメントを参考にうまいことやってみます!
1そうだね
プレイ済み
返信[16]
親投稿
Villit nakahara1226
とりあえず現行のもの投げておきます。まだ作品として成立すらしてないですが…。 1週間くらい製作すればある程度遊べるようにはなりそうです。 【2XNEW3G4】
0そうだね
プレイ済み
返信[17]
親投稿
ふっかつのじゅもんシステムって Base64 とだいたい同じなので調べてみるといろいろと分かるかもです(あっちは変換元の長さが固定じゃないので"0"や"="を追加してたりするけど) 結合したデータを配列で持つか2進数文字列で持つか生データそのまま数値で計算してしまうかでやりかたいろいろ変わるので、 wikipediaのBase64の変換例みたいな短いデータをどんな感じで変換していくか実際の処理や変数名を紙に書いて行くとわかりやすいかもです。
1そうだね
プレイ済み
返信[18]
親投稿
ゲームデータ → 変換用データ → 変換結果 ゲームデータ ← 変換用データ ← 変換結果 で、ゲームデータはゲームで使ってる変数たち、変換用データは自分が作るやりかた次第、変換結果はふっかつのじゅもんで、 「→」と「←」の部分が別々の処理になって、その処理が気にする変数や変換内容の整頓のためにも紙に書くのオススメです。 ちなみに ふっかつのじゅもんの入力間違え用(変なデータにならない用)に変換データ部分に単純なチェックサムもいっしょに持つ必要もあったりします。
1そうだね
プレイ済み
返信[19]
親投稿
Villit nakahara1226
あぁ、不正データのチェック…これは盲点でした。 素数の積とかにすればいいんですかね…?ちょっとその辺調べてみます。
0そうだね
プレイ済み
返信[20]
親投稿
変換結果はどこかの通信を経由してくるので間違い(入力間違えや改造も含む)が紛れ込む可能性があって、変換結果を生成するときに追加して、変換結果を入力するときに判定して、ゲームデータに戻すときまでには不要になります(変換用データに必要かは処理しだい) データの つじつまがあってるかのチェックするのが目的であれば単純に ひらがな用の値(0~63)を全部足し算した結果を、ひらがな用の値の範囲で表現するだけでもいけます(足し算結果を 64 で mod してあげるか、63で and してあげればいい)※チェックサムの考え ちなみにQRコードでも使われている、データがまちがってても復元できるしくみは「誤り訂正」で、また別の考えなのでそれはそれで。 (誤り訂正用のデータを余計に持っているのでデータ量は増えます)
2そうだね
プレイ済み
返信[21]
親投稿
たとえば1バイト(8ビット)の数字から上位4ビットと下位4ビットを取り出すことはできますか? A=154 B=上位4ビット C=下位4ビット そして上位4ビットは単純に取り出すと下位4ビットが0の値なので、その上位4ビットを下位4ビットにずらす事が出来ますか? それも出来たら今度は1バイトに限らず2バイトとかから好きなビット位置の6ビットを取り出して0〜63の数字にしてみます。 その辺りが出来れば、作れるような気がしますが、よくわからなかったらビット演算子をいじって試しながら理解してみるといいと思います。
2そうだね
プレイ済み
返信[22]
親投稿
チェックサムの話題が出たので一言。 チェックサムだと「あいうえ」と「あういえ」の様に入れ替わっても発見できないので 1桁目には1を掛けて、2桁目には2を掛けて…の様に「何桁目」を掛けると、入れ替わりも発見できるように。 ガチ改ざんには弱いけど、わざとでない間違えの発見には結構使えます。
2そうだね
プレイ済み
返信[23]
親投稿
あきと SideBurnsM
興味があったので作ってみました。 公開キー【5XCXQ3GJ】 ファイル名「HUKKATU」 スレ主さんの仕様データを124+2文字に変換します。2文字はチェックサムです。 このソースではランダム作成→文字列化→復号化→照合を行っています。
1そうだね
プレイ済み
返信[24]
親投稿
Villit nakahara1226
とりあえず奮闘終了!トピック閉じさせていただきます〜
1そうだね
プレイ済み