重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

簡単なボードゲームを作ろうとしています。
六角形のマスが並んでいる、ゲームの大戦略をすごく簡単にしたような感じです。

オセロのような四角形のボードの盤上は、ban[][]のような二次元配列で表現しましたが
六角形だとどうすれば良いのかわからなくて悩んでます。

おすすめの方法があれば教えてください。

A 回答 (4件)

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



これなら (「隣」の判定は若干面倒だけど) 二次元配列で表現できますね.
    • good
    • 0
この回答へのお礼

試しにやってみました。
二次元配列で表現できましたが、ヘックスの上下の判定が
オセロのようなマスメと違って複雑になって頭が痛いです。

ずらした行の一つ上はxとx+1になって
ずらさなかった行の一つ上はx-1とxになって…。

そのあたりがなんとか出来れば実現できそうです。
有難うございました。

お礼日時:2011/02/02 13:20

こうしてはどお?

「六角形のマスの作り方」の回答画像4
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

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

助かりました。

お礼日時:2011/02/02 22:24

回答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)

といった形で簡単に計算できるかと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/02 14:00

Javaなら、クラス内に左上、右上、左、右、左下、右下にあるカードのオブジェクトを参照するフィールドを作ればいいのでは。


で、それらを単純にArrayに突っ込んで、走査が必要ならArrayを端からみれば良くて、あるカードの隣のカードを見たければ、そのあるカード内のフィールドを参照するとか。
    • good
    • 0
この回答へのお礼

有難うございます。

試しに考えながら作ってみました。

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;
}
}

上下の繋がりをセットするところとか、画面上をクリックしたときどのカードがを押したのかの判定だの
考えてるとこんがらがってきますがとりあえず作れそうです。有難うございました。

お礼日時:2011/02/02 13:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!