[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
皆さん始めまして。
私、GES会長と開発部代表者を務めさせて戴いている和佐田雅史と申します。
今後プログラムの技術的な事に関しては卒業まで私が記事を担当する事になりましたので宜しくお願い申し上げます。
☆ クラスとは?
※今回はクラスを説明するにあたって、構造体という機能を知っているのを前提で説明させていただきます。
皆さんは構造体というものを1年生のときに習ったと思います。
キャラクタの構造体の中にHPやMPを入れたり、ステータスを入れたりしてデータを管理していたのではないでしょうか?
キャラクタの構造体の中にHPやMPを入れたり、ステータスを入れたりしてデータを管理していたのではないでしょうか?
皆さんも少なからず、構造体に関数を持たせたいと思ったことがあるはずです。
しかしC++のclassという機能を使うと変数や関数を持たせることが可能になります。
キャラクタの攻撃関数だったり、描画処理等をメンバに持たせることが可能です。
構造体でも同じような事は出来ますが、構造体は基本的にデータ集合を扱うもの
クラスはオブジェクトとして管理する事を目的としています。
では早速サンプルプログラムを見てみましょう。
// キャラクタベースクラスの定義
class CharacterBase
{
public:
// メンバ変数
int Hp;
int Mp;
// 攻撃力
int Attackpt;
// 攻撃する関数
void Attack(int* EnemyHp);
CharacterBase();// コンストラクタ
~CharacterBase();// デストラクタ
};
☆ メンバ変数とメソッド
// メンバ変数
int Hp;
int Mp;
// 攻撃力
int Attackpt;
クラスの中宣言されているHpやMpなどの変数をメンバ変数と呼び、定義されている関数をメソッドと呼びます。
メンバ変数はpublicにするとクラス内、外部全てアクセス可能になります。
☆ メソッドの定義仕方
基本的にメソッドの定義は.hpp( ヘッダファイル )に書いて、クラスの本体自体はcppファイルに書きます。
書式
戻り値 クラス名::メソッド名(引数……)
{
}
//------------------------------------------------------------------
// 概要 : 攻撃する関数
// 引数 : 敵のHpへのポインタ
// 戻り値 : なし
//----------------------------------------------------------------------------
void CharacterBase::Attack( int* EnemyHp )
{
( *EnemyHp ) -= this->Attackpt;
if( ( *EnemyHp ) < 0 )
{
MessageBox( NULL , "和佐田をやっつけた!!" , "Victory" , MB_OK );
}
}
このようにクラスで管理すると、プログラムが組みやすくなるわけです。
プレイヤー初期処理やプレイヤー変数更新処理、プレイヤー描画処理等を一々関数を作ってソース分割なんてしなくても良くなりますしクラス内でグローバルに参照したいならprivate:指定すればクラス内で自由にアクセス可能ですし、外部から参照されない美しい設計のプログラムを書くことが出来ます。
それでは今日の講座はここまでとします。
COMMENT