「こころマクロ」で行える条件設定は多岐にわたります。もちろん全てを指定する必要はなく、職業と武器スキルのみ指定して、あとは必要に応じてコストやレベル制限、そして系統や必ず使用するこころなどを指定できる点がウリと思っておりますが、せっかく指定した詳細条件を保存し再利用できたら便利かなあと思っていたんですよね。
そんな中、ちょうど1か月前、もはや「こころマクロ」育ての親といってもよいでーびーさんから、ブックマーク機能が欲しいとの要望をいただいたのです。これはチャンス!しっかりと使いやすい機能として実装したく、何回ものやり取りをさせていただいた経緯が、とても楽しくエキサイティングでした。ニーズはこうやって明らかになり、そして、それを実装する過程はとてつもなく楽しい時間なのです。そのやり取りを100%コメント抜粋で振り返らせていただきます。
①TOP画面のブックマーク機能
例えばPT素早さ調整するにあたり、直前に組んだこころを戻って組み直したい さほど手間でもないですが、回数がかさむと少し面倒になってきます
10個20個のブックマーク機能(バトマス・オチュアーノ・75とかフリーで見出しを入れられれば尚最高)があると嬉しいです。
①はTOPシートのセーブ機能と考えればよいでしょうか。改めて見ると保存データは、スキル、職業、系統、コスト、レベルの5種類しかないですね。これらを10や20種類、簡単に保存、わかりやすく読み出せればよいと理解しました。これまた考えてみます!
この時点では、全データではなく必要最低限の左にレイアウトされた項目だけ保存しておけばよいのかなと考えたのですが、
ブックマークはそんなイメージです
そこに、除外や必須こころ分まで加わればパーフェクトです
普段いじらない自分の攻撃力も加われば、職業や武器に応じてリアル設定が
ブックマークでワンタッチ再現出来て素敵すぎます
たしかに、こころの指定もあった方が何かと便利そうです。どのようなUIで実装したら使いやすくなるのか、これを考えるのが至福の時です。それこそ、実装方法は無限にあるわけで。
一方ブックマークは、いい感じでUI思いつきました。こころ詳細画面のような子画面でExcelっぽくなく保存、呼び出しできるようにしたいな。Top画面に入力されているこころや攻撃力も要素に入れられるようにしてみますね!
この時点で、ワンクリックでセーブもロードもできるようにしたい思いが固まりました。セーブスロットを選んでから実行は2段階になるのでよろしくない、さらに、Excelで作りやすいダブルクリックによる実行も避けたい。セーブスロットをずらっと表示させておき、それをクリックするだけでセーブとロードができるようにしよう、と思ったわけです。そして、自分でもこの機能があればよいのに!と思った瞬間がこちらです
あ、あと、セーブ機能、自分も欲しくなりました!
ほこらが更新された際、コスト制限の有無で、最適なこころを採択したいとき
保存して呼び出せたら便利!と思ったのです。
そうなんです。ドラクエウォークのほこらパーティでコスト制限がない設定を行うときに4人分保存しておきます。そしてコスト制限のあるパーティを設定する際に、その職業や装備、系統を呼び出せたら、あとはコスト制限を指定するだけで、最適なこころがシミュレーションできるのです!これは我ながらめちゃめちゃ便利でした。そして、いよいよ実装し、公開!
おお、でーびーさん、ちょうどセーブ&ロード機能を追加、更新したところでした。ほんとタイミングがぴったりですw 最初はデータを選んでから実行するUIを考えたのですが、1タップで保存&呼び出ししたくなり、あんな感じで実装してみました。警告メッセージも出さずにロードしますので、その対応として元に戻すアイコンもセットした次第です。使える機能になっていればよいのですが・・・。
育ての親でーびーさんの反応は如何に!?
ブックマーク実装ありがとうございます、いい感じで使えています
最初は7個だけか…(職業数で区切ったと推測)と思いましたが、数が多いと結局直感的に使えなくなるし、どうしても20個分欲しいと思ったら、ブックマークシートの空きセルに入れておいてコピペすればいいだけですので、やはりこれくらいの数がベストですね。
うっかりアンドゥ機能も痒いところに手が届く仕様でした うっかり上書きは、ブックマークシートでコピペ対応で全然手間にもなりません 自分は、常設5個と研究用2個に棲み分け、またTOPページにセル参照で職業Lvスキルを表示させる様にしています。
おお、いい感じで使えてるとのこと、よかった、よかった。ワンクリックによるロード誤操作を補完する「戻す」機能も評価いただけました!さらにはTopページへのセル参照表示、いやはや、想像を超える活用をされています。
早速に使っていただきありがとうございます!
当初から書き込みにあった20個を想定していたのですが、あのUIにしたので、7個ぐらいが限界でした。
実は裏機能でShiftキーを押しながらで、倍に増やそうかとも考えましたが、現時点あのままにしています。空きセルでのコピペ対応、恐縮です!
うっかり上書き!これは想定できていませんでした。なるほど、それはあり得ますね いやはや、ほんと、勉強になります。
上書きを取り消す機能も作った方がいいかな?
うっかり上書きキャンセルは欲しいところですね
仮に『ホンマに上書きでえぇのぉ?』とダイアログ出しても、気持ちが直線になっていると、お構いなしに『えぇよ』ボタン押してしまうので。。。
あと強いて言えば、そのブックマークが何かというものを、横に一覧化して表示を
させるか、マウスオーバーで吹き出し表示をするかの機能があれば最高です。
デフォルトでは、職業/レベル/特技くらいを文字列結合で無機質に表示、ユーザーが保存シートに直接ネーミングを入れればそちらの表示を優先といった具合に。『レベリング魔戦78メガゴールド』みたいにindex表示できれば最高です。
なんにしても、ブックマーク機能により、より頻度多く研究できる様になりました!
このあたり、ほんとに貴重なやり取りをさせていただきました。必要な機能と実装方法が明快となった瞬間です。思わず実装することを箇条書きにしてしまいました。
ブックマーク機能もさらなるアドバイスありがとうございます!
御意!理解しました。
・うっかりセーブを戻す機能
・マウスオーバーで詳細表示
・ユーザーが保存シートに個別に入力した文字列があれば、それを優先表示
(これは、でーびーさん用?ここまで使って下さる人、いないかもww)
マウスオーバーでの吹き出し表示、これは技術的に楽しそうです!
あと、セーブ&ロード時のエフェクトも入れたいところ。
来週末になってしまいますが、実装してみますね!
そして、本日、娘の誕生日である10/9、これらを実装、無事公開することができました!
核となるマウスオーバー表示は、ActiveXコントロール部品を使って実現しています。フォームのシェイプとは異なり、 ActiveXコントロール部品 はマウスオーバーイベントが取得できるので、セーブ&ロード番号として表示しているオートシェイプの下に、1枚のラベルコントロール部品を座布団のように敷いて、その上を通過するマウスカーソルの座標を取得してセーブロード番号を特定、該当するセーブデータを表示させています。
余談となりますが、これはその昔、OfficeTANAKAの田中亨さんがExcel97でブロック崩しを作られた時に編み出した手法で、四半世紀経った今、なお使える有力なテクニックと断言したい!
さて、最終的に吹き出し表示はやめて、セルにダイレクトに表示するようにしました。これは、イメージコントロールのマウスオーバーイベントの取りこぼしが発生するため、少しでも早く処理できるよう速度面から採択した方式ですが、最適解かどうかはわかりません。。。
これらの実装は面倒そう?いやいや、そんなことはありません。記述したコードはたったこれだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim n As Integer Dim StrS As String If X >= 33 And X <= 190 And Y >= 9 And Y <= 64 Then n = Int((X - 33) / 22.43) + 4 With Sheets("セーブ") StrS = .Cells(1, n) & " " & .Cells(5, n) & " " & .Cells(6, n) & " " & .Cells(7, n) & " " & .Cells(14, n) If .Cells(15, n) <> "" Then StrS = StrS & " コスト" & .Cells(15, n) If .Cells(16, n) <> "" Then StrS = StrS & " レベル" & .Cells(16, n) If .Cells(17, n) <> "" Then StrS = StrS & " " & .Cells(17, n) Range("K20") = StrS Range("K19") = .Cells(34, n) End With Else If Range("K19") <> "" Then Range("K19") = "" If Range("K20") <> "" Then Range("K20") = "" End If End Sub |
こんな経緯でセーブ&ロード機能を強化した「こころマクロ」ぜひ、使ってもらえたらと思います!
コメント