<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/gamelearning/">
    <title>独習ゲーム制作</title>
    <link>http://w.atwiki.jp/gamelearning/</link>
    <atom:link href="https://w.atwiki.jp/gamelearning/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>独習ゲーム制作</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-04-13T19:48:03+09:00</dc:date>
    <utime>1271155683</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/gamelearning/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamelearning/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamelearning/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamelearning/pages/13.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamelearning/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/gamelearning/pages/3.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/gamelearning/pages/15.html">
    <title>C++ part3</title>
    <link>https://w.atwiki.jp/gamelearning/pages/15.html</link>
    <description>
      *クラスの概要
目次
#contents()

**仮引数を受け取るコンストラクタ
コンストラクタ関数には、引数を渡すことができ、そのクラスのオブジェクトを宣言する際に引数を指定します。
#divclass(bor){
…
class myclass｛
　　int a;
public:
　　myclass(int x);
…
｝;


myclass::myclass(int x)｛
a = x;
｝
…


int main()｛
myclass ob(4);
…
return 0;
｝
}

***練習問題5
作成持にコンストラクタで、現在のシステム時刻と日付を仮引数として受け取るt_and_dという名前のクラスを作成しなさい。このクラスに、受け取った時刻と日付を画面に表示するメンバ関数を含めます（時刻と日付を取得および表示するには、標準ライブラリの時刻関数と日付関数を使用します）。
#openclose(show=自己解答,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
/* Cのライブラリは先頭にcをつけて「.h」
を取って宣言することができる */
#include &lt;ctime&gt;
using namespace std;

class t_end_d{
	/* time_tはtime()関数の値を格納する
	変数の変数型です。time_t型はtime.hの
	中で宣言されています。 */
	time_t Ntime;
public:
	/* 仮引数を受け取るコンストラクタです */
	t_end_d(time_t t);
	void show();
};
t_end_d::t_end_d(time_t t){
	Ntime = t;
}
void t_end_d::show(){
	/* ctime()関数はそのままでは読むこと
	のできないtime()関数の値を、読むこと
	のできる文字列に変換します。 */
	cout &lt;&lt; ctime(&amp;Ntime);
}
int main(){
	time_t t;
	t = time(NULL);
	/* 引数をもったオブジェクトを宣言し
	てます。 */
	t_end_d ob(t);
	ob.show();
	return 0;
}
}}
#divclass(bor2){
Fri Apr 02 20:22:42 2010
/* 金曜日　4月2日　20時22分42秒　2010年 */
}
}

**継承　その１
C++には、ひとつのクラスが他のクラスの性質を受け継ぐ、&amp;bold(){継承}という機構があります。継承される側（渡す側）のクラスを&amp;bold(){基本クラス}といい、継承する側（受ける側）を&amp;bold(){派生クラス}と言います。通常、基本クラスを最初に定義し、内容としては最も汎用的または土台になるような性質を記述します。そして、それに続いて特融の性質を持った派生クラスを定義します。
#divclass(bor){
class derived-class-name : access-specifier base-class-name｛
…
｝
/* derived-class-name　→　派生クラス名, access-specifier　→　public/private
/protected, base-class-name　→　基本クラス名 */
}
access-specifierでpublicを宣言した場合、基本クラスのpublicの部分には直接アクセスできるが、privateの部分は継承していても、直接アクセスすることは出来ません。基本クラスの非公開変数にアクセスしたいなら、基本クラスの公開関数などからアクセスするしかありません。
#openclose(show=サンプル,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
using namespace std;

/* 基本クラス */
class base{
	int a;
public:
	/* コンストラクタで変数aを10に設定 */
	base();
	int get_a();
};

/* 派生クラス */
class derived : public base{
public:
	int b;
	void set_b();
};
base::base(){
	a = 10;
}
int base::get_a(){
	return a;
}
void derived::set_b(){
	/* derivedクラスはbaseクラスを継承しているが
	baseクラスの変数aはprivateなので直接アクセス
	することができず、get_a()関数からアクセスして
	いる。*/
	b = get_a();
}

