• ベストアンサー

六角形のマスの作り方

簡単なボードゲームを作ろうとしています。 六角形のマスが並んでいる、ゲームの大戦略をすごく簡単にしたような感じです。 オセロのような四角形のボードの盤上は、ban[][]のような二次元配列で表現しましたが 六角形だとどうすれば良いのかわからなくて悩んでます。 おすすめの方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

使い勝手がいいかどうかは知らんけど, スクウェアなますを使ってヘックスっぽくする, 俗に「疑似ヘックス」と呼ばれる方法があります. 縦と横のうちある方向はそのままにしてもう一方を半分だけずらすという手法で, 確かファミコンの大戦略でもこの表示を採用していたんじゃないかな. これなら (「隣」の判定は若干面倒だけど) 二次元配列で表現できますね.

Naoto-can
質問者

お礼

試しにやってみました。 二次元配列で表現できましたが、ヘックスの上下の判定が オセロのようなマスメと違って複雑になって頭が痛いです。 ずらした行の一つ上はxとx+1になって ずらさなかった行の一つ上はx-1とxになって…。 そのあたりがなんとか出来れば実現できそうです。 有難うございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

こうしてはどお?

Naoto-can
質問者

お礼

ご回答ありがとうございます。 とりあえず、2と3のかたのやり方で実装してみましたが 特別問題はないので、それで行くことにしました。 作成を進めてみて問題が出てきたら そちらのやりかたをご参考にさせて頂きます。 助かりました。

すると、全ての回答が全文表示されます。
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.3

回答2のやり方がスマートかと思いますが、 「疑似ヘックス」というのは表示上の手抜きの問題で、 同じデータ形式でも六角形で描画すればそのままヘックス表示になります。 あとは、隣り合うマスの座標ですけど、(x,y)を基準に、    左上:(x+y%2-1,y-1)   右上: (x+y%2,y-1) 左:(x-1,y)       基準(x,y)      右:(x+1,y)    左下:(x+y%2-1,y+1)   右下: (x+y%2,y+1) といった形で簡単に計算できるかと。

Naoto-can
質問者

お礼

有難うございます。 おかげさまで座標の計算が簡単にできて、作れるめどが立ちました。 悩んでいたポイントが消えてすっきりです。

すると、全ての回答が全文表示されます。
回答No.1

Javaなら、クラス内に左上、右上、左、右、左下、右下にあるカードのオブジェクトを参照するフィールドを作ればいいのでは。 で、それらを単純にArrayに突っ込んで、走査が必要ならArrayを端からみれば良くて、あるカードの隣のカードを見たければ、そのあるカード内のフィールドを参照するとか。

Naoto-can
質問者

お礼

有難うございます。 試しに考えながら作ってみました。 public class Card { private Card[] card; private int unit; public Card(Card cr, Card cl, Card crd, Card cld, Card cur, Card cul, int u){ card=new Card[10]; card[1]=cld;card[3]=crd;card[4]=cl;card[6]=cr;card[7]=cul;card[9]=cur; unit=u; } public Card getCard(int i){ return card[i]; } public void setCard(Card c,int i){ card[i]=c; } } 上下の繋がりをセットするところとか、画面上をクリックしたときどのカードがを押したのかの判定だの 考えてるとこんがらがってきますがとりあえず作れそうです。有難うございました。

すると、全ての回答が全文表示されます。