これでライフゲームを作ろうとしています。
#include<DxLib.h>
#define ONE 48
#define PX 10
int T[2];
int f[2][ONE][ONE];
int mx, my;
int current;
int generation = 1;
int count(int _x, int _y) {
int count = 0;
for (int y = -1; y <= 1; y++) {
for (int x = -1; x <= 1; x++) {
if (x == 0 && y == 0)
continue;
int x2 = (ONE + _x + x) % ONE;
int y2 = (ONE + _y + y) % ONE;
count += f[current][y2][x2];
}
}
return count;
}
void P() {
for (int y = 0; y < ONE; y++) {
for (int x = 0; x < ONE; x++) {
DrawExtendGraph(x * PX, y * PX, x * PX + PX, y * PX + PX, T[f[current][y][x]], false);
}
}
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
SetOutApplicationLogValidFlag(false);
SetWindowText("ライフゲーム");
ChangeWindowMode(true);
SetDrawScreen(DX_SCREEN_BACK);
DxLib_Init();
LoadDivGraph("madia\\a.png", 2, 2, 1, PX, PX, T, false);
while (ProcessMessage() == -1 || CheckHitKey(KEY_INPUT_ESCAPE)) {
ClearDrawScreen();
P();
DrawFormatString(480,0,GetColor(255,255,255),"第%d世代",generation);
while (1) {
if (GetMouseInput() & MOUSE_INPUT_LEFT) {
GetMousePoint(&mx, &my);
f[current][my / PX][mx / PX] ^= 1;
}
}
if (CheckHitKey(KEY_INPUT_RETURN)) {
for (int y = 0; y < ONE; y++) {
for (int x = 0; x < ONE; x++) {
int n = count(x, y);
int next = f[current][y][x];
if (f[current][y][x]) {
if (n <= 1 || n >= 4) {
next = 0;
}
}
else {
if (n == 3) {
next = 1;
}
}
f[current ^ 1][y][x] = next;
}
}
current ^= 1;
generation++;
}
ScreenFlip();
}
DxLib_End();
return 0;
}
これではすぐに画面が閉じる為、
escが押された場合に画面を閉じたいのですがどうにかなりませんか?