int main(){
	derived ob;
	ob.set_b();
	cout &lt;&lt; &quot;派生クラスの変数bは&quot; &lt;&lt; ob.b 
		&lt;&lt; &quot;です。\n&quot;;
	return 0;
}
}}
#divclass(bor2){
派生クラスの変数bは10です。
}
}
**オブジェクトポインタ
オブジェクトへのポインタを作成し、クラスへアクセスする際にはドット演算子の代わりに&amp;bold(){アロー演算子(-&gt;)}を用います。オブジェクトのポインタの宣言の仕方は通常のポインタとほとんど同じです。
#divclass(bor){
…
class myclass｛
…
public:
int a;
｝;
…

int main()｛
myclass ob;
/* myclass型のポインタ変数を宣言 */
&amp;bold(){myclass *p;}
/* ポインタに＆演算子を用いてobオブジェクトのアドレスを代入 */
&amp;bold(){p = &amp;ob;}
/* pにはobのアドレスが入っているのでp-&gt;aはob.aと同じ意味になる */
cout &lt;&lt; &amp;bold(){p-&gt;a;}
return 0;
｝
}

**クラス、構造体、共用体の関連
クラス、構造体、共用体の宣言はとても似ています。また[[C++]]では、構造体や共用体は拡張され、クラスとさらに似た機能をもっています。
:構造体の追加機能|
-メンバ関数
-コンストラクタ関数
-デストラクタ関数

これが構造体の宣言です。
#divclass(bor){
struct &amp;italic(){type-name}｛
/* 公開関数とデータメンバ */
private:
/* 非公開関数とデータメンバ */
｝&amp;italic(){object-list};
/* &amp;italic(){type-name}→構造体の型名 */
}
クラスと構造体の違いは、構造体は初期でpublicになっており、privateを宣言するとによって、非公開メンバにすることができます。実際に構造体を用いる場合は、これまで通りデータメンバだけ宣言する場合が多いです。
***共用体
&amp;bold(){共用体}も構造体と同じく拡張されており、メンバ関数、コンストラクタ関数、デストラクタ関数を宣言することができ、初期でpublicです。また、C++の共用体にはいくつかの制限があります。
:C++の共用体の制限|
-継承することも、基本クラスにすることもできない。
-staticメンバを持つことができない。
-コンストラクタやデストラクタを持つオブジェクトを含むことができない。
-仮想メンバ関数を持つことができない。

***無名共用体
型名なしの特殊な共用体を無名共用体といいます。特徴は、同じメモリ位置を共有すること以外、メンバ変数を通常の変数と同じように使うことができることです。
#divclass(bor){
union｛ /* 無名共用体 */
int i;
char ch[4];
｝;
i = 10; /* 変数iにアクセスし、ディレクトリを変更する */
ch[0] = &#039;X&#039;;
}
無名共用体には、上の制限とさらに制限が追加されています。
:無名共用体の制限|
-グローバル無名共用体は、staticとして宣言しなければならない。
-非公開メンバを含めることができない。
-メンバ名は、同じスコープ内の他の識別子と重複してはいけない。

**インライン関数
インライン関数は、実際に呼び出す代わりに、各呼び出しごとにインラインで展開する関数を定義します。通常の関数はmain()関数などに記述すると単純に呼び出す処理でしかないのに対して、インライン関数は関数内の処理をコード中に直接埋め込みます。これによって、通常の関数より処理が速くなます。しかし、インライン関数は用いるほどにプログラム自体が大きくなってしまうので、一般に短い関数の場合のみインライン関数として宣言します。
#divclass(bor){
inline ret-type func-name(parameter-list)｛
…
｝
/* ret-type → int,void等,  func-name → 関数名, parameter-list → 引数 */
}

