2012年3月23日金曜日

エクセルで将棋の駒をランダムに配置する方法

エクセルで将棋の駒をランダムに配置する方法

初期設定で自分と相手の駒の数と種類に差(ハンデ)をつけてランダムな陣形から対局を始めるという変則将棋のためにエクセルを使おうとしています。



★自分で以下のようにやってみたのですが、もっとうまくやる方法があるだろうと思っています。



ある行にマス目の値を11~99まで入力。隣の行に99個の乱数を発生させて、玉を除く38個の駒の記号(チェス式に、「歩」は「P1-P18」、金は「G1-G4」...としてます)をマス目値が入力された行の隣にランダムに並べる(もちろん何も入力されていないセルが99-38=41個生じる)。ここで駒記号がどのマス目に割り振られたかを参照して、別の場所にある9×9の表に自動的に駒の記号を配置入力する。



*ランダムに配置した結果1筋に2歩以上配置される場合は余計な歩を持ち駒にするので問題なし。

*動けない位置に駒が配置される場合も初期段階で動かすので問題なし。



上記とは別に38個の駒を記号表記した行を作り、その横にプレイヤーの区別を表す「1」と「2」を任意の割合で(ハンデをつけて)入力して、ここでも乱数で「1」と「2」を並び替えてどの駒がどっちのプレイヤーのものかを決定。たとえば、「P1(歩)」の横のセルの値が「1」となった場合は、条件付書式で駒記号P1の色を変えて、どの駒がどちらのプレイヤーのものか一目で分かるようにする。ただし、ここでの条件付書式は9×9の表とは連動していないので、実際の将棋版に並べるときに確認がやや面倒。



■以上のところまでは自分でできた(参考までにエクセルのシートは添付図のようになっています)のですが。



複数の行で乱数の並べかえなどを自分でせずとも上のようなことを全部自動で(F9押すだけ)できないだろうかと思っています。

また、条件付書式を使って、表の中でも駒がどっちのものか分かるようにできないだろうかと思っています。



まとめると、

★F9を押す(乱数を発生する)だけで9×9のマス目に38種類の駒がランダムに配置され、配置された駒の記号を条件付書式で色分けすることなどでどっちのプレイヤーの駒か一目で分かるようにしたい。



なにぶんエクセルのことはほとんど分かっていないので、分かりやすく説明していただけるとありがたいです。


|||



表が小さいのでわかりづらいのですが、



>複数の行で乱数の並べかえなどを自分でせずとも

これは乱数値がRANK関数等を用いて大きい方から何番目かを返せば自動化できると思います。



>条件付書式で色分けする

数式で数字部分だけを抜き出し、奇数か偶数かで色分けすればいいと思います。



補足に対して



ここではやりとりが少々面倒ですので私の知恵ノートで最初から作りました。

よければ訪問してみてください。

0 件のコメント:

コメントを投稿