下記のようなコードをかいてみたのですが、一瞬押されたとき1座標を動かす、というのがうまくいっていません。
長押しした時に連続で動く、という処理はうまくいったのですが・・・
main.cpp
#include "DxLib.h"
...
(中略)
...
const int LONG_ON_KEY_TIME = 25;
const int MINO_MOVE_INTERVAL = 3;
...
(中略)
...
int mino_x, mino_y, mino_ang, mino_type;
char all_key[256], now_on_key[256]; //すべてのキー、現在押されているキー
int MonitoringKey();
void OnKeyDown();
...
(中略)
...
int MonitoringKey() {
GetHitKeyStateAll(all_key);
for (int i = 0; i < 256; i++) {
if (all_key[i] == 1) {
now_on_key[i]++;
} else {
now_on_key[i] = 0;
}
}
return 0;
}
void OnKeyDown() {
int keys[4] = {KEY_INPUT_UP, KEY_INPUT_LEFT, KEY_INPUT_DOWN, KEY_INPUT_RIGHT};
int move_x[4] = {0, -1, 0, 1}, move_y[4] = {-1, 0, 1, 0};
MonitoringKey();
for (byte i = 0; i < 4; i++) {
if (now_on_key[keys[i]] == 1 || (now_on_key[keys[i]] >= LONG_ON_KEY_TIME && (now_on_key[keys[i]] - LONG_ON_KEY_TIME) % MINO_MOVE_INTERVAL == 0)) {
mino_x += move_x[i], mino_y += move_y[i];
}
}
}
...
(中略)
...