**自動インライン化
クラスのメンバ関数の内容が短い場合、クラス内でメンバ関数の宣言から定義まで行うことによって、&amp;bold(){自動インライン化}されます。
#divclass(bor){
＃include &lt;iostream&gt;
using namespace std;

class myclass｛
int a, b;
public:
…
&amp;italic(){/* int kakeru(int a, int b);までが宣言で、｛｝で囲った内容が定義です */}
&amp;bold(){int kakeru(int a, int b)｛return a*b｝;}
｝;
…
}


#center(){{{[[1&gt;C++]] [[2&gt;C++ part2]] 3}}}    </description>
    <dc:date>2010-04-13T19:48:03+09:00</dc:date>
    <utime>1271155683</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamelearning/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/gamelearning/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
-&amp;openclose2(show=C++){ [[1&gt;C++]] / [[2&gt;C++ part2]] / [[3&gt;C++ part3]]}
-Windows API
-DirectX


----

**リンク
-[[GAME Watch&gt;&gt;http://game.watch.impress.co.jp/]]
-[[ゲームのしくみ研究委員会&gt;http://www.n2gdl.net/]]

**他のサービス
-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
-[[無料ブログ作成&gt;&gt;http://atword.jp]]
-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]
-[[無料ソーシャルプロフ&gt;&gt;http://sns.atfb.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)    </description>
    <dc:date>2010-04-13T00:25:20+09:00</dc:date>
    <utime>1271085920</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamelearning/pages/14.html">
    <title>C++ part2</title>
    <link>https://w.atwiki.jp/gamelearning/pages/14.html</link>
    <description>
      *C++の概要

目次
#contents()

**CとC++の違い
:[[C++]]は関数を引数なしでプロトタイプする際に、voidを記述しなくていい。|
例
#divstyle(border:1px #ccc solid;margin-right:30px;){
/* C言語の場合 */
int main(void)
/* C++の場合 */
int main()
}
:Cでは任意だったプロトタイプ宣言をC++では必ず記述しなければならない。|
#divstyle(border:1px #ccc solid;margin-right:30px;){
/* sum関数がmain関数の後に宣言されているので
プロトタイプ宣言をしないといけない。 */
&amp;bold(){int sum(int b);}　←プロトタイプ宣言
int main()｛
int a;
a=sum(10);
…
｝
sum(int b)｛
…
｝
}
:C++ではvoid以外の戻り値型を持つ関数は必ずreturn文がないといけない。|
#divstyle(border:1px #ccc solid;margin-right:30px;){
int sum(int b)｛
int a;
…
&amp;bold(){return a;}
｝
int main()｛
…
c=sum(10);
&amp;bold(){return 0;}
｝
}
:C++ではローカル変数を先頭以外のどこで宣言してもいい。|
#divstyle(border:1px #ccc solid;margin-right:30px;){
int main()｛
&amp;bold(){int a=10;}
cout &lt;&lt; a;
&amp;bold(){char word=&#039;c&#039;;}
cout &lt;&lt; word;
return 0;
｝
}
:C++ではブール値（真／偽）を保存するboolデータ型が定義されている。|
#divstyle(border:1px #ccc solid;margin-right:30px;){
int main()｛
bool shingi;

shingi = false;

if(shingi) cout &lt;&lt; &quot;真&quot;;
else cout &lt;&lt; &quot;偽&quot;;

return 0;
｝
/* 出力は「偽」になる */
}

**関数のオーバーロード
関数を多重定義することを&amp;bold(){関数のオーバーロード}といいます。これもC++の重要な機能です。
オーバーロードするために必要な条件は、
-仮引数のデータ型が異なる
-仮引数の個数が異なる
です。
#divclass(bor){
…
void f1(int a);
void f1(int a, int b);
void f1(double a);

int main()｛
/* void f1(int a)が呼び出されます */
f1(10);
/* void f1(int a, int b)が呼び出されます */
f1(10,20);
/* void f1(double a)が呼び出されます */
f1(10.01);

return 0;
｝
}

***練習問題3
引数として受け取った2つの数値のうち、小さい方返すmin()という名前の関数を作成しなさい。min()関数をオーバーロードし、それぞれ文字、整数、倍精度浮動小数点数を引数として受け取るようにしなさい。
#openclose(show=自己解答,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
using namespace std;
/* 関数の多重定義によってオーバーロードしている */
char min(char *word1, char *word2);
int min(int num1, int num2);
double min(double num1, double num2);

int main(){
	cout &lt;&lt; &quot;文字 : &quot; &lt;&lt; min(&#039;d&#039;, &#039;a&#039;) &lt;&lt; &quot;\n&quot;;
	cout &lt;&lt; &quot;整数 : &quot; &lt;&lt; min(654, 456) &lt;&lt; &quot;\n&quot;;
	cout &lt;&lt; &quot;倍精度浮動小数点数 : &quot; 
		&lt;&lt; min(98.7, 78.9) &lt;&lt; &quot;\n&quot;;

return 0;
}

char min(char *word1, char *word2){
/* strcmp()は二つの文字を比較し、最初の引数が
大きいなら正、小さいなら負を返す関数 */
	if(strcmp(word1, word2)==0) return 0;
	else if(strcmp(word1, word2)&lt;0)
		return *word1;
	else return *word2;
}

int min(int num1, int num2){
/* (?)は条件演算子といって、(?)の左側の条件が正しいなら
(:)の左側を評価し、そうじゃないなら右側を評価する */
	return num1&lt;num2 ? num1 : num2;
}

double min(double num1, double num2){
	return num1&lt;num2 ? num1 : num2;
}
}}
#divclass(bor2){
文字 : a
整数 : 456
倍精度浮動小数点数 : 78.9
}
}
*クラスの概要
**コンストラクタ関数とデストラクタ関数
C++ではクラスのメンバ変数を初期化するために&amp;bold(){コンストラクタ関数}を用います。コンストラクタ関数はそのクラスのオブジェクトが作成されるたびに自動的に初期化を行ってくれます。コンストラクタ関数は戻り値型なしにクラスと同じ名前で宣言します。
コンストラクタ関数とは逆にオブジェクトが破棄される際に呼び出され、メモリーの解放などを行うのが&amp;bold(){デストラクタ関数}です。デストラクタ関数はコンストラクタ関数とほとんど同じで、先頭にチルダ（～）をつけて宣言します。
#divclass(bor){
class myclass{
int a;
public:
&amp;bold(){myclass();}
&amp;bold(){~myclass();}
void f1();
｝;

myclass::&amp;bold(){myclass()}｛
a = 10;
｝
myclass::&amp;bold(){~myclass()}｛
…
｝
}

