将棋等のプログラムでマウスを使用する場合

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mari

将棋等のプログラムでマウスを使用する場合

#1

投稿記事 by mari » 11年前

将棋等のボードゲームで、とある駒をマウスでクリックした際に移動可能のマスを示すプログラムはどう書けばいいのでしょうか??

ex)歩兵をクリックした際、1マス前に印を表示する。

どうかよろしくお願いします。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 将棋等のプログラムでマウスを使用する場合

#2

投稿記事 by usao » 11年前

駒をクリック~移動可能マスを示す の間において
不明点は何なのでしょう???

mari

Re: 将棋等のプログラムでマウスを使用する場合

#3

投稿記事 by mari » 11年前

根本からなのですが、
1.駒をクリックするプログラムの書き方
2.クリックした際に移動範囲を表示するプログラムの書き方
です

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 将棋等のプログラムでマウスを使用する場合

#4

投稿記事 by usao » 11年前

>1.駒をクリックするプログラムの書き方

マウスのボタンが押下された(あるいは 押して→離した)とき,
その座標が 駒の場所であるかどうかをチェックすればいいのではないでしょうか.


>2.クリックした際に移動範囲を表示するプログラムの書き方

実際に駒が移動できる範囲がどう決まるのか?についてはあなたのゲームのルール次第ですし,
ルールだけが説明されても
その算定方法はあなたのプログラムがゲームのデータをどのように扱っているか?等によります.
ここで詰まるようであれば,その時は具体的なコードを提示して質問する等の必要があるかと思います.

範囲が求まったら 後はそれを好きに表示すればよいです.
(駒等の表示ができているのであればここは問題ないでしょう)


(1)どのような環境(プラットフォーム,利用言語やライブラリ等)なのかわかりませんが
 まずはその環境におけるマウスクリック時の処理の書き方
 (マウスのボタンが押されたことをどうやって知るのか)
 について調べられると良いのではないでしょうか.
 ↓
(2)クリックを検出できるようになったら,
 クリック時に,クリックされた座標が
 駒を選択する際にクリックすべき範囲内であるかどうかを判定
 ↓
(3)駒が選択されたようであれば,
 ゲームのルールに則り,その駒を動かせる範囲を求める
 ↓
(4)その範囲を提示するための何らかの表示を行う

mari

Re: 将棋等のプログラムでマウスを使用する場合

#5

投稿記事 by mari » 11年前

私は現在DXライブラリの方を使用しています。

マウスクリック時の座標を得る関数を使い、情報を得ることはできるのですが、

>(2)クリックを検出できるようになったら,
 クリック時に,クリックされた座標が
 駒を選択する際にクリックすべき範囲内であるかどうかを判定

のところのプログラムはどのように書けばよいのでしょうか?

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 将棋等のプログラムでマウスを使用する場合

#6

投稿記事 by usao » 11年前

えーと…
例えば将棋であれば,クリックされたピクセル座標がわかれば
その位置が将棋盤のどのマスの中にあるのか
(あるいは持ち駒のある場所だったりするのか,全然関係ない背景部分なのか)
ということがわかるはずですよね.
(駒の表示等を行っているハズですから,盤のマスや持ち駒がある場所等の表示上のピクセル座標は既知なハズ.
 例えば,盤上の座標「5四」の位置にある駒を 描画するためのピクセル座標というのを
 なんらかの計算により決定してそこに描画してるのでしょうから,
 その逆方向の座標変換,すなわち, ピクセル座標→盤上座標 という計算もできるはず)

で,その場所(マス)がわかれば,あとはそこに現在の手番において操作可能な駒があるのかどうかを
判断すれば良いと思います.
オフトピック
以降,私用により本日は返信できませんので,他の方の回答を期待します.

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 将棋等のプログラムでマウスを使用する場合

#7

投稿記事 by softya(ソフト屋) » 11年前

>駒を選択する際にクリックすべき範囲内であるかどうかを判定
>のところのプログラムはどのように書けばよいのでしょうか?

ただの当たり判定ですので、シューティングやアクションが作れるなら分かると思います。
点と四角の当たり判定で検索してもらうと沢山みつかります。

ただ、それ以前に分かっていないことが多そうなので、もっと根本的な部分から勉強されたほうが良いと思います。
と言うことで最近この掲示板で挑戦者の多いマウスを使わない三目並べに挑戦してみませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る