質問するログイン新規登録

回答編集履歴

3

コードにスペースを追加

2020/11/18 15:52

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -63,7 +63,8 @@
63
63
  if (keyCount[KEY_INPUT_DOWN] == 1 && --count < 0) {
64
64
  PlayBeep(); beep = 5; count = 0;
65
65
  }
66
- if (beep > 0 &&--beep == 0) StopBeep();
66
+ if (beep > 0 && --beep == 0) StopBeep();
67
+
67
68
  ClearDrawScreen();
68
69
  DrawFormatString(50, 50, color, "%d", count);
69
70
  ScreenFlip();
@@ -84,5 +85,5 @@
84
85
  if ((k == 1 || k > 30) && --count < 0) {
85
86
  PlayBeep(); beep = 5; count = 0;
86
87
  }
87
- if (beep > 0 &&--beep == 0) StopBeep();
88
+ if (beep > 0 && --beep == 0) StopBeep();
88
89
  ```

2

リピート機能を追加

2020/11/18 15:52

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -71,4 +71,18 @@
71
71
  DxLib_End();
72
72
  return 0;
73
73
  }
74
+ ```
75
+ **追記2**
76
+ 1つずつカウントアップ・ダウンさせたいし、リピート機能も付けたい場合は、
77
+ ```C++
78
+ if (keyCount[KEY_INPUT_ESCAPE]) break;
79
+ int k = keyCount[KEY_INPUT_UP];
80
+ if ((k == 1 || k > 30) && ++count > 200) {
81
+ PlayBeep(); beep = 5; count = 200;
82
+ }
83
+ k = keyCount[KEY_INPUT_DOWN];
84
+ if ((k == 1 || k > 30) && --count < 0) {
85
+ PlayBeep(); beep = 5; count = 0;
86
+ }
87
+ if (beep > 0 &&--beep == 0) StopBeep();
74
88
  ```

1

キー入力のリピートを回避するコードを追加

2020/11/18 10:23

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -32,4 +32,43 @@
32
32
  DxLib_End();
33
33
  return 0;
34
34
  }
35
+ ```
36
+ **追記**
37
+ 一瞬キーを押したつもりでも複数回入力されます。
38
+ 1つずつカウントアップ・ダウンさせたかったら次のようにすればできます。
39
+ ```C++
40
+ #include "DxLib.h"
41
+
42
+ int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
43
+ {
44
+ ChangeWindowMode(TRUE);
45
+ if (DxLib_Init() == -1) return -1;
46
+ SetDrawScreen(DX_SCREEN_BACK);
47
+ SetFontSize(100);
48
+
49
+ int color = GetColor(0, 255, 0);
50
+ int count = 100;
51
+ int beep = 0;
52
+ int keyCount[256] = { 0 };
53
+
54
+ while (ProcessMessage() == 0) {
55
+ char keyBuf[256];
56
+ GetHitKeyStateAll(keyBuf);
57
+ for (int i = 0; i < 256; i++) !keyBuf[i] ? keyCount[i] = 0 : keyCount[i]++;
58
+
59
+ if (keyCount[KEY_INPUT_ESCAPE]) break;
60
+ if (keyCount[KEY_INPUT_UP] == 1 && ++count > 200) {
61
+ PlayBeep(); beep = 5; count = 200;
62
+ }
63
+ if (keyCount[KEY_INPUT_DOWN] == 1 && --count < 0) {
64
+ PlayBeep(); beep = 5; count = 0;
65
+ }
66
+ if (beep > 0 &&--beep == 0) StopBeep();
67
+ ClearDrawScreen();
68
+ DrawFormatString(50, 50, color, "%d", count);
69
+ ScreenFlip();
70
+ }
71
+ DxLib_End();
72
+ return 0;
73
+ }
35
74
  ```