***練習問題4
経過時間を測定するストップウォッチをまねて、stopwatchという名前のクラスを作成しなさい。コンストラクタを使って初期の経過時間を0に設定します。start()とstop()という2つのメンバ関数を作成し、タイマーをそれぞれオンまたはオフに設定します。また、show()というメンバ関数を作成し、経過時間を表示します。さらに、デストラクタ関数を作成して、stopwatchオブジェクトを破棄する際に経過時間を自動的に表示させます（単純にするために、時間を秒数で表示します）。
#openclose(show=自己解答,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
#include &lt;ctime&gt;
using namespace std;

class stopwatch{
	double sta, end;
public:
/* コンストラクタ関数 */
	stopwatch();
/* デストラクタ関数 */
	~stopwatch();
	void start();
	void stop();
	void show();
};
stopwatch::stopwatch(){
	sta = end = 0;
}
stopwatch::~stopwatch(){
	cout &lt;&lt; &quot;デストラクタ関数が呼び出されました&quot; 
		&lt;&lt; &quot;\n&quot;;
	show();
}
void stopwatch::start(){
/* CLOCKS_PER_SECで割ることによって秒単位
にすることができる */
/* (double)はキャスト演算子によって、clock_t型から
double型に変換している。 */
	sta = (double)clock()/CLOCKS_PER_SEC;
}
void stopwatch::stop(){
	end = (double)clock()/CLOCKS_PER_SEC;
}
void stopwatch::show(){
	cout &lt;&lt; &quot;経過時間 : &quot; &lt;&lt; end-sta 
		&lt;&lt; &quot;秒&quot; &lt;&lt; &quot;\n&quot;;
}
int main(){
	stopwatch tim;
	char c;
	tim.start();
	cout &lt;&lt; &quot;文字を入力してください。&quot; &lt;&lt; &quot;\n&quot;;
	cin &gt;&gt; c; 
	tim.stop();
	tim.show();
	return 0;
}
}}
#divclass(bor2){
文字を入力してください。
a
経過時間 : 8.132秒
デストラクタ関数が呼び出されました
経過時間 : 8.132秒
}
}


