将棋用のユーティリティとして今まで何故無かったという棋譜保存。
とりあえず狭い画面にリストボックスで棋譜を三行ずつ表示していたので、リストボックスをダブルクリックするとクリップボードに全部書き出すというプログラムを組んだ。
Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
Dim max As Integer = ListBox1.Items.Count
Dim Clip As String = ""
For i = 0 To max - 1
Clip += ListBox1.Items.Item(i) + vbCrLf
Next
Clipboard.SetText(Clip)
End Sub
下から二行目Clipboard.SetText(Clip)の部分はOSの機能なのでマニュアルを読んだ。
往々にしてウインドウズプログラミングはVBでもVCでもC#でもOS機能を利用するためにサンプルやマニュアルを大量に読み込むことになる。それが昨今ではマニュアルを引かなくともMSDNやそれに類するヘルプがネットで引けるわけだが、それで用が済むかというと、問題は上の部分6行がスラスラ書けるかという事になってくる。そこをAIで出来ると、まあマニュアル引いてAIに尋ねてとか、もっと言うとAIに尋ねたらクリップボードの事も教えてくれるかもだが、そもそもクリップボードとは何かというウインドウズの知識がないと発想も出てこないし、テキストと文字列型の変換というプログラミングの知識もないと何をやって良いか分からない。
1行コピって6~7行書くだけですごく便利な機能が出来たわけだが、その説明をするにはまずメモリと変数、配列と文字列型、SJISやUTF-8という文字コードの話、CRLFなどの改行コードの話、そしてVBでの文字列型の取り扱いにリストボックス、クリップボードというウインドウズ標準機能の話と実に6単位分くらいの解説が必要になる。
1単位2時間で見積もると12時間で実に新米君に頼むと2日くらいかかってしまったとしても不思議ではないのではないだろうか。8行でも。そのへん、ゲーム会社のバイトでは偉い人が「やっといて」で自分で勉強するのだが、経験者採用が多いのもそれで出来なきゃいけないわけで、新卒の教育カリキュラムとして組み込みたいと思っているような会社ではウインドウズのVBではなく組み込みのC言語を採択して、8行のコードでも1枚の仕様書として管理職から割り振られるのである。
ハッキリ言って、ゲーム会社からソフトハウスにソフトハウスからSE派遣に転職して、行った先でシステム全部分かるのに管理職から降りてきた8行の仕事に1週間を見積もられ、数分で終わって「サボっている」という評価が付くのは耐えられなかった。
その話はそんくらいで、今朝は将棋を指していたが難しい局面で休憩でとしてこのブログを書いている。そんなことしないで長考がんばれやコラ!という局面がこれ。
そして便利機能でここまでの棋譜がダブルクリックとメモ帳で保存出来て下記。
▲ 2六歩
▽ 8四歩
▲ 2五歩
▽ 8五歩
▲ 7八金
▽ 3二金
▲ 7六歩
▽ 4二王
▲ 5八金
▽ 8四飛
▲ 6八銀
▽ 6四飛
▲ 6九王
▽ 8六歩
▲ 同歩
▽ 1二香
▲ 3六歩
▽ 7二銀
▲ 3七桂
▽ 8三銀
▲ 3八銀
▽ 5一金
▲ 2七銀
▽ 4一金
▲ 2六銀
▽ 5一金
▲ 3五銀
▽ 6五飛
▲ 2四歩
▽ 同歩
▲ 同銀
▽ 2三歩打
▲ 同銀成
▽ 同金
▲ 同飛成
▽ 4九銀打
▲ 2八龍
▽ 5八銀成
▲ 同龍
▽ 2六金打
▲ 2八龍
▽ 3六金
▲ 7七銀
▽ 4七金
▲ 6六歩
▽ 3五飛
▲ 2五桂
▽ 5七金
▲ 7九角
▽ 2七歩打
▲ 同龍
▽ 3九飛成
▲ 5九銀打
▽ 5六金
▲ 6八銀
▽ 1九龍
▲ 6七銀
▽ 同金
▲ 同金
▽ 1八銀打
▲ 5七龍
▽ 2八龍
▲ 1三桂成
▽ 同角
▲ 6八龍
▽ 同角成
▲ 同角
▽ 3七飛打
▲ 7八王
▽ 1七香成
▲ 1三歩打
▽ 同桂
▲ 4六角打
▽ 7七香打
▲ 同王
▽ 6五桂打
▲ 同歩
▽ 6七飛成
▲ 同王
▽ 5六金打
▲ 同王
▽ 2六龍
ここまで。これを拡張すれば柿木将棋のKIF形式にして他の将棋ソフトで読み込んで検討とかも出来るようになるだろうなーと思うんだけど、他に頼める人も頼む財力も無いのでOSSだけど自分でまた全部やることになりそうです。
全部通信出来たら、無料ダウンロードではなく寄付でも欲しいなぁと思うけど、どうして世の中にはこんなに便利な無料ソフトがいっぱいあるって、嫌儲だと思ってたけど実は儲からなくて多機能高スペックを目指せばハードが売れてみんな富士通の回し者って説がいちばん有力じゃないかと思ってます。秀丸エディタとかも確か富士通系。
というわけで、俺も派遣SEの時は富士通系ソフトウェア子会社からお給料もらってたので、富士通買えやゴルァ!と脅しておいて今日のブログを締めくくり、将棋の続きをします。プログラム指南もちょっとは書かないと独りで黙々と作業してて他の人に意味不明のままだからね!
追記:続きを指しました!
▲ 3七金打
▽ 2八龍
▲ 1三角成
▽ 3七龍
▲ 8二飛打
▽ 7二金打
▲ 8一飛成
▽ 8八歩打
▲ 1四馬
▽ 8九歩成
▲ 8四桂打
▽ 4四桂打
▲ 5五王
▽ 5四歩
▲ 同王
▽ 5三歩打
▲ 5五王
▽ 5四歩
▲ 同王
▽ 5三歩打
▲ 5五王
▽ 5四歩
▲ 同王
▽ 5三歩打
▲ 5五王
▽ 5四歩
▲ 同王
▽ 5六桂
▲ 7二桂成
▽ 6八桂成
▲ 5三金打
▽投了
飛車二枚で攻立てられて難しい将棋でしたが、コンピュータは三手読み。やはり三手では難しい局面が幾つかあるみたいですね。
と言っても俺も一手詰めを見逃していたり、ソフト側も無駄合いを駒が無くなるまで繰り返したり欠点はあるけど良い将棋だったと思います。
棋譜保存、やってみて良かった。フリーウェアとしてはクリップボードにコピーって何かの作業中に将棋を遊んだユーザーさんのクリップボードを上書きしてしまう可能性があってちょっと危ないから、もうちょっと良い方法を考えないとだけど、ファイルで吐くとメモリは使うし危険度が上がってデバッグも入念にしないとなので難しい!
追記:途中で切れているのは見づらいと思うのと棋譜解析が手間なのでKIF形式で。
先手の戦型:棒銀
後手の戦型:力戦
先手の囲い:カニ囲い
先手の手筋:垂れ歩
先手の備考:居飛車, 相居飛車, 急戦, 長手数
後手の備考:居飛車, 相居飛車, 急戦, 長手数
手合割:平手
手数----指手---------消費時間--
1 2六歩(27)
*▲備考:居飛車
2 8四歩(83)
*△備考:居飛車
3 2五歩(26)
4 8五歩(84)
5 7八金(69)
6 3二金(41)
7 7六歩(77)
8 4二玉(51)
9 5八金(49)
10 8四飛(82)
11 6八銀(79)
12 6四飛(84)
13 6九玉(59)
*▲囲い:カニ囲い
14 8六歩(85)
15 8六歩(87)
16 1二香(11)
17 3六歩(37)
18 7二銀(71)
19 3七桂(29)
20 8三銀(72)
21 3八銀(39)
22 5一金(61)
23 2七銀(38)
24 4一金(51)
25 2六銀(27)
*▲戦型:棒銀
26 5一金(41)
27 3五銀(26)
28 6五飛(64)
29 2四歩(25)
30 2四歩(23)
31 2四銀(35)
32 2三歩打
33 2三銀成(24)
34 2三金(32)
35 2三飛成(28)
36 4九銀打
37 2八龍(23)
38 5八銀成(49)
39 5八龍(28)
40 2六金打
41 2八龍(58)
42 3六金(26)
43 7七銀(68)
44 4七金(36)
45 6六歩(67)
46 3五飛(65)
47 2五桂(37)
48 5七金(47)
49 7九角(88)
50 2七歩打
51 2七龍(28)
52 3九飛成(35)
53 5九銀打
54 5六金(57)
55 6八銀(77)
56 1九龍(39)
57 6七銀(68)
58 6七金(56)
59 6七金(78)
60 1八銀打
61 5七龍(27)
62 2八龍(19)
63 1三桂成(25)
64 1三角(22)
65 6八龍(57)
66 6八角成(13)
67 6八角(79)
68 3七飛打
69 7八玉(69)
70 1七香成(12)
71 1三歩打
*▲手筋:垂れ歩
72 1三桂(21)
73 4六角打
74 7七香打
75 7七玉(78)
76 6五桂打
77 6五歩(66)
78 6七飛成(37)
79 6七玉(77)
80 5六金打
81 5六玉(67)
82 2六龍(28)
83 3七金打
84 2八龍(26)
85 1三角成(46)
86 3七龍(28)
87 8二飛打
88 7二金打
89 8一飛成(82)
90 8八歩打
91 1四馬(13)
92 8九歩成(88)
93 8四桂打
94 4四桂打
95 5五玉(56)
96 5四歩(53)
97 5四玉(55)
98 5三歩打
99 5五玉(54)
100 5四歩(53)
101 5四玉(55)
102 5三歩打
103 5五玉(54)
104 5四歩(53)
105 5四玉(55)
106 5三歩打
107 5五玉(54)
108 5四歩(53)
109 5四玉(55)
110 5六桂(44)
111 7二桂成(84)
112 6八桂成(56)
113 5三金打
114 投了
まで113手で先手の勝ち
変換にはSHOGI-EXTENDを観戦にはlishogiを使わせていただきました。
55手目6八銀がどっちか分からなくなる事故を記憶に頼って(77)と補完。多分合ってます。その後の棋譜見てもおかしくないし、そういう対局だと覚えていましたので。
俺のヒーローは故人ではありますが森田和郎さんで、自宅のパソコンでゲームを作って会社を起こしファミコンの森田将棋は子供の頃の俺の相手でした。そんなことも忘れて会社勤めをしていた頃に仕事が暇で暇つぶしにしていたコンピュータ将棋からBonanzaの優勝と保木先生のニュースで、それから会社勤めが嫌になり悪い儲け話に乗せられそうになっていた時に一緒に乗って大借金のやねうらお先生にコンピュータ将棋の大会で強いとこ見せたって下さい!と結果Ponanza山本に負けて4位。4位でも俺には十分だと思えたけど、なんと意地を見せて3連覇。そこから自分のやつで出て1勝。
気づけば46歳。まあまあ良い年だと思うのですが、30代から自称が「おっちゃんやで」だったのがネットで出会いのない婚活事情の失敗談で、これから文章の上だけはイケメンであることにしてみようと思います。俺の顔知ってる奴は秘密な(検索で簡単に見つかるところがGoogleのステマ)