回答編集履歴

3

コードにスペースを追加

2020/11/18 15:52

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -128,7 +128,9 @@
128
128
 
129
129
  }
130
130
 
131
- if (beep > 0 &&--beep == 0) StopBeep();
131
+ if (beep > 0 && --beep == 0) StopBeep();
132
+
133
+
132
134
 
133
135
  ClearDrawScreen();
134
136
 
@@ -170,6 +172,6 @@
170
172
 
171
173
  }
172
174
 
173
- if (beep > 0 &&--beep == 0) StopBeep();
175
+ if (beep > 0 && --beep == 0) StopBeep();
174
176
 
175
177
  ```

2

リピート機能を追加

2020/11/18 15:52

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -145,3 +145,31 @@
145
145
  }
146
146
 
147
147
  ```
148
+
149
+ **追記2**
150
+
151
+ 1つずつカウントアップ・ダウンさせたいし、リピート機能も付けたい場合は、
152
+
153
+ ```C++
154
+
155
+ if (keyCount[KEY_INPUT_ESCAPE]) break;
156
+
157
+ int k = keyCount[KEY_INPUT_UP];
158
+
159
+ if ((k == 1 || k > 30) && ++count > 200) {
160
+
161
+ PlayBeep(); beep = 5; count = 200;
162
+
163
+ }
164
+
165
+ k = keyCount[KEY_INPUT_DOWN];
166
+
167
+ if ((k == 1 || k > 30) && --count < 0) {
168
+
169
+ PlayBeep(); beep = 5; count = 0;
170
+
171
+ }
172
+
173
+ if (beep > 0 &&--beep == 0) StopBeep();
174
+
175
+ ```

1

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

2020/11/18 10:23

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -67,3 +67,81 @@
67
67
  }
68
68
 
69
69
  ```
70
+
71
+ **追記**
72
+
73
+ 一瞬キーを押したつもりでも複数回入力されます。
74
+
75
+ 1つずつカウントアップ・ダウンさせたかったら次のようにすればできます。
76
+
77
+ ```C++
78
+
79
+ #include "DxLib.h"
80
+
81
+
82
+
83
+ int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
84
+
85
+ {
86
+
87
+ ChangeWindowMode(TRUE);
88
+
89
+ if (DxLib_Init() == -1) return -1;
90
+
91
+ SetDrawScreen(DX_SCREEN_BACK);
92
+
93
+ SetFontSize(100);
94
+
95
+
96
+
97
+ int color = GetColor(0, 255, 0);
98
+
99
+ int count = 100;
100
+
101
+ int beep = 0;
102
+
103
+ int keyCount[256] = { 0 };
104
+
105
+
106
+
107
+ while (ProcessMessage() == 0) {
108
+
109
+ char keyBuf[256];
110
+
111
+ GetHitKeyStateAll(keyBuf);
112
+
113
+ for (int i = 0; i < 256; i++) !keyBuf[i] ? keyCount[i] = 0 : keyCount[i]++;
114
+
115
+
116
+
117
+ if (keyCount[KEY_INPUT_ESCAPE]) break;
118
+
119
+ if (keyCount[KEY_INPUT_UP] == 1 && ++count > 200) {
120
+
121
+ PlayBeep(); beep = 5; count = 200;
122
+
123
+ }
124
+
125
+ if (keyCount[KEY_INPUT_DOWN] == 1 && --count < 0) {
126
+
127
+ PlayBeep(); beep = 5; count = 0;
128
+
129
+ }
130
+
131
+ if (beep > 0 &&--beep == 0) StopBeep();
132
+
133
+ ClearDrawScreen();
134
+
135
+ DrawFormatString(50, 50, color, "%d", count);
136
+
137
+ ScreenFlip();
138
+
139
+ }
140
+
141
+ DxLib_End();
142
+
143
+ return 0;
144
+
145
+ }
146
+
147
+ ```