#center(){{{[[1&gt;C++]] 2 [[3&gt;C++ part3]]}}}    </description>
    <dc:date>2010-04-05T18:24:59+09:00</dc:date>
    <utime>1270459499</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamelearning/pages/13.html">
    <title>C++</title>
    <link>https://w.atwiki.jp/gamelearning/pages/13.html</link>
    <description>
      *C++の概要
C++はCの拡張版であり、オブジェクト指向が追加されたことが最大の違いです。

目次
#contents()

**入出力演算子
C言語では入出力の際にprintf()やscanf()などの入出力関数を用いていましたが、C++では&amp;u(){入力演算子&amp;bold(){&gt;&gt;}}と&amp;u(){出力演算子&amp;bold(){&lt;&lt;}}を用います。
#openclose(show=サンプル表示,border:0;){
#highlight(linenumber){{
/* ヘッター↓ */
#include &lt;iostream&gt;
/* 名前空間↓ */
using namespace std;
int main(){
  char c;
  cout &lt;&lt; &quot;Input : &quot;;
/* cinはistream型のグローバル変数 */
  cin &gt;&gt; c;
/* coutはostream型のグローバル変数 */
/* endlは改行*/
  cout &lt;&lt; &quot;Input Charactor is &quot; &lt;&lt; c &lt;&lt; endl;
  return 0;
}
}}
#divclass(bor2){
&amp;bold(){結果}
Input : a
Input Charactor is a
}
}

***練習問題1
従業員の労働時間と時給を入力し、その従業員の合計賃金を表示するプログラムを作成しなさい。（入力プロンプトを表示すること）
#openclose(show=自己解答,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
using namespace std;

int main(){
int time, salary, payHour;

cout &lt;&lt; &quot;労働時間(何時間)、時給&quot; &lt;&lt; endl;
/* 入力演算子を間に書くことによって、
2つ以上入力させることができる */
cin &gt;&gt; time &gt;&gt; payHour;
salary = payHour * time;
cout &lt;&lt; &quot;合計賃金：　&quot; &lt;&lt; salary &lt;&lt; endl;

return 0;
}
}}
#divclass(bor2){
&amp;bold(){結果}
労働時間（何時間）、時給
8
900
合計賃金：　7200
}
}

