独習ゲーム制作
C++
最終更新:
gamelearning
-
view
C++の概要
C++はCの拡張版であり、オブジェクト指向が追加されたことが最大の違いです。
目次
入出力演算子
C言語では入出力の際にprintf()やscanf()などの入出力関数を用いていましたが、C++では入力演算子>>と出力演算子<<を用います。
練習問題1
従業員の労働時間と時給を入力し、その従業員の合計賃金を表示するプログラムを作成しなさい。(入力プロンプトを表示すること)
クラス
クラスの概念をゲームに例えるなら、
RPGを作るとして、必要なのはキャラクターです。では、そのキャラクターに必要なものと言えば、「攻撃力」や「防御力」、そして、キャラクターが攻撃を仕掛けるときの「ダメージ計算」です。これらをまとめてキャラクターのパラメータとして定義するのがクラスの宣言です。そして、個々のキャラクターを作るのがオブジェクトの宣言です。
これをプログラミングするなら、まず、キャラクターのパラメータを定義するのでクラス名はCharactorです。次に、パラメータである「攻撃力」と「防御力」はint型変数kou, bouと宣言し、「ダメージ計算」は関数damage()と宣言します。そして、実際にキャラクターを作る場合は、charaAやcharaBなどとオブジェクトを宣言します。
これをプログラミングするなら、まず、キャラクターのパラメータを定義するのでクラス名はCharactorです。次に、パラメータである「攻撃力」と「防御力」はint型変数kou, bouと宣言し、「ダメージ計算」は関数damage()と宣言します。そして、実際にキャラクターを作る場合は、charaAやcharaBなどとオブジェクトを宣言します。
クラスの宣言はclassキーワードを用い、次のように宣言します。
class class-name{
/* 非公開関数と変数 */
public:
/* 公開関数と変数 */
}object-list;
/* 非公開関数と変数 */
public:
/* 公開関数と変数 */
}object-list;
文中のclass-nameはクラス名です。object-listはオブジェクトの宣言です。構造体変数と同じで、あとから宣言できるのでここで書く必要はありません。クラス内で宣言されている変数と関数はメンバと呼ばれます。
クラスには公開(public)と非公開(private)という考えがあります。C++のクラスではデフォルトでprivateになっており、外部のプログラムコードからは直接アクセスすることができません。これをカプセル化といいます。publicを宣言することで、それ以降を外部からアクセスすることができるようにします。そして、非公開関数(又は変数)へは公開関数から間接的にアクセスすることができます。
クラスの宣言では関数や変数の宣言を行っただけなので、関数(メンバ関数)は定義されてません。メンバ関数の定義にはスコープ解決演算子(::)を用います。
クラスには公開(public)と非公開(private)という考えがあります。C++のクラスではデフォルトでprivateになっており、外部のプログラムコードからは直接アクセスすることができません。これをカプセル化といいます。publicを宣言することで、それ以降を外部からアクセスすることができるようにします。そして、非公開関数(又は変数)へは公開関数から間接的にアクセスすることができます。
クラスの宣言では関数や変数の宣言を行っただけなので、関数(メンバ関数)は定義されてません。メンバ関数の定義にはスコープ解決演算子(::)を用います。
ret-type class-name :: func-name(parameter-list){
/* 関数の本体 */
}
/* ret-type ⇒ intやvoid, class-name ⇒ クラス名, func-name ⇒ 関数名, parameter-list ⇒ 引数 */
/* 関数の本体 */
}
/* ret-type ⇒ intやvoid, class-name ⇒ クラス名, func-name ⇒ 関数名, parameter-list ⇒ 引数 */
オブジェクトの宣言と使い方は以下のとおりです。
/* オブジェクトの宣言 */
class-name object-list1, object-list2, ...;
class-name object-list1, object-list2, ...;
/* クラスのメンバにアクセスする */
object-list1.func-name();
object-list2.func-name();
object-list1.func-name();
object-list2.func-name();
オブジェクトからクラスのメンバにアクセスする際に、呼び出す関数や変数が同じでもオブジェクトが異なるならば、違うものと表現される。
練習問題2
図書館の図書目録の項目を管理するための、cardという名前のクラスを作成しなさい。このクラスに本のタイトル、著者、在庫冊数を格納します。タイトルと著者を文字列として保存し、在庫冊数を整数として保存します。store()という名前の公開メンバ関数を使用して本の情報を保存し、show()という名前の公開メンバ関数を使用して情報を表示します。このクラスの動作を確認するために、単純なmain()関数を追加しなさい。