;============================================================================== ;【ソ フト 名】 ナンプレ一期一会 ;【バージョン】 1.02 ;【最終更新日】 2012/9/20 ;【作 成 者】 ZAP ;【動作 環境】 WindowsXP/Vista/7 ;【開発ソフト】 Hot Soup Processor 3.31 RC1 + HSP3Dish ;【ソフト種別】 フリーウェア ;【U R L】 http://www.kit.hi-ho.ne.jp/zapzap/ ;============================================================================== 【起動方法】 フォルダ内にある"NumPre151A_xxx.exe"を実行してください。 【アンインストール】 フォルダごと削除してください。 【ソフト説明】 ●操作方法 操作は画面内のボタン等をタッチ(クリック)することにより行います。 (キーボード等のデバイスは使用できません) ●内容 ナンプレ(数独)の問題が自動生成されるので、それを解いてください。 タイトル画面で「問題を解く」から適当なものを選ぶと、問題が自動生成されます。 (生成時間は数秒〜1分程度。ヒント数が少ないほど時間を要します。) ※一般的に、ヒント数が少ないほど問題は難しくなる傾向はありますが、ヒントの数と 難易度は必ずしも比例するものではありません。 ゲーム画面では、あらかじめ数字(オレンジ色)が表示されているセルをヒントに、 縦、横、同ブロック(3x3)内に同じ数字が入らないように数字を入力していきます。 矛盾なく全てのセルに数字が入れば正解となり、ダイアログが表示され、画面右下の時 計が止まり解答時間を確認することができます。 ●ボタン、アイコン説明 ○数字ボタン 画面上の空きセルにタッチしてから数字ボタンをタッチすると数字を入力できます。 ボタン、カーソルが黄色のときは通常入力モード、水色の時はメモ入力モードです。 通常モードで数字を入力したとき、縦、横、同ブロック(3x3)内に既に同じ数字が 入っている場合は警告ダイアログが表示されますので、矛盾しないよう修正してくださ い。 メモ入力モードのときは、数字を入力するとセルに小さく数字が表示されます。答え を絞りきれないときにメモとして使ってください。 通常モードで数字を入力すると、メモは自動的に消えます。 ○鉛筆/メモアイコン 数字ボタンの入力モードを切り替えます。 ○消しゴムアイコン 入力内容を全てクリアします。問題を最初から解きなおすときに使ってください。 ○ファイルアイコン 現在の問題と解答状態を保存します。 再開はタイトル画面の「前回の続き」から行えます。 ○家アイコン タイトル画面に戻ります。問題は破棄され、解答状態の保存はされません。 【戯れ言】 ナンプレの面白さを知り、ソフトを作ってみようと思ったものの、単に与えられた問 題を解くだけのプログラムだと何の面白みもない、ということで、遊ぶたびにそのとき だけしか遊べない問題(ここが一期一会の由来)を自動生成してくれるルーチンを作成 してみました(とはいえ、これも決して珍しいモノではないですが・・・)。 おおまかな自動生成の手順は、 @ヒントセル(最初から数字が入っているセル)の位置をランダムに決定 (ランダムでも見栄えが良くなるよう、左上1/4(20セル内)を作成し、時計回りに 90度ずつ回転対称にしたパターンとなっています。) Aヒントセルとは無関係に、9×9マスの数字の並び(解答パターン)を作成。 (リアルタイムに数字を埋めていくと時間がかかるので、あらかじめ作ったパターン (1024通り)をデータとして持っておき、そこからランダムでパターンを選択したう えで、さらにナンプレのルールに反しないようにシャッフルを行っている。) B上記解答パターンからヒントセルの部分だけを抜き出し、問題として成立するかどう かCPUに解かせる。 CCPUが問題を解けなければAへ戻る(さらにある程度トライしても解けなければ@か らやり直す)。 DCPUが問題を解ければ、CPUの解答結果を当初の解答パターンと照合し、一致すれば問 題として採用する(一致しないことはまずないと思われるが、念のため)。 といった流れになっています。 一番のキモとなっているのはCPUによる問題解答ルーチンで、総当たりで当てる的な 手法ではなく、ナンプレのロジックに沿ってセルの取りうる数字を論理的に絞り込んで いくという手法で解いています。 つまりプログラムがきちんと解ける問題なら人間にもちゃんと解ける問題になってい る訳ですが、このルーチン自体がバカだとすぐに手詰まりになってなかなか問題が解け ないわけでもあります。自分自身、このルーチンを制作する過程でナンプレの手筋や考 え方をいろいろ学ばせてもらえました。 今は単純な消去法と解を絞り込むための初級のセオリーを組み込んでいる程度ですが、 このルーチンをものすごく強力にすれば、問題生成時のトライ回数が減り、生成時間を 短縮できる可能性がある一方で、「理論上解けるが人間にはものすごく難しい問題」を 発生させてしまう懸念もあるので、「人間が遊ぶための問題を作る」というこのソフト の目的からすればこれくらいでいいのかもしれません。 無論、ロジックを変えずに処理を高速化できればそれに越したことはないので、余裕 があれば手を入れたいところではあります。 本ソフトはHSP3Dishにより作成しており、スマートフォンでの動作を念頭に置いたデ ザインとなっています。i-Phone実機での動作は環境がないため確認できませんが、And roid端末での動作は確認しています。 (9/16現在、Android実機で画面の自動拡大はできたのですが、自動拡大させると表示 位置を自動でセンタリングする関係なのか、タップを認識する座標がずれます。具体的 には表示位置よりやや下をタップしないと認識しません。) 【更新履歴】 2012.9.20 (ver 1.02) ・問題生成ルーチンを一部修正 (高速化を図って自動解読ルーチンを簡略化した箇所に一部誤りがあったので修正。 他の箇所で一部高速化も図っていますが、体感できるほどの違いはありません。) ・画面サイズ拡大版を同梱(内容は同じです)。 ・ソースファイルを同梱(拙いですが参考になれば)。 2012.9.16 (ver 1.01) ・プレイ状態をセーブ/ロードできるようにした。 ・クリア判定を自動化。それに伴うチェックボタンの廃止。 ・エラーなく9カ所に入力された数字ボタンをグレーアウトするようにした。 ・入力した数字が重複した際、横、縦、ブロック内のそれぞれで警告ダイアログが出て いたのを、一つのダイアログにまとめた。 ・問題作成ルーチンをほんのちょっと改良(高速化したかも?)。 ・操作性に支障のない範囲内で入力待ち時のウェイトを増やすと同時に、画面更新頻度 を1/2にした(スマートフォン移植時の節電につながるかも?) ・画面の大きさをプログラム側で拡縮できるようにした。 (実行ファイル作成後は変えられないので、あくまでソースレベルでの話) 2012.9.9 (ver 1.00) ・とりあえず完成。 【謝辞】 問題の自動生成ルーチンの作成にあたっては、以下のサイトを参考にさせて頂きました。 PUZZLE GeneRator JaPan http://puzzle.gr.jp/show タイトル画面の女の子(ナン子(仮):たった今命名)の絵は以下のサイトで提供されて いる素材を使用させて頂きました。 ゲーム製作用立ち絵素材2(女の子1名) http://www.vector.co.jp/soft/win95/game/se272911.html ゲーム中で使用しているアイコン等の画像素材については、以下のサイトで提供されてい るものを使用させて頂きました。 DesignLeaves http://designleaves.y-com.info/ 無料素材倶楽部 http://sozai.7gates.net/ タイトル文字、ボタンの作成にプンプンソフトさんの「簡単バナー」を使用させて頂きま した。 http://www.netwalker.ne.jp/~punpun/ ゲーム中で使用している効果音については、以下のサイトで提供されているものを使用さ せて頂きました。 ザ・マッチメイカァズ2nd http://osabisi.sakura.ne.jp/m2/ 【最後に】 私にナンプレというゲームの面白さを教えてくれた、 親愛なるT.Dさんにこのソフトを捧げます。