Numberplace

Numberplace(数独)ゲームプログラムです。
下記のリンクからC#/C# Game Program にプログラムの作成方法を掲載しています。
前田稔の超初心者のプログラム入門
- 納得出来ない所もあるのですが、一応動くようになったのでダウンロードから提供します。
zip で圧縮されたファイルをダウンロードして解凍して下さい。
Numberplace のフォルダーを作成して、全てのファイルを格納して下さい。
このファイルと Number.exe と数枚の画像ファイルと数枚の *.num データが格納されています。
データファイルは レッツ!ナンプレ に掲載されていたものです。
- ナンプレ(数独)は、9×9の81マスのプレートがあり、プレートは更に3×3の9マスの小プレートに分かれています。
全ての縦・横・小プレートに1~9が一つずつ入るように、数字を入力するゲームです。
ネットで検索すれば沢山ヒットするので、ゲームの詳細はそちらを参照して下さい。
- Number.exe をダブルクリックするとゲームが始まります。
起動すると初心者レベルの盤面が表示されます。
画面下部の1~9の数字を選択して、盤面をクリックすると数字が置かれます。
数字が置かれているときにクリックすると削除されます。
初心者レベルの問題を解いてみて下さい。
- メニューの操作です。
File メニュー
- Save
現在プレイ中の盤面(数字とマスの色)を保存します。
出題図の数字はマスの色が白(0)になっています。
- Load
Numberplace のデータファイル(*.num)をロードします。
データファイルは9行の Text 形式でメモ帳などで簡単に作成出来ます。
SaveAll で保存したファイルを入力して、ヒントが表示されないときは ColorOFF を選択して下さい。
- SaveAll
現在プレイ中の盤面をヒントを含めて保存します。
- Exit
プログラムを終了します。
NewGame メニュー
- Level-1
Level_1 で出題を作成します。
Level で生成した問題は、解答が複数存在することがあります。
- Level-2
Level_2 で出題 を作成します。
- Level-3
Level_3 で出題を作成します。
- Reset
出題の状態に戻します。
- Complete
完成チェックをします。
Tool メニュー
- ErrCheck
現在操作中の盤面のエラーをチェックします。
同時にヒントや色をリセットして見やすくします。
- Hint
現在の局面でマスに入る数字の候補を表示します。
- ColorON
カラーモードに設定します。
盤面を左クリックするとマスの色が、右クリックするとヒントの色が変わります。
このモードはプレイヤーがマスや数字をマークしたい時に使用して下さい。
- ColorOFF
カラーモードを終了します。
盤面を左クリックするとマスの数字が、右クリックするとヒントの数字が設定(削除)されます。
- Anser
ゲームの正解を表示します。
Anser メニューが利くのは Level で生成した問題に限ります。
ファイル入力した問題の解答は Super メニューを利用して下さい。
Hint メニュー
- SetHint
現在の局面でマスに入る数字の候補を表示します。
Hint と違うところは、数字の候補に色を設定することです。
簡単な問題では、色が付けられた数字を参考にマスに数字を配置すれば正解が得られます。
- PreHint
HintAll やプレイヤーが設定したヒントを継承して、候補に色を設定して表示します。
手作業でゲームを進めるときに利用して下さい。
局面とヒントが合致しないと(ヒントの消し忘れ等)誤った情報(色)が表示されます。
- HintOne
グループ毎(行・列・3*3行・3*3列)に順にヒントを実行します。
詳細にヒントの実行(候補の数字を消す)を知りたいときに利用して下さい。
- HintAll
グループ(行・列・3*3行・3*3列)のヒントを一度に実行します。
- RunHint
ここからはコンピュータが問題を解きます。
局面のヒントを設定(更新)して、候補が一個しかないマスとグループ内で候補が一個の数字を確定して問題を解きます。
簡単な問題なら解けますが、ここから先が本番です。
- Think
局面のヒントを生成して、ヒントを解析しながら問題を解きます。
RunHint にヒントの解析(HintAll)がプラスされたメニューと思って下さい。
難問以外は、このメニュー一発で解けるかも知れません。 (^_^;)
- Thinking
HintAll やプレイヤーが設定したヒントを継承して問題を解きます。
局面とヒントが合致しないと(ヒントの消し忘れ等)誤った結果になります。
TestMode メニュー
- Chenge
通常モード⇔テストモードを切り替えます。
現在の局面が破壊されないように、テストモードに切り替えて作業します。
通常モードに切り替えると、以前の状態に戻ります。
- Play
現在のモード(通常モード/テストモード)で問題を解きます。
メッセージを除いて、実質的に Think と同等です。
- Terget
チェーンを調べるために、ターゲットのマスを設定します。
Chain で実行するとターゲットのマスが変更されたタイミング(ヒントの削除など)で画面を表示します。
数字の論理的な関連や複数解答を調べるときに利用します。
- Chain
プレイヤーが設定した局面とヒントを継承して解析します。
主としてターゲットのマスが変更されるタイミングを知るために使用します。
実行の結果として空のマス(数字の候補が無い)やグループ内で同じ数字が設定されたときは破綻です。
Help メニュー
- Version
バージョン情報を確認します。
- Super
再帰関数を使って問題を解きます。
解答が複数存在する問題を含め、ほとんどの問題を解くことが出来ます。
全ての問題が解ける訳ではなく、再帰関数の制限や非常に実行時間が長くなる場合があります。
- TestMode の使い方が解り難いと思うので、具体的に例を挙げて説明します。
File メニュー/Load から N08.num をロードして下さい。
N08 の問題画面が表示されます。
Hint メニュー/Think を実行して下さい。
簡単な問題なら解けるのですが N08 は難問でチェーンを使って解析します。
- 9-5 に設定されている数字の候補 2,9 から 9 を消すことが出来ることをチェーンを使って調べます。
TestMode メニュー/Chenge でテストモードに切り替えます。
TestMode メニュー/Terget から 9-5 のセルを選択します。
- 9-5 から連鎖する9に関連するマスは次の通りです。
5-5, 6-5, 9-4, 9-7, 9-9, 7-4
この中から最も有力なマスは 5-5 と 9-7 です。

- 9-7 から9を消し、Chain を実行すると 9-5 の 9 が消えます。
9 が消えると、9のチェーンが成立します。
また Chain の実行結果として空のマスが表示されたら失敗です。
- チェーンが成立すると TestMode メニュー/Chenge で元の画面に戻ります。
9-5 から9を消し、2が確定します。
2の確定により 9-1.3 7-1.2 4-5.7 6-5.6 5-5.9 が確定します。
- Hint メニュー/Think を実行するとパズルが完成します。
- この手順中 9-7 から9を消すと 9-5 から9が消えるのがミソですが、次のように連鎖されます。
9-7 の9が消えると 6-7 の9確定する。(7列で9はここだけ)
6-7 の9が確定すると 5-9 の2が確定する。(29 から9が消えた)
5-9 の2が確定すると 5-5 の9が確定する。(5行で9はここだけ)
5-5 の9が確定すると 9-5 の9が消える。
このパズルの最大の難関は、このような連鎖を見つけ出すことにあります。