どこでファイルを分割したらいいか分かりません…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
Cr
記事: 93
登録日時: 8年前

どこでファイルを分割したらいいか分かりません…

#1

投稿記事 by Cr » 7年前

初ボードゲームを作成中ですが、関数をそこそこ作った後でファイルを分割しないとまずいんじゃね?ということに気付いたはいいものの
どこでファイルを分割したらいいか分かりません

ボードゲームはダイヤモンドゲームという規則に従ってコマを早くゴールへ移動した人が勝ちというものです

今ある関数など
void ResetField…盤面の元の二次配列を初期化
void PrintField…盤面を表示
bool CanSkip…コマを、別のコマを飛び越しながら動かすとき、そこへいけるかどうか
bool CanMove…コマを、隣接するマスへ移動させるとき、そこへいけるかどうか
Point Getlocation…マウスがクリックされた座標から盤面の二次配列の座標を割り出す
RespondToMouse…マウス入力に対する反応全般。CanSkipとかCanMoveとかを内部で呼び出す
void RewriteArray…コマを動かした時に二次配列の値を変更する
bool Creared…プレイヤーのうち誰かが勝利条件を満たしていないかチェック

クラス
Point…xy座標値、ソート可能な順序を持つ。コマの位置を表す
グローバル変数
vector<char> field[20]… 盤面保存
vector<Point> piece_place[3]…プレイヤー三人が持つコマ15個の位置保存(最終的にゲームAIを作りたいのでそのとき用)
定義系
#define RED 0
#define BLUE 1
#define GREEN 2
#define WALL -1
#define EMPTY 3
field[20]の盤面保存配列に入っている値。
piece_place[3]とかを回すときにも使用。

ここからはClass Playerを作ってその中に戦略を保存しAIにし、AIどうしを対戦させる関数等を作るつもりでいます。

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

Re: どこでファイルを分割したらいいか分かりません…

#2

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

どういう風に全体を構成するか設計思想が必要ですね。
完全にオブジェクト指向を採用するのか、今の作りのbetterCのままファイル分割するのか。そこをまず考えてみてください。
どちらにしろ、機能やオブジェクト(ボードとかプレーヤーやAIなどの単位)で分割します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Cr
記事: 93
登録日時: 8年前

Re: どこでファイルを分割したらいいか分かりません…

#3

投稿記事 by Cr » 7年前

完全なオブジェクト指向はハードルが高いので今の作りのままファイル分割する感じにしたいと思います。
コマとフィールドをどこで分割していいかが分からなくて…
AIからも自分のコマがどこにあるか見たいし、
盤面表示の時にもコマの位置を知りたいし…
どのように区切ればいいんでしょうか?

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

Re: どこでファイルを分割したらいいか分かりません…

#4

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

大きくはボード、プレーヤー、AIでしょう。
コマはボードと同一ファイルで管理で、参照は関数を用意すればよいでしょう。
表示はボードで統一してやれば良いかなって思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Cr
記事: 93
登録日時: 8年前

Re: どこでファイルを分割したらいいか分かりません…

#5

投稿記事 by Cr » 7年前

ふむ、なるほど。
ボードファイル内で盤面保存の二次配列をグローバル変数にしてしまうのはありですか?

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

Re: どこでファイルを分割したらいいか分かりません…

#6

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

Cr さんが書きました:ふむ、なるほど。
ボードファイル内で盤面保存の二次配列をグローバル変数にしてしまうのはありですか?
ファイル内にstaticで隠蔽してGetter/Setter関数で操作すべきだと思います。
そうすれば変な値を書き込まれたり配列範囲外の処理をされたりをチェックして防ぐことができますから。
ひいては将来的なクラス化の前準備にもなります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Cr
記事: 93
登録日時: 8年前

Re: どこでファイルを分割したらいいか分かりません…

#7

投稿記事 by Cr » 7年前

疑問が解決しました。
どうもありがとうございました。

閉鎖

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