徒然なるままに。サハラ砂漠で大絶叫 第二部

ジェントルの日々 前からもってたIDに引越ししてみました。

クラスのお話。

久々の書き。C++のクラスについてです。階級じゃないです。

とりあえず構造体との比較をメインにするので、ちょっとだけ知識がいるかもしれません。

クラスの一番最初にかいてあるだろう利点の「関数をメンバとして含めることができる」を使ってみます。

ここではモグラ叩きっぽいゲームをつくるとしましょう。

モグラの動作のみを扱うクラスを
class MOGURA{
int x;
int y; // モグラの出現位置
int appr; // モグラの出現タイミング
int dappr; // モグラの隠れるタイミング
int stat; // モグラの状態
int size; // モグラの大きさ
public:
MOGURA(); // モグラの初期設定
~MOGURA(); // モグラの後処理

void set(int pos_x, int pos_y, int appear, int span);
// モグラの動作設定

void attack(int pos_x, int pos_y);
// 当たり判定&当たり動作(引数はクリック座標)

void tick(int time);
// モグラに現在の時間を知らせる

void draw(); // モグラの描画
};
(メンバ関数のコードは省略)

とかやって作っておきます。


以下、構造体との比較。
(比較にはsetとかset_moguraとかの関数使ってますが、これは引数から出現位置、出現時間等を代入するための関数です。)

構造体と関数を用いると関数は引数に構造体への参照を取らないといけないので、コードの見た目としては、「関数によって構造体を操作する」って感じになるとおもいます。
typedef struct{
int x;
int y; // モグラの出現位置
int appr; // モグラの出現タイミング
int dappr; // モグラの隠れるタイミング
int stat; // モグラの状態
int size; // モグラの大きさ
}MOGURA;

void set_mogura(MOGURA* m, int pos_x, int pos_y, int appear, int span);
// モグラの動作設定

//--------------------------------------------------------------//

MOGURA* m = (MOGURA*)malloc(sizeof(MOGURA));

set_mogura(m, x, y, appear, span);
こんな感じ?
それに対して、クラスを用いると「その変数(オブジェクト)に含まれる機能を使う」といった感じの書き方になります。
// クラス宣言は上記参照
//--------------------------------------------------------------//

MOGURA* m = new MOGURA; // MOGURAのオブジェクト作成

m->set(x, y, appear, span);
この書き方のほうが上よりわかりやすいと思いません?(変数名のせいかもしれないけど)

また、クラスにはコンストラクタ・デストラクタといった機能が付いているので、書き方がさらに楽になったりします。
それはまた次回以降に。

※学生の浅い知識で書いています。問題点等ありましたら、コメントで指摘してもらえるとうれしいです。

コメント

どもども。勉強になるわ〜

てかまあnewとかdeleteとかの使い方もよくわかってなかったりするんだけどな〜(メモリ領域の確保と解放ってのはわかるぜ?)

メモリ領域が足りなくなるのを防ぐために使うと考えればおk?じゃなきゃ存在価値が分からんからな。あくまで素人の推測だけど。

あと考えられるのが、処理の高速化とか全体のサイズ削減とか?う〜む

  • 2008/02/22(金) 02:43:07 |
  • URL |
  • HAL226 #KD5XUSzs
  • [ 編集]

>newとdelete
今回のnewは今後、モグラの数を増やすための準備みたいなもの。MOGURA*型配列用意して、表示が終わったモグラをdeleteとかやるつもり。

  • 2008/02/22(金) 02:50:37 |
  • URL |
  • hachie #-
  • [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://hogeho.blog63.fc2.com/tb.php/58-5551edc8
この記事にトラックバックする(FC2ブログユーザー)

ホームページ アフィリエイト レンタルサーバー FC2ブログ