見出し画像

C++でキャラクター図鑑を作りたい.03


前書き

こんにちは、みかんです。
前回に引き続きキャラクター図鑑プログラムを書いていきたいと思います。

キャラクターの情報を表示する

クラスにまとめる

先ず、キャラクターの情報を表示するためにクラス作りました。
※Character.h

class Character {
private:
	int subNum;		//キャラクターの引数

	//キャラクター変更
	void ChangeCharacter(int &num);
public:
	void Init();	//初期化
	void Step();	//実行
	void Draw();	//描画
};

クラスの定義
※Character.cpp

void Character::Init() {
	subNum = 0;
}

void Character::Step() {
	ChangeCharacter(subNum);
}

void Character::Draw() {
	//図鑑番号,名前,レベル
	DrawFormatString(0, 0, GetColor(255, 255, 255), "No.%d %s Lv.%d", chara[subNum].number, chara[subNum].name, chara[subNum].level);
	//タイプ
	DrawFormatString(0, 16, GetColor(255, 255, 255), "%s %s", TypeName[chara[subNum].type[0]], TypeName[chara[subNum].type[1]]);
	//種族値
	DrawFormatString(0, 48, GetColor(255, 255, 255), "種族値:H%d A%d B%d C%d D%d S%d", chara[subNum].h_Race,
		chara[subNum].a_Race, chara[subNum].b_Race, chara[subNum].c_Race, chara[subNum].d_Race, chara[subNum].s_Race);
	//特性
	DrawFormatString(0, 80, GetColor(255, 255, 255), "特性:%s", TraitsName[chara[subNum].traits]);
	//持ち物
	DrawFormatString(0, 96, GetColor(255, 255, 255), "持物:%s", ToolName[chara[subNum].tool]);
	//持ち物
	DrawFormatString(0, 112, GetColor(255, 255, 255), "性格:%s", PersonalName[chara[subNum].per]);
	//技
	DrawFormatString(0, 144, GetColor(255, 255, 255), "技:%s\n  %s\n  %s\n  %s", SkillName[chara[subNum].skill[0]],
		SkillName[chara[subNum].skill[1]], SkillName[chara[subNum].skill[2]], SkillName[chara[subNum].skill[3]]);
}

void Character::ChangeCharacter(int& num) {
	num += GetMouseWheelRotVol();

	if (num < 0) {
		num = CHARACTER_NUM - 1;
	}if (num > CHARACTER_NUM - 1) {
		num = 0;
	}
}

subNumが配列の添字となります。Init関数でsubNumを初期化、
Step関数でsubNumの数値を変更するためのChangeCharacter関数を呼んでいます。ChangeCharacter関数はポインタを使ってみたのですが使い方があっているのかいまいち分かりません。
そしてDraw関数でキャラクターの情報を表示させます。

Main関数に書き出す

今のままでは動かないのでMain関数にInit,Step,Draw関数を書き出します
※Main.cpp
DxLibを参考

#include "DxLib.h"

#include "Common.h"
#include "Character/Character.h"
#include "Input/Input.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	//ウィンドウの状態を設定する
	ChangeWindowMode(true);

	//DXライブラリ初期化
	if (DxLib_Init() == -1) {
		return -1;
	}

	// 画面サイズを変更
	SetGraphMode(SCREEN_SIZE_X, SCREEN_SIZE_Y, 32);

	//描画するスクリーンを設定する
	SetDrawScreen(DX_SCREEN_BACK);

	//クラスの宣言
	Character character;

	Input::InitInput();
	character.Init();

	//処理を継続させたいのでwhile文で無限ループ
	while (ProcessMessage() != -1) {
		//エスケープキーが押されたら終了
		if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) {
			break;
		}

		//画面に表示されたものを初期化
		ClearDrawScreen();

		//入力させるために最初に呼ぶ
		Input::StepInput();

		character.Step();
		character.Draw();

		ScreenFlip();
	}

	DxLib_End();			// DXライブラリ使用の終了処理

	return 0;
}

※Common.h

#include <iostream>

using namespace std;

const int  SCREEN_SIZE_X = 1280;//画面サイズ 横
const int  SCREEN_SIZE_Y = 800;	//画面サイズ 縦

const int MID_SCREEN_X = SCREEN_SIZE_X / 2;	//画面中央X
const int MID_SCREEN_Y = SCREEN_SIZE_Y / 2; //画面中央Y

ここまで出来たら完成…のはずです

実行してみる


フシギヨネの情報
フシギカモの情報

こんな感じで表示されるはずです!!
因みに今回はマウスホイールで表示されるキャラクターを変えれるようにしました。

後書き

これで図鑑らしきものが作れました。
他にも付け足したい機能はあるのですが処理が思いつかないので図鑑のプログラムは一旦終わりにしようと思います。
お疲れさまでした!読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?