PencilBox version 1.5.0 公開のお知らせ

ペンシルパズルエディタ PencilBox バージョン 1.5.0 を公開しましたので,お知らせします。

ダウンロード先は以下です。実行可能なプログラム (pencilbox-*.*.*.zip) とソースコード(pencilbox-*.*.*-src.zip) の2種類がありますので,必要な方を取得ください。

その他の情報は以下のウェブページを参照ください。

今回の主な変更点は以下の通りです。

  • [問題入力モード]での編集操作をアンドゥ履歴に加えるようにした。
  • [領域編集モード]での編集操作をアンドゥ履歴に加えるようにした。
  • [補助記号消去]の操作をアンドゥ履歴に加えるようにした。
  • 四角に切れ,天体ショー,フィルオミノについて右ドラッグ操作で辺の位置に線を引くようにした。
  • 四角に切れの解答モードの長方形入力,へやわけの問題入力モードの長方形入力について,左ボタンのみを用いて操作するようにした。
  • 天体ショーの解答モードの領域入力,波及効果,LITSの問題入力モードの領域入力について,左ボタンのみを用いて操作するようにした。
  • フィルオミノの解答モードの数字入力について,左ボタンのみで操作するようにした。


以下,変更点の詳細について記します。

[問題入力モード]での編集操作をアンドゥ履歴に加えるようにした。

以前は[解答モード]の操作のみがアンドゥ対象となっていましたが,[問題入力モード]の操作もアンドゥ対象となりました。これで今まで問題入力の操作を行ってからアンドゥをすると不整合があったのが,解消されたと思います。
もともとそうなっていなかったので変更にちょっと時間がかかりました。まったくなぜ最初からそうしていなかったのでしょうね。

[領域編集モード]での編集操作をアンドゥ履歴に加えるようにした。

同様に[領域編集モード]の操作もまとめてアンドゥ対象されるようになりました。

[補助記号消去]の操作をアンドゥ履歴に加えるようにした。

ついでです。なおどっちでもよかったのですが,[解答消去]のメニューではアンドゥ履歴も含めて消去するようにしてます。

四角に切れ,天体ショー,フィルオミノについて右ドラッグ操作で辺の位置に線を引くようにした。

マスとマスの間に線を引いたり消したりするようになりました。右ドラッグで操作します。これは黒マスパズルの”塗らない印”や線を引くパズルの×印などと同様に,正解判定に影響しない目印としての役割のみとなります。境界線だけ引いても正解と判定されませんのでご了承ください。
境界線に線を引いたときのデータは.txt形式で保存読み込みでき,今までのデータと比べ最後に一行追加されます。境界線が全くなければ特に何も出力されず今までと同様のデータとなります。なお.xml形式では境界線のデータは保存されませんのでご了承ください。もう.xml形式やめるかも。

四角に切れの解答モードの長方形入力,へやわけの問題入力モードの長方形入力について,左ボタンのみを用いて操作するようにした。
天体ショーの解答モードの領域入力,波及効果,LITSの問題入力モードの領域入力について,左ボタンのみを用いて操作するようにした。
フィルオミノの解答モードの数字入力について,左ボタンのみで操作するようにした。

前項のように境界に線を引く操作に右ボタンを使うことにしたので,それ以外の操作を左ボタンのみで行うように操作方法を変更しました。
四角に切れなどの長方形領域操作について,以前は左ボタンで作って右ボタンで消すとしていたのを,左ボタンだけで操作するように変更しました。既存の長方形の上で左ボタンを押して移動せずに離すと,その長方形を消します。ニコリコムの操作と似てます。
天体ショーなどの領域操作について,以前は左ドラッグで通過したマスを領域に追加,右ドラッグで通過したマスを消していたところを,左ボタンだけで操作するように変更しました。既存の領域のマスの上で左ボタンを押して移動せず離すと,そのマスを領域からのぞきます。既存の領域を始点に左ドラッグしたときに,はじめに移動したマスが他の領域や領域のないマスであれば,その後は通過したマスを領域に追加する操作となります。はじめに移動したマスが同じ領域であれば,その後は通過したマスを領域から取り除く操作となります。
フィルオミノについては,ドラッグ操作では通過したマスを始点のマスの数字に合わせます。マスを連続してクリックすると数字を1ずつ増やしますが,いったん別のマスに移動してから戻ってクリックすると数字が消えます。これは新しい操作なので説明しないと分かりにくいかも。


主な部分としてはこんなところですが,ソースコードレベルではこれ以外にもあれこれと無闇に書き換えています。大きな点としては,行座標と列座標を引数としていたメソッドの多くをマス座標を表すAddressクラスを引数とするようにしています。おかげで今までありとあらゆるところにあったf二重のforループの多くが一重ループになっています。

今回いろいろ書き換えたんで,多分いろいろ不具合出てるんじゃないかと思います。不具合その他お気づきの点がございましたら,教えていただければありがたいです。

今後については,今のところ特にどうするかは決めておりません。今度こそあからさまな欠点はだいぶ減ったのではと思ってまして,あわてて何かすることはないのかなと思っています。
境界線を引けなくていいから前の操作方法を選択できるようにしろとか,ございますでしょうか。
対応するパズルの種類を増やせたらというのはもちろんあるのですが,今はパズルごとに個別に作成している部分の分量が多いので,もう一段階共通化を進めてからにしないと大変になると思ってます。