sash2104 / carcassonne

An AI for carcassonne
0 stars 0 forks source link

ボードのロジックを実装 #4

Closed mikarru closed 6 years ago

mikarru commented 6 years ago

ボードのロジックを実装しました。 タイルの配置、ミープルの配置、ミープルの管理、得点の管理など、基本的な機能は全て実装できていると思います。

JSONを扱う必要があったため、JSONのライブラリ(https://github.com/nlohmann/json)をレポジトリに含めました。(ファイル名はjson.hpp)

コードの量が多いので重要なクラスとその関係だけ簡単に説明しておくと

のような感じになります。

sash2104 commented 6 years ago

とりあえず、ロジックに関係ない部分から。。。 makeを実行した時に出るWarningは極力解消しておいた方が、

のでいいと思う。

Wsign-compareに関しては、overflowが問題になる程大きなサイズになることはほぼないから、-Wno-sign-compareのオプションをつけて無視しちゃってもいいかも

sash2104 commented 6 years ago

口頭では言ったけど、Tileごとに不変の情報はTileInfoとか何か別のクラスを作って使いまわした方が効率がいいはず。対応はいずれ、でいいと思うからissueにあげます

sash2104 commented 6 years ago

今日はここまでで。。 Tile、Segment、Region、Boardあたりはロジックをもう少し理解したいから明日以降にまたやります

sash2104 commented 6 years ago

ざっと見て気になったところにコメントしました。 ロジックの部分は完全には処理を追えてないけど、確認した部分は問題なさそう & テストも全部通ってるのでよさそう。 いずれは高速化したい部分がいくつかあるけど追々考えればいいと思うし、俺がコメントしたなかで、すぐに対応できそう & 今対応した方がよさそう な部分だけやってもらえれば。

mikarru commented 6 years ago

取り敢えず、warnが出てたコードを修正しました。

僕の環境だと、

warning: section "__textcoal_nt" is deprecated

みたいなwarnがまだいっぱいでてるけどこれはこのままでいいのかな?

ちなみにg++のバージョンは4.9.4

$ g++ --version
g++ (Homebrew GCC 4.9.4) 4.9.4
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
mikarru commented 6 years ago

mapからunordered_mapに変更。

mikarru commented 6 years ago
mikarru commented 6 years ago
mikarru commented 6 years ago

レビューもらったところで今直した方がいいところは全て修正しました。

sash2104 commented 6 years ago
warning: section "__textcoal_nt" is deprecated

のエラーは初めて見たけど、調べたら害はなさそう? https://stackoverflow.com/questions/39865367/warning-section-textcoal-nt-is-deprecate-since-updating-to-mac-osx-sierra 若干気持ち悪いけどこのままでも。

sash2104 commented 6 years ago

修正ありがとう! 問題なさそうなのでマージします。

mikarru commented 6 years ago

迅速なレビューありがとう!