**クラス
クラスの概念をゲームに例えるなら、
#divclass(bor){
RPGを作るとして、必要なのはキャラクターです。では、そのキャラクターに必要なものと言えば、「攻撃力」や「防御力」、そして、キャラクターが攻撃を仕掛けるときの「ダメージ計算」です。これらをまとめてキャラクターのパラメータとして定義するのがクラスの宣言です。そして、個々のキャラクターを作るのがオブジェクトの宣言です。
これをプログラミングするなら、まず、キャラクターのパラメータを定義するのでクラス名はCharactorです。次に、パラメータである「攻撃力」と「防御力」はint型変数kou, bouと宣言し、「ダメージ計算」は関数damage()と宣言します。そして、実際にキャラクターを作る場合は、charaAやcharaBなどとオブジェクトを宣言します。
}
クラスの宣言はclassキーワードを用い、次のように宣言します。
#divclass(bor){
class &amp;italic(){class-name}｛
/* 非公開関数と変数 */
public:
/* 公開関数と変数 */
｝&amp;italic(){object-list};

}
文中の&amp;italic(){class-name}はクラス名です。&amp;italic(){object-list}はオブジェクトの宣言です。構造体変数と同じで、あとから宣言できるのでここで書く必要はありません。クラス内で宣言されている変数と関数はメンバと呼ばれます。
クラスには&amp;bold(){公開（public）}と&amp;bold(){非公開（private）}という考えがあります。C++のクラスではデフォルトでprivateになっており、外部のプログラムコードからは直接アクセスすることができません。これを&amp;bold(){カプセル化}といいます。publicを宣言することで、それ以降を外部からアクセスすることができるようにします。そして、非公開関数（又は変数）へは公開関数から間接的にアクセスすることができます。
クラスの宣言では関数や変数の宣言を行っただけなので、関数（メンバ関数）は定義されてません。メンバ関数の定義には&amp;bold(){スコープ解決演算子（：：）}を用います。
#divclass(bor){
ret-type &amp;italic(){class-name} :: &amp;italic(){func-name}(&amp;italic(){parameter-list})｛
/* 関数の本体 */
｝
/* ret-type ⇒ intやvoid, class-name ⇒ クラス名, func-name ⇒ 関数名, parameter-list ⇒ 引数 */
}

オブジェクトの宣言と使い方は以下のとおりです。
#divclass(bor){
/* オブジェクトの宣言 */
class-name object-list1, object-list2, ...;

/* クラスのメンバにアクセスする */
object-list1.func-name();
object-list2.func-name();
}
オブジェクトからクラスのメンバにアクセスする際に、呼び出す関数や変数が同じでもオブジェクトが異なるならば、違うものと表現される。
#openclose(show=サンプル表示,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
using namespace std;

/* クラスCharactorの宣言 */
class Charactor{
int kou,bou,hp;
public:
/* 変数を初期化する関数 */
	void init();
/* パラメータを設定する関数 */
	void set_para();
/* ダメージ計算をする関数 */
	void damage(int ko);
/* 攻撃力の値を返します */
	int get_kou();
/* HPの値を返します。 */
	int get_HP();
};  /* ←クラスの宣言の場合、最後にセミコロン
をつけないといけない。 */
/* 宣言した関数の定義を行っています。 */
void Charactor::init(){
	kou = 0;
	bou = 0;
	hp = 0;
}
void Charactor::set_para(){
	cout &lt;&lt; &quot;攻撃力 : &quot;;
	cin &gt;&gt; kou;
	cout &lt;&lt; &quot;防御力 : &quot;;
	cin &gt;&gt; bou;
	cout &lt;&lt; &quot;HP : &quot;;
	cin &gt;&gt; hp;
}
void Charactor::damage(int ko){
	hp -= ko/bou;
}
int Charactor::get_kou(){
	return kou;
}
int Charactor::get_HP(){
	return hp;
}
/* main関数 */
int main(){
	Charactor charaA, charaB;

	charaA.init();
	charaB.init();
	cout &lt;&lt; &quot;キャラAのパラメータ&quot; &lt;&lt; endl;
	charaA.set_para();
	cout &lt;&lt; &quot;キャラBのパラメータ&quot; &lt;&lt; endl;
	charaB.set_para();
	cout &lt;&lt; &quot;キャラAの攻撃...&quot; &lt;&lt; endl;
/* キャラAのダメージ計算にキャラBの攻撃力の値を
渡しています。 */
	charaA.damage(charaB.get_kou());
	cout &lt;&lt; &quot;キャラBの攻撃...&quot; &lt;&lt; endl;
/* キャラBのダメージ計算にキャラAの攻撃力の値を
渡しています。 */
	charaB.damage(charaA.get_kou());
	cout &lt;&lt; &quot;キャラAのHP : &quot; 
		&lt;&lt;charaA.get_HP() &lt;&lt; endl;
	cout &lt;&lt; &quot;キャラBのHP : &quot; 
		&lt;&lt; charaB.get_HP() &lt;&lt; endl;

	return 0;
}
}}
#divclass(bor2){
&amp;bold(){結果}
キャラAのパラメータ
攻撃力 : 10
防御力 : 5
HP : 23
キャラBのパラメータ
攻撃力 : 12
防御力 : 3
HP : 45
キャラAの攻撃...
キャラBの攻撃...
キャラAのHP : 21
キャラBのHP : 42
}
}

