練習として、ぷよぷよ風ゲームを作ってみました。気になった点や、「ここが改善できる」という点をご指摘ください。設計の話から、push_backをemplace_backにするというような点まで何でも構いません。個人的にはGame::BlockDrop()関数の前半の処理がやや醜く感じるのと、Draw()で現在のぷよとボードのぷよのインデックスの指定がややこしくなってしまっているのが気がかりです。ソースは添付ファイルにも同梱しましたが、こちらにも載せます。"画像の読み込みに失敗しました。実行してませんのであしからず。ダウンロードすらしてません。それらをしないとわからない改善点は私は今は述べません。ソースコードを流し見して。別に、この程度のゲームであれば、このままでもいいと思ったのは事実です。実際はもっと処理を抽象化して分散できる。Gameというシングルトンの枠に全て詰め込むのであれば、Cで書くのと何も変わらない。ファイルを分割しないのか。入力もゲームもシングルトンなのか。256ではだめなのか。C++11を使うならenumハックは不要なはず。};これに至ってはenumを使う必要性がわからない。};名前空間を汚染するenumを使うのは避けるべきである。classを知っているのに使わないのは何故か。nullptr);}this->を使うのか使わないのか統一すべき。同様に、ブロック文を使う時と使わない時がある。一行の時だけ省略するのかと思ったら、一行でもつけているところがある。言えば一行でも改行を入れるのであればかえって読みづらい。ブロック文を書くのと書かないのでは挙動が根本的に違う。個人的には必ず書くことを奨める。delete;マクロは使うべきではない。リフレクションの代替に目を瞑るとしても、これらは頂けない。使うなら使うで使い終わったらundefすべき。そこで今回のコードが終わるとしても、必ず書く癖をつけるべき。それと、例外を使うのにassertをそこで使う必要はあるのか。詳しくは処理を読んでないですけど、目についたのはこの辺。根本的に設計を変えるべきかは私は判断しないですが、C++で書く必要はないと思った。5年前>新ゝ月さん返信ありがとうございます。ここまで詳しく意見をいただけるとは思っていませんでした。それぞれについての私の考えは以下です。ファイルを分割しないのか。これはすいません、追加追加でそのままになっていて、分割するのを見過ごしていました。入力もゲームもシングルトンなのか。256ではだめなのか。C++11を使うならenumハックは不要なはず。};これに至ってはenumを使う必要性がわからない。どちらもタイプの手間を減らし、インデントされることで定数である意図をはっきりさせたつもりですが、たしかに逆に意図が不明瞭になってしまったかもしれません。Board::Empty)になるだけでほとんど問題ないですね。if文で条件式を書かないやり方(if(a)のような)にこだわりすぎていました。};名前空間を汚染するenumを使うのは避けるべきである。classを知っているのに使わないのは何故か。これも、数値として使用するためでしたが、上の方は無名名前空間で囲うべきでした(というより今回の場合WinMain関数と#include以外囲うべきですね)。下の方は、こちらも数値として比較に使うのでenumとして持っていました。してもスコープは同じクラスなので。nullptr);}this->を使うのか使わないのか統一すべき。同様に、ブロック文を使う時と使わない時がある。一行の時だけ省略するのかと思ったら、一行でもつけているところがある。言えば一行でも改行を入れるのであればかえって読みづらい。ブロック文を書くのと書かないのでは挙動が根本的に違う。個人的には必ず書くことを奨める。this->は関数は使用して変数は使用しないことで統一しました。ブロック文は、基本的には1行の時のみ省略し、for文の中のif文は書くようにしていましたが...ルールが複雑ですね。書くようにしたいと思います。delete;マクロは使うべきではない。リフレクションの代替に目を瞑るとしても、これらは頂けない。使うなら使うで使い終わったらundefすべき。そこで今回のコードが終わるとしても、必ず書く癖をつけるべき。それと、例外を使うのにassertをそこで使う必要はあるのか。この2つのマクロは、ゲーム関連の大規模なプロジェクトで見かけて便利だと思ったので使ってみましたが...そうですね、少なくともundefはするようにしたいと思います。例外とassertの混在は、例外の方はデバッグ時もリリース時も原因を通知してプログラムを終了させ、assertはデバッグ中は終了させるがリリース時は無視するという風にしたかったからです。画像が見つからないときにabortの画面でfileやlineが表示されてもユーザーは困るだろうと思ったので...。一通りリファクタリングはしたつもりでしたが、やはり1人で書いていると結構抜けがありますね...。