マップを生成し、そのマップ上でキャラクターを戦わせる一種のTPSのようなものを作っております
そこでさまざまなサイトを参考にして組んだのですが、現在の私の弾発射のコードは単発でここから連射できるようにしたいです
SPACEキーを押すことで弾を発射します
コードです
#include "DxLib.h"
int player[12], chip[2], shot;
int px = 1, py = 1;
int sx, sy;
bool sf = false;
int num = 1;
int map[15][20] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
};
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
LoadDivGraph("../player.png", 12, 3, 4, 32, 32, player);
LoadDivGraph("../mapchip.png", 2, 2, 1, 32, 32, chip);
shot = LoadGraph("../shot.png");
while (!ProcessMessage()) {
ClearDrawScreen();
int kx = px, ky = py;
if (CheckHitKey(KEY_INPUT_LEFT)) {
kx--;
num = 4;
}
if (CheckHitKey(KEY_INPUT_RIGHT)) {
kx++;
num = 7;
}
if (CheckHitKey(KEY_INPUT_UP)) {
ky--;
num = 10;
}
if (CheckHitKey(KEY_INPUT_DOWN)) {
ky++;
num = 1;
}
if (map[ky][kx] != 1) {
px = kx;
py = ky;
}
if (CheckHitKey(KEY_INPUT_SPACE)) {
if (!sf) {
sf = true;
sx = px * 32;
sy = py * 32;
}
}
if (sf) {
switch (num)
{
case 4:
sx -= 31;
break;
case 7:
sx += 31;
break;
case 10:
sy -= 31;
break;
case 1:
sy += 31;
break;
}
if (sy < 0) sf = false;
if (map[sy/32][sx/32] == 1) {
sf = false;
}
}
for (int y = 0; y < 15; y++) {
for (int x = 0; x < 20; x++) {
DrawGraph(x * 32, y * 32, chip[map[y][x]], FALSE);
}
}
if (sf) DrawGraph(sx, sy, shot, TRUE);
DrawGraph(px * 32, py * 32, player[num], TRUE);
ScreenFlip();
WaitTimer(40);
}
DxLib_End();
return 0;
}