合計 昨日 今日

プログラミングの練習のために作ってみました。

自分で作ったゲームや動画、面白いネタをみんなに宣伝しましょう!
また、気軽に作品の感想をコメントで残してあげて下さい。
Name: もるも
[URL]
中級者(11,707 ポイント)
Date: 2016年9月21日(水) 21:47
No: 1
(OFFLINE)

 プログラミングの練習のために作ってみました。

インベーダーぽいゲームです。
ソースコードも入れてあるので、
クラスの設計のアドバイスや、添削してくださると嬉しいです。

よろしくお願いします。
添付ファイル
shooting_game.png
shooting_game.png (8.49 KiB) 表示数: 1571 回
ShootingGame.zip
(2.51 MiB) ダウンロード数: 71 回

Name: peot
[URL]
Date: 2016年9月24日(土) 18:15
No: 2
(OFFLINE)

 Re: プログラミングの練習のために作ってみました。

こんにちは。

ゲーム自体はとても良くできています。
ですが、ソースの中身を見させていただいた際に気になる部分が幾つかありました。
もるもさんも希望されているようなので、素人目ではありますがアドバイスをさせていただきます。


new Controlがdeleteされていません。適切に開放するか、スマートポインタを使えば自動的に開放してくれます。

Characterクラスにいろいろと詰め込みすぎています。プレイヤー、敵、弾、爆発はそれぞれ別のクラスに分けたほうがよいです。また、スコアと残機に関するもの(自分以外の情報もですが)を各キャラクターごとに持っているのはおかしいです。これはControlクラスに移動させるか、これも別クラスとして設定してしまうのがよいでしょう。

Controlクラスからプレイヤー、敵、弾、爆発に関することは、各クラスを作ることでそちらに移動できます。
Control::All()の中身も長大になっているので、分岐ごとに関数化したほうが見やすくなります。
Control::All()以外のメンバ関数はpublicである必要がありません。すべてprivateにしておきましょう。

最後にObjectクラスのアクセサ(set,getのこと)についてですが、人によって意見が分かれるという前提で聞いてください。
メンバ変数にアクセサを用意すること自体は常套なのですが、セッターとゲッターのどちらもが必要になった場合には、その変数が本当にそこにいるべきなのかをよく考えてください。またアクセス先のその動作はこちらが引き受けるべきものかもしれません。どちらにせよセッターゲッター両方が存在するという事はカプセル化されていないという事です。アクセサを介しているから大丈夫という考え方は安易ですし危険だと思います。


以上、参考になれば幸いです。

Name: もるも
[URL]
中級者(11,707 ポイント)
Date: 2016年9月25日(日) 14:40
No: 3
(OFFLINE)

 Re: プログラミングの練習のために作ってみました。

たくさんのアドバイスありがとうございますー。
大変勉強になりました。
少しずつ理解を深めながらやっていこうと思います。
アクセサの件とかどういう形が好ましいのか難しいですね(^^;)

見やすいコードを目指して頑張ります。

Name: もるも
[URL]
中級者(11,707 ポイント)
Date: 2016年12月08日(木) 21:14
No: 4
(OFFLINE)

 Re: プログラミングの練習のために作ってみました。

弾の種類、自機ショットのパワーアップを追加しました。
最初のステージをクリアすると敵の攻撃が強くなります。
添付ファイル
ShootingGame (2).zip
(2.73 MiB) ダウンロード数: 45 回


Return to 作品お披露目掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[2人]