みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ふわっとした質問で申し訳ありません。
2次元配列のようにフィールドをレイアウトに配置し、
縦横斜めに同じオブジェクトが3連続する箇所があるか判定するものを作る場合、
繰り返しフィールドを使うことになるかと思うのですが、
下のような場合
一つのフィールドで繰り返し25とするべきか、
5個のフィールドで繰り返し5とするべきなのか、
他にいい方法があれば教えてください。
環境はWin10、FM19です。
ーは空白のつもりです
12345
A ーーーーー
B ー●×ーー
C ーー●×ー
D ーー×●ー
E ーーーーー
文字にしてボタンバーにするとかはどうですか。Unicodeなのでいろんな図形文字があります。
すみません。
1~5、A~Eは行、列のタイトルであって、
データ部分はー●×の部分です。
そこは理解しています。UIの作り方の提案です。ドラッグ&ドロップで操作したいなら、ボタンバーでは無理ですが。
ボタンバーならフィールドは不要で直接配列(変数)に入れられます。○×の2種類なんでしょうか。
「判定」に関しては、今のところ特にアイデアはありませんが、しらみつぶしになるなら5x5より25の方が楽そう。
データの持たせ方は、25の繰り返しフィールドにしておきます。
判定は、同じ記号の出現が3回、という事でしたら、簡単です。
各回目の出現の位置の差と、div ( 出現位置 - 1 ; 5 ) を求めておきます。
位置の差が1の場合、div が全て同じ
位置の差が4か5か6の場合、div が増分が1
という条件を満たせばいいです。
Last edited by Shin (2021-06-01 16:16:50)
Offline
三つ連続は、
横が 3×5=15 通り
縦も同じ
右下がりの斜めが 3×3=9 通り
右上がりの斜めも同じ。
計、48通り考えられますね。
このすべてをしらみつぶしするしか無いのでは。。
フィールをどう作っても同じような手間に思いますが、、
Offline
himadanee様
操作はシングルクリックで行います。
挿入するオブジェクトは2種類です。
Shin様
サンプルのご提示ありがとうございます。
チポ様
最終的には21×21で、5連続の判定考えています。
チマチマやるしかなさそうですね・・・。
> 21×21で、5連続
1292通り!!
チマチマのレベルを超えていますよ!!
いい方法、思いつきません。。
Offline
五目並べなのですか?
その枠の中に、5点を選んで、という事でしたら、サンプルを拡張するだけでいいですが。
何十もの選択があり、その中のいずれか5点が条件を満たすかどうか、という命題でしたら、フィルターを使って同様の仕組みを作り、437回回せばいいです。
Offline
五目並べなら、今打ったところだけ見ればいいので、ずいぶん手間は減りますが...
正式な連珠なら21でなく15ですよね。
19なら碁盤が使えるけど、21路盤というのがないからPCでやりたいのかな。
シングルクリックならボタンバーでもいいけど、これはボタンごとにスクリプトを割り当てないといけないので、逆に面倒かな...441回も同じ操作しないといけない^^;最初の質問とはだいぶ変わってきます。
繰り返しフィールドならボタンでなくEnterトリガにすれば繰り返し分1回設定で済みますね。
Shin様、hinadanee様のご想像通りほぼ5目並べのようなことを考えています。
たまたま、やりたいことが21×21の正方形のような配列になってしまい、
言ってしまえばほぼほぼ5目並べの路盤違いのような形でしたが、
5目並べとストレートに言ってしまうと、
いろいろな人の考え方が聞けなくなり、今後に活かせないと思い、
回りくどい質問の仕方になってしまいました。
5×5で、3目並べを検出するサンプルです。
とりあえず、動きは遅いですが、可能ですよ、ということで。
https://www.dropbox.com/s/zaxb11t8nhskx … 2.zip?dl=0
考え方は、25の繰り返しフィールドに格納するとして、
並びのパターンが、その文字がある最初のポイントを基準にして、繰り返し位置の +1,+2、+4,+7、+5,+9、+6,+11 のパターンの位置に、同じ文字が存在するかどうかをみています。
多分、サンプルでは回りくどい無駄な動きが入っていると思いますので、もう少し早くなると思います。
Last edited by Shin (2021-06-07 08:52:33)
Offline
五目並べに反応・・
昔々、大昔、
卒論でFORTRANで詰め連珠のプログラムを書きましたよ。
電子計算機と言ってた時代で、入力はパンチカード、
UGIなんて遠い時代でした。
あまりいい出来ではなかったな。。
で、判定は一手ごとにするのですか?
Offline
僕も、教養のプログラム更座で、Life を作りましたね。Fortran でパンチカード1箱、出力はラインプリンタでした。自分のCPU時間は使い切っていたので、指導教官のCPUをもらっていました。面白かったのか、指導教官が欲しいといっていました。
今思えば、COBOL で書いた方がきれいだったかも。
連珠も基本的に戦えるモノを作りましたが、ヒトの全勝で、面白くなかったです。
Last edited by Shin (2021-06-02 10:06:01)
Offline
チポ様
>で、判定は一手ごとにするのですか?
その通りです。
とりあえず、「一つのフィールドで繰り返し25」の方でしょうね。
フィールド5個にするメリットは、レイアウトに配置するのが楽という以外あんまり思いつきません。
フィールド1個なら路数が変わっても同じ論理でできるだろうし。
FM19なら、UI部分はJavascriptというかWebビューアで作った方が楽かも?
1手ごとに判定するなら、3目列べとして最大12パターンを見るだけですね。(5目では20パターン)
そのパターンを作って仕舞えば、簡単にチェックできます。(例えば、-2,-1,0 ; -1,0,1 ; 0,1,2 -10,-5,0 ; -5,0,5 ; 0,5,10 ; ....)
Offline
その判定には、
例えば、
黒を1
白を10
に置き換えた計算フィールドを作り、
その連続した5つの和で判定するのが簡単でしょう。
そのためにも、一つの繰り返しフィールドがいいかも。。
閑話休題
Shinさん、私とほぼ同年輩でしたよね、
同時期に同じようなことをしていたんですね。。
Offline
色々触って、早く判定できるようになっています。
とりあえずは、5×5の3目並べですが、拡張も、少しの手間で可能です。
パターンの自動作成が可能です。
https://www.dropbox.com/s/zaxb11t8nhskx … 2.zip?dl=0
ACOS とか、PDP-11 HITAC10 とかでした。ada とか PL/1 も触っていました。
Last edited by Shin (2021-06-07 08:52:46)
Offline
Shin様
サンプルありがとうございます。
最近バタバタしていて中身をじっくり見れていません。せっかくいただいたのに申し訳ありません。
>拡張も、少しの手間で可能です。
お恥ずかしいことに未だにLet関数とか理解していない等スキル不足なので、ちゃんと理解しながら拡張していきたいのですが、
5×5→9×9へ路盤変更か、3目→5目へ変更のどちらからやったほうがいいとかありますでしょうか。
路盤の変更(今は正方形のみ、設定を数カ所改造すると長方形も可能です)も目数変更も、マスクテーブルのスクリプトを走らせると同時に変更出来ます。21〼5目でも、数分程度で終了。
手をかけてもらうのは、レイアウト上での繰り返しフィールドの表示を路盤に合わせて拡大するだけです。
何度もアップデートしていますので、ぜひ最新版で一度実行して見てください。簡単にできるように作り込んであります。
Last edited by Shin (2021-06-07 13:20:18)
Offline
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 558.93 KiB (Peak: 579.84 KiB) ]