質問編集履歴
6
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -127,6 +127,8 @@
|
|
127
127
|
|
128
128
|
マルチポストをして、
|
129
129
|
得た回答でこちらのプログラムを回答にさせていただきました。
|
130
|
+
以下のコードを使い**行いたいことを実行しました**。
|
131
|
+
```
|
130
132
|
#include "DxLib.h"
|
131
133
|
|
132
134
|
int Key[256];
|
@@ -249,4 +251,5 @@
|
|
249
251
|
|
250
252
|
DxLib_End(); // DXライブラリ使用の終了処理
|
251
253
|
return 0; // ソフトの終了
|
252
|
-
}
|
254
|
+
}
|
255
|
+
```
|
5
title
CHANGED
File without changes
|
body
CHANGED
@@ -123,4 +123,130 @@
|
|
123
123
|
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
124
124
|
|
125
125
|
いろんな考えが見たかった故にマルチポストしました。
|
126
|
-
どうもすいませんでした、。
|
126
|
+
どうもすいませんでした、。
|
127
|
+
|
128
|
+
マルチポストをして、
|
129
|
+
得た回答でこちらのプログラムを回答にさせていただきました。
|
130
|
+
#include "DxLib.h"
|
131
|
+
|
132
|
+
int Key[256];
|
133
|
+
|
134
|
+
int gpUpdateKey()
|
135
|
+
{
|
136
|
+
char tmpKey[256];
|
137
|
+
GetHitKeyStateAll(tmpKey);
|
138
|
+
for (int i = 0; i < 256; i++)
|
139
|
+
(tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++;
|
140
|
+
return 0;
|
141
|
+
}
|
142
|
+
|
143
|
+
int idou[5][5] = {
|
144
|
+
{ 1, 1, 1, 1, 1 },
|
145
|
+
{ 1, 0, 0, 0, 1 },
|
146
|
+
{ 1, 0, 0, 0, 1 },
|
147
|
+
{ 1, 0, 0, 0, 1 },
|
148
|
+
{ 1, 1, 1, 1, 1 },
|
149
|
+
};
|
150
|
+
|
151
|
+
int box[4][7][2], player[5][5][2];
|
152
|
+
|
153
|
+
void init_box()
|
154
|
+
{
|
155
|
+
for (int j = 0; j < 7; j++) {
|
156
|
+
int w = (j - 3) * 100, h = 600;
|
157
|
+
for (int i = 4; --i >= 0; ) {
|
158
|
+
box[i][j][0] = w + 400, box[i][j][1] = h - 200;
|
159
|
+
w = w * 9 / 10, h = h * 9 / 10;
|
160
|
+
}
|
161
|
+
}
|
162
|
+
for (int i = 1; i <= 3; i++)
|
163
|
+
for (int j = 1; j <= 3; j++) {
|
164
|
+
player[i][j][0] = (box[i-1][j-1][0] + box[i][j][0])/2 - 25;
|
165
|
+
player[i][j][1] = (box[i-1][j-1][1] + box[i][j][1])/2 - 66;
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
int WINAPI WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs)
|
170
|
+
{
|
171
|
+
SetGraphMode(1200, 680, 32); // ウィンドウの大きさを指定
|
172
|
+
ChangeWindowMode(TRUE); // 全画面ではなくウインドウを使用
|
173
|
+
if (DxLib_Init() == -1) return -1; // DXライブラリ初期化処理
|
174
|
+
SetDrawScreen(DX_SCREEN_BACK); // 裏画面を使用する設定
|
175
|
+
|
176
|
+
init_box();
|
177
|
+
int boxColor = GetColor(160, 64, 64);
|
178
|
+
|
179
|
+
int nx = 2, ny = 2; // プレイヤーの初期位置
|
180
|
+
int px = player[ny][nx][0], py = player[ny][nx][1]; // 表示位置
|
181
|
+
int keep = 0; // 移動不可能状態継続カウンタ
|
182
|
+
|
183
|
+
int gh[12]; //グラフィックハンドル格納用配列
|
184
|
+
// 5:正面、7:右向き、2:左向き、4:上向き、3:下向き、9:移動不可
|
185
|
+
LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh); //画像読み込み
|
186
|
+
int playerphoto = gh[5];
|
187
|
+
|
188
|
+
while (ProcessMessage() == 0) {
|
189
|
+
gpUpdateKey(); // キーの入力状態を取得
|
190
|
+
if (Key[KEY_INPUT_RIGHT] == 1) { // 右キーが押されている
|
191
|
+
if (idou[nx + 1][ny] == 0) { // 移動先が空いていれば
|
192
|
+
nx++; playerphoto = gh[7]; // 右向き
|
193
|
+
}
|
194
|
+
else {
|
195
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
196
|
+
}
|
197
|
+
}
|
198
|
+
if (Key[KEY_INPUT_LEFT] == 1) {
|
199
|
+
if (idou[nx - 1][ny] == 0) { // 移動先が空いていれば
|
200
|
+
nx--; playerphoto = gh[2]; // 左向き
|
201
|
+
}
|
202
|
+
else {
|
203
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
204
|
+
}
|
205
|
+
}
|
206
|
+
if (Key[KEY_INPUT_UP] == 1) {
|
207
|
+
if (idou[nx][ny - 1] == 0) { // 移動先が空いていれば
|
208
|
+
ny--; playerphoto = gh[4]; // 上向き
|
209
|
+
}
|
210
|
+
else {
|
211
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
212
|
+
}
|
213
|
+
}
|
214
|
+
if (Key[KEY_INPUT_DOWN] == 1) {
|
215
|
+
if (idou[nx][ny + 1] == 0) { // 移動先が空いていれば
|
216
|
+
ny++; playerphoto = gh[3]; // 下向き
|
217
|
+
}
|
218
|
+
else {
|
219
|
+
keep = 1; playerphoto = gh[9]; // 移動不可能
|
220
|
+
}
|
221
|
+
}
|
222
|
+
|
223
|
+
ClearDrawScreen(); // 裏画面をクリア
|
224
|
+
|
225
|
+
for (int i = 0; i < 4; i++)
|
226
|
+
DrawLine(box[i][0][0], box[i][0][1],
|
227
|
+
box[i][6][0], box[i][6][1], boxColor);
|
228
|
+
for (int j = 0; j < 7; j++)
|
229
|
+
DrawLine(box[0][j][0], box[0][j][1],
|
230
|
+
box[3][j][0], box[3][j][1], boxColor);
|
231
|
+
|
232
|
+
int x = player[ny][nx][0], y = player[ny][nx][1]; // 表示位置に変換
|
233
|
+
if (x == px && y == py) {
|
234
|
+
if (keep == 0 || ++keep == 10) {
|
235
|
+
keep = 0; playerphoto = gh[5];
|
236
|
+
}
|
237
|
+
}
|
238
|
+
else {
|
239
|
+
if (abs(x - px) < 8) px = x;
|
240
|
+
else if (x > px) px += 8;
|
241
|
+
else if (x < px) px -= 8;
|
242
|
+
if (abs(y - py) < 6) py = y;
|
243
|
+
else if (y > py) py += 6;
|
244
|
+
else if (y < py) py -= 6;
|
245
|
+
}
|
246
|
+
DrawGraph(px, py, playerphoto, FALSE); // プレイヤーを裏画面に描画
|
247
|
+
ScreenFlip(); // 裏画面を表画面に反映
|
248
|
+
}
|
249
|
+
|
250
|
+
DxLib_End(); // DXライブラリ使用の終了処理
|
251
|
+
return 0; // ソフトの終了
|
252
|
+
}
|
4
title
CHANGED
File without changes
|
body
CHANGED
@@ -120,4 +120,7 @@
|
|
120
120
|
```
|
121
121
|
|
122
122
|
マルチポストをしていた質問です。
|
123
|
-
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
123
|
+
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
124
|
+
|
125
|
+
いろんな考えが見たかった故にマルチポストしました。
|
126
|
+
どうもすいませんでした、。
|
3
変数
title
CHANGED
File without changes
|
body
CHANGED
@@ -117,4 +117,7 @@
|
|
117
117
|
return 0; // ソフトの終了
|
118
118
|
|
119
119
|
}
|
120
|
-
```
|
120
|
+
```
|
121
|
+
|
122
|
+
マルチポストをしていた質問です。
|
123
|
+
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
2
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -117,9 +117,4 @@
|
|
117
117
|
return 0; // ソフトの終了
|
118
118
|
|
119
119
|
}
|
120
|
-
```
|
120
|
+
```
|
121
|
-
|
122
|
-
編集
|
123
|
-
こちらの方とマルチポストをしています。
|
124
|
-
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
125
|
-
お伝えするのが遅れてすいませんでした。
|
1
変数
title
CHANGED
File without changes
|
body
CHANGED
@@ -117,4 +117,9 @@
|
|
117
117
|
return 0; // ソフトの終了
|
118
118
|
|
119
119
|
}
|
120
|
-
```
|
120
|
+
```
|
121
|
+
|
122
|
+
編集
|
123
|
+
こちらの方とマルチポストをしています。
|
124
|
+
https://dixq.net/forum/viewtopic.php?p=154122#p154122
|
125
|
+
お伝えするのが遅れてすいませんでした。
|