MENU

2022-11-14から1日間の記事一覧

【VB】ペントミノ3Dパズルを解く(9)終わりに

この連載をお読みいただきありがとうございました。 3Dは2D版を拡張すれば簡単にできるだろうとタカをくくっていましたが、前述のように鏡映の判断に手間取りなかなか納得のいく状態になりませんでした。ここで紹介した方法以外にいい方法があれば、ぜひ…

【VB】ペントミノ3Dパズルを解く(8)フォームのコード

Form1 のコードを説明します。鏡映の判定を追加した部分が2D版と大きく異なります。 ・クラス宣言 IDEのソリューションエクスプローラで Form1 を右クリックして "コードの表示" で自動表示されるので気にも留めませんが、クラスの名前は "Form1" です。 P…

【VB】ペントミノ3Dパズルを解く(7)フォームのデザイン

フォームは「ペントミノソルバー2D」をそのままコピーし、ラジオボタンを変更します。フォーム全体のプロパティは次のとおりです。 プロパティ 値 Name Form1 Size 390, 580 StartPosition CenterScreen Text ペントミノソルバー3D フォームのサイズはキ…

【VB】ペントミノ3Dパズルを解く(6)DEFクラスを作る

このクラスはプログラムの鑑です。プログラムIDや作成日などのプログラム諸元や共有で使用する定数や関数などをまとめて記述しておくクラスです。クラス名の "DEF" は定義(define)から採っています。 ・クラス宣言 クラスの名前は "DEF" です。 Public C…

【VB】ペントミノ3Dパズルを解く(5)箱クラスを作る

箱クラスは箱内の空いているセルに部品が置けるかどうかを判定したり、現在おいている部品と座標位置を登録して完成判断に使用します。 ・クラス宣言 クラスの名前は "Box" です。 Public Class Box ・プロパティ:LenX, LenY, LenZ 箱の大きさ。初期化時に…

【VB】ペントミノ3Dパズルを解く(4)棚クラスを作る

今回は棚クラスです。棚は全部で12作り、1つの棚に1種類の部品を登録します。登録する部品は回転や裏返しをしたものをあらかじめ用意しておきます。例えば部品"T"の棚には向きの違う12個の部品"T"を登録します。 部品"F"の場合は部品の形状が非対称なので…

【VB】ペントミノ3Dパズルを解く(3)部品クラスを作る

今回は部品クラスを作ります。その前にペントミノを簡単な文字列で表現する方法について説明します(平面版ペントミノ2Dのときにも使いました)。 図の折れ線矢印は起点から上下左右に図形を一筆書きのようにたどります。1マスの移動を アルファベット1…

【VB】ペントミノ3Dパズルを解く(2)座標クラスを作る

前回はクラスの概要の説明でした。今回はさっそくクラスの作成に取り掛かります。Visual Studio で空白のプロジェクトを用意してください。 プロジェクトの名前は "ペントミノソルバー3D" です。 最初は「Coordクラス」、3次元の空間にある点を表す座標ク…

【VB】ペントミノ3Dパズルを解く(1)はじめに

ペントミノパズルの3D版ソルバーです。2D版を作ったあと3D版は簡単に作れると思っていましたが、鏡映の判断に時間がかかってしまいました。 パズルのルールは単純です。ペントミノ2Dの各ピースを立体にしたものを直方体に箱詰めするものです。直方体…