Skip to content
furutsuki edited this page May 21, 2015 · 3 revisions

Stoneクラス設計

 設計とは言いつつも、設計書を書くよりもコードを書いたほうが確実に伝わるので、コードを書きました。現在インタフェースとして必要になりそうな部分だけ書きましたが、ここにメソッドなりを追加していく予定です。

// using RawStone = uint8_t[8]; // 8bitで一行の情報を表す
using RawStone = char[8][8]; // こちらの方が後々便利そう

class Stone {
  public:
    Stone(RawStone r):
      raw(r), rotated(0), reversed(false) {}
    uint64_t get_hash() const;  // 石情報を16バイトの値で返す。本当に実装できるのか? & uint64_tにしているけれども、面積も一緒に返したほうが嬉しそう。
  private:
    RawStone raw;     // 石本体の情報
    uint8_t rotated;  // 何回転したか(0-3の値をとる)
    bool reversed;    // 反転したか(true=反転した, false=してない)
};

/* 問題点
 * 8*8以上の大きさの石に対応できない
 */
Clone this wiki locally