***練習問題2
図書館の図書目録の項目を管理するための、cardという名前のクラスを作成しなさい。このクラスに本のタイトル、著者、在庫冊数を格納します。タイトルと著者を文字列として保存し、在庫冊数を整数として保存します。store()という名前の公開メンバ関数を使用して本の情報を保存し、show()という名前の公開メンバ関数を使用して情報を表示します。このクラスの動作を確認するために、単純なmain()関数を追加しなさい。
#openclose(show=自己解答,border:0;){
#highlight(linenumber){{
#include &lt;iostream&gt;
#include &lt;cstring&gt;
using namespace std;

class card{
	char title[50];
	char author[20];
	int num;
public:
	void store(char *T, char *A, int N);
	void show();
};
/* 引数には文字列を渡すためにポインタを用いている */
void card::store(char *T, char *A, int N){
/* strcpy()は文字列をコピーするC言語の関数 */
	strcpy(title, T);
	strcpy(author, A);
	num = N;
}

void card::show(){
	cout &lt;&lt; &quot;タイトル : &quot; &lt;&lt; title &lt;&lt; &quot;\n&quot;;
	cout &lt;&lt; &quot;著者 : &quot; &lt;&lt; author &lt;&lt; &quot;\n&quot;;
	cout &lt;&lt; &quot;在庫冊数 : &quot; &lt;&lt; num &lt;&lt; &quot;\n&quot;;
}

int main(){
	card book1, book2;

	book1.store(&quot;Homunculus&quot;, &quot;Yamamoto&quot;, 5);
	book2.store(&quot;ZETMAN&quot;, &quot;katsura&quot;, 10);
	book1.show();
	book2.show();

	return 0;
}
}}
#divclass(bor2){
タイトル : Homunculus
著者 : Yamamoto
在庫冊数 : 5
タイトル : ZETMAN
著者 : katsura
在庫冊数 : 10
}
}

#center(){{{1 [[2&gt;C++ part2]] [[3&gt;C++ part3]]}}}    </description>
    <dc:date>2010-04-05T18:20:47+09:00</dc:date>
    <utime>1270459247</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamelearning/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/gamelearning/pages/1.html</link>
    <description>
      **&amp;bold(){&amp;wikiname()}へようこそ
-当サイトではゲーム制作について管理人自らが独学で学んだことを掲載していきたいと思います。
-プログラミングが中心ですが、3DCGなども含めて総合的に勉強していきたいと思います。
-最終的にはWindowsで動く3DCGのゲームを実際に作ることが目標です。

**今わかっているゲーム制作に必要な知識
-C/C++
-DirectX
-Windows API
-3DCG
-「三次元の座標」「三次元のベクトル」「行列」「三角関数」「ラジアン」等、数学知識
-物理

**落書き
#ref(IMG.gif,,center)    </description>
    <dc:date>2010-03-27T17:50:52+09:00</dc:date>
    <utime>1269679852</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/gamelearning/pages/3.html">
    <title>右メニュー</title>
    <link>https://w.atwiki.jp/gamelearning/pages/3.html</link>
    <description>
      #areaedit(only=editable)
**更新履歴
#recent(20)


#areaedit(end)    </description>
    <dc:date>2010-03-23T21:47:58+09:00</dc:date>
    <utime>1269348478</utime>
  </item>
  </rdf:RDF>
