===== 昨日の復習をしていくよ =====
==== 第1話 C言語の時代 ====
C言語でゲームループ
#include
#include
using std::cin;
//キャラクターの初期位置(0,0) HP100
//一歩歩くと1HPが減るかわいそうなキャラ
int cx=0, cy=0;
int hp = 100;
//0:左 1:上 2:右 3:下
void Walk(int Dir)
{
switch (Dir)
{
case 0:
cx = cx - 1;
break;
case 1:
cy = cy - 1;
break;
case 2:
cx = cx + 1;
break;
case 3:
cy = cy + 1;
break;
default:
break;
}
hp--;
}
void PrintStatus()
{
printf("+-----------------+\n");
printf("| NAME: yusha |\n");
printf("| HP:%3d |\n", hp);
printf("| POS:(%3d,%3d) |\n", cx, cy);
printf("| |\n");
printf("| |\n");
printf("+-----------------+\n");
}
int main()
{
int i = 0;
while (true)
{
printf("%dフレーム目:無限\n", i);
Walk(2);
PrintStatus();
getchar();
i++;
}
return 0;
}
==== 第2話 C++の夜明け ====
=== GameChara.h ===
ゲームキャラのヘッダ
#pragma once
#include
enum DIR
{
////0:左 1:上 2:右 3:下
LEFT, UP, RIGHT, DOWN, MAXDIR
};
class GameChara
{
public:
GameChara();//コンストラクタ
~GameChara();//デストラクタ
void Walk(DIR Dir);
void PrintStatus();
private:
std::string name;
int cx, cy;
int hp;
};
=== GameChara.cpp ===
GameChara.cpp
#include "GameChara.h"
GameChara::GameChara()
{
name = "yusha";
cx = 0;
cy = 0;
hp = 100;
printf("おぎゃー\n");
printf("%sは生まれた!\n", name.c_str());
}
GameChara::~GameChara()
{
printf("うぎゃー\n");
printf("%sは死んだ。。。\n", name.c_str());
}
void GameChara::Walk(DIR Dir)
{
switch (Dir)
{
case LEFT:
cx = cx - 1;
break;
case UP:
cy = cy - 1;
break;
case RIGHT:
cx = cx + 1;
break;
case DOWN:
cy = cy + 1;
break;
default:
break;
}
hp--;
}
void GameChara::PrintStatus()
{
printf("+-----------------+\n");
printf("| NAME: yusha |\n");
printf("| HP:%3d |\n", hp);
printf("| POS:(%3d,%3d) |\n", cx, cy);
printf("| ADDR:%p |\n", this);
printf("| |\n");
printf("+-----------------+\n");
}
=== theMain.cpp ===
theMain.cpp
#include
#include
#include "GameChara.h"
using std::cin;
int main()
{
GameChara *hero = nullptr;
int i = 0;
while (true)
{
printf("%dフレーム目:無限\n", i);
if (hero == nullptr)
{
printf("ヒーローが必要ですか?");
rewind(stdin);
char n;
cin >> n;
if (n == 'y' || n == 'Y')
{
hero = new GameChara;
}
}
if (hero != nullptr) {
hero->Walk(UP);
hero->PrintStatus();
//hero.Walk(UP);
//hero.PrintStatus();
printf("ヒーローを葬りますか?");
rewind(stdin);
char n;
cin >> n;
if (n == 'y' || n == 'Y')
{
delete hero;
hero = nullptr;
}
}
getchar();
i++;
}
return 0;
}