こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語とC++

現在C言語を用いてシューティングゲームを作成しています。
ゲームを作成している方の中には、CではなくC++で作成している人もいるようなんですが、C++で作成するとどのような違いがあるのでしょうか?

メリットやデメリット、将来性など詳しく教えてもらえると助かります!

投稿日時 - 2009-07-23 11:15:03

QNo.5148562

困ってます

質問者が選んだベストアンサー

規模の大きくまた複雑になるほどC++が有利な形になっていきます。
それはデータと処理を一体の形であるクラスとして考えると全体の処理を考え易くなるからです。
プログラムを記述するときはその前に色々考えを巡らせ構成をチャートなり構造に書きますがそれが少ないほど楽に思えるでしょう。
それがC++のメリットです。その分無駄も多くなるのでメモリ、速度に影響を及ぼすようになります。

Cの場合は熟練するとC++の考え方も取り入れるようになるでしょう。
構造体、共用体を駆使できるようになると非常に楽になります。
クラス定義は存在しませんがNO2さんのように一つ一つ記述するようなことは結構クリア出来ます。
関数も引数や関数自体をポインタとして扱えますので同じ関数なのに別な目的にも利用出来ます。また関数ポインタをテーブルにしてそれを書き換えることでプログラムは同じでも処理を変更することも出来ます。
規模によりCでもC++に近いことは可能ですが作成規模、ハード的な処理速度、メモリ量、OSそれに熟練度 によって選択されるかと思います。

Windows95以降のPCアプリでグラフィックがあるならC++でしょう。
しかしドライバ関連ならC(+asm)ではないでしょうか。
将来でも組み込み系(マイコン相手)はアセンブラ、Cでまともに書けないとC++では目に見えない部分が多くなり破綻しかねません。
決まったクロック数で処理しないといけない場合はC++で書くのは怖いです。
PCアプリ相手ならC++、これからのゲームならC++ですが速度重視ならコード展開してCあるいはアセンブラでループの中を書くとターボが入ったことを実感できるかもしれません。

将来性ですがCで構造体が構築できない人にC++は「とんでも」になる可能性大です。Cで充分結果を残してからならC++は難しくありません。
またその恩恵が理解でしますし良いクラスが定義できるようになるでしょう。
DLLの組み合わせが可能なら処理により適当な言語を用いて動作時に組み合わせることも可能ですので熟練次第でその判断もつくと思います。

余談ですがCでデバックするときデータ構造の変化を見ながらコードで追うと力がつくと思います。

投稿日時 - 2009-08-08 22:58:42

お礼

大変遅くなってしまって申し訳ありません。
とても参考になりました!
C言語がある程度身に付いてきたのでC++に手をつけようかと思います!

投稿日時 - 2009-10-21 21:33:10

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

C++を使うと「出てくる物をクラス化できる」ので、クラス共通の処理は、処理を1つ書くだけで済みます。

例えば、敵や自機や弾の親クラスとして「Objクラス」として基本クラスにして、敵や自機や弾のすべてに重力を働かせる場合、基本クラスに「重力に従って落ちる処理」を1つ書くだけで済みます。

同様に「上に動く」とか「右に動く」とか「爆発する」とかも、基本クラスに1つだけ用意すれば済みます。

「やられたら残機数が減る」とかの「自機のみの処理」は下位クラスの「自機のクラス」にだけ処理を足せばよいです。

C++のクラスを使用すると上記のように楽に書けますが、Cの場合はクラスが使えないので「敵は敵の専用ルーチン」「自機は自機の専用ルーチン」を1つ1つ書かなければなりません。

投稿日時 - 2009-07-23 13:02:17

ANo.1

ゲーム製作用のライブラリがC++を前提に記述されていることが多いです。それらを利用するにはC++でないといけないですね。
また、クラスを上手く使うと洗練されたプログラムができます。ただし、構造が複雑になる傾向もありますので注意してください。例えば、敵キャラをクラス化してしまうと、オブジェクトの生成や消滅をクラスを使って管理できるので楽です。

一般的にはC++で作っている方が多いでしょうね。ただ、あまりC++特有の機能をごっそり使うというよりは触り程度で。

投稿日時 - 2009-07-23 11:26:21

あなたにオススメの質問