忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

C++のクラスを使う

皆さん始めまして。
私、GES会長と開発部代表者を務めさせて戴いている和佐田雅史と申します。

今後プログラムの技術的な事に関しては卒業まで私が記事を担当する事になりましたので宜しくお願い申し上げます。


     クラスとは?
※今回はクラスを説明するにあたって、構造体という機能を知っているのを前提で説明させていただきます。



 

皆さんは構造体というものを1年生のときに習ったと思います。

キャラクタの構造体の中にHPMPを入れたり、ステータスを入れたりしてデータを管理していたのではないでしょうか?


 

キャラクタの構造体の中にHPMPを入れたり、ステータスを入れたりしてデータを管理していたのではないでしょうか?

 

皆さんも少なからず、構造体に関数を持たせたいと思ったことがあるはずです。

 

 C言語において構造体というのはデータを管理するもので、メンバに関数を持たせたりすることは出来ませんでした。

しかしC++のclassという機能を使うと変数や関数を持たせることが可能になります。

 

キャラクタの攻撃関数だったり、描画処理等をメンバに持たせることが可能です。

構造体でも同じような事は出来ますが、構造体は基本的にデータ集合を扱うもの

クラスはオブジェクトとして管理する事を目的としています。

 

では早速サンプルプログラムを見てみましょう。


// キャラクタベースクラスの定義

class CharacterBase

{

public:

        // メンバ変数

        int Hp;

        int Mp;

 

        // 攻撃力

        int Attackpt;

 

        // 攻撃する関数

        void Attack(int* EnemyHp);

 

        CharacterBase();// コンストラクタ

        ~CharacterBase();// デストラクタ

};


 

     メンバ変数とメソッド

// メンバ変数

int Hp;

int Mp;

 

// 攻撃力

int Attackpt;

 

クラスの中宣言されているHpMpなどの変数をメンバ変数と呼び、定義されている関数をメソッドと呼びます。

 

メンバ変数はpublicにするとクラス内、外部全てアクセス可能になります。

 

     メソッドの定義仕方

基本的にメソッドの定義は.hpp( ヘッダファイル )に書いて、クラスの本体自体はcppファイルに書きます。

 

書式

戻り値 クラス名::メソッド名(引数……)
{
}

 

 

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

// 概要   : 攻撃する関数

// 引数   : 敵のHpへのポインタ

// 戻り値 : なし

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

void CharacterBase::Attack( int* EnemyHp )

{

     ( *EnemyHp ) -= this->Attackpt;

 

     if( ( *EnemyHp ) < 0 )

     {

         MessageBox( NULL , "和佐田をやっつけた!!" , "Victory" , MB_OK );

     }

}


このようにクラスで管理すると、プログラムが組みやすくなるわけです。

プレイヤー初期処理やプレイヤー変数更新処理、プレイヤー描画処理等を一々関数を作ってソース分割なんてしなくても良くなりますしクラス内でグローバルに参照したいならprivate:指定すればクラス内で自由にアクセス可能ですし、外部から参照されない美しい設計のプログラムを書くことが出来ます。


それでは今日の講座はここまでとします。

拍手[0回]

PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]