===== 昨日の復習をしていくよ ===== ==== 第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; }