質問編集履歴

2

1文追加です

2016/10/17 13:59

投稿

ain4425
ain4425

スコア19

test CHANGED
File without changes
test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
 
62
62
 
63
- 先ほどの抜粋のもとのコードです。15×15の四角く並んだ0の、真ん中一番下がスタート位置で、1としています。そこから1か2か3か4を入力して真ん中一番上の座標まで辿りついたら(真ん中一番上が1になったら)終了というプログラムを組んだつもりでした。先ほどの0を代入する部分は、移動後のもといた場所を0とするためです。このプログラムを動かすには、たぶんCopyxとCopyyが問題だと思いますので、教えていただけると幸いです。よろしくお願いします
63
+ 先ほどの抜粋のもとのコードです。15×15の四角く並んだ0の、真ん中一番下がスタート位置で、1としています。そこから1か2か3か4を入力して真ん中一番上の座標まで辿りついたら(真ん中一番上が1になったら)終了というプログラムを組んだつもりでした。先ほどの0を代入する部分は、移動後のもといた場所を0とするためです。このプログラムを動かすには、たぶんCopyxとCopyyが問題だと思いますので、教えていただけると幸いです。よろしくお願いします。1で上、2で左、3で右、4で下に行きます。
64
64
 
65
65
 
66
66
 

1

コード全体を追加しました

2016/10/17 13:59

投稿

ain4425
ain4425

スコア19

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```C
8
8
 
9
- /* もともと s=0, t=6, x=8, y=5, a[10][10] べてintで定義しています */
9
+ /* 抜粋です */
10
10
 
11
11
 
12
12
 
@@ -57,3 +57,339 @@
57
57
 
58
58
 
59
59
  ```
60
+
61
+
62
+
63
+ 先ほどの抜粋のもとのコードです。15×15の四角く並んだ0の、真ん中一番下がスタート位置で、1としています。そこから1か2か3か4を入力して真ん中一番上の座標まで辿りついたら(真ん中一番上が1になったら)終了というプログラムを組んだつもりでした。先ほどの0を代入する部分は、移動後のもといた場所を0とするためです。このプログラムを動かすには、たぶんCopyxとCopyyが問題だと思いますので、教えていただけると幸いです。よろしくお願いします
64
+
65
+
66
+
67
+ ```c
68
+
69
+ #include <stdio.h>
70
+
71
+ #include <stdlib.h>
72
+
73
+ #include <math.h>
74
+
75
+ int a[15][15];
76
+
77
+
78
+
79
+ void Explain1();
80
+
81
+ void Initialize1(int x,int y);
82
+
83
+ void Initialize2();
84
+
85
+ void Output1(int x,int y);
86
+
87
+ int Input(int b);
88
+
89
+ int Copyx(int x,int s);
90
+
91
+ int Copyy(int y,int t);
92
+
93
+ int Calculatex(int b,int x);
94
+
95
+ int Calculatey(int b,int y);
96
+
97
+ void Beforemove(int s,int t);
98
+
99
+ void Aftermove(int x,int y);
100
+
101
+ void Output2(int x,int y);
102
+
103
+ void Finish();
104
+
105
+
106
+
107
+ int main(){
108
+
109
+ int x;
110
+
111
+ int y;
112
+
113
+ int b=0;
114
+
115
+ int s,t;
116
+
117
+
118
+
119
+ Explain1();
120
+
121
+ Initialize1(x,y);
122
+
123
+ Initialize2();
124
+
125
+ Output1(x,y);
126
+
127
+ while(a[0][7]==0){ //ゴールにたどり着くまでループ
128
+
129
+ Input(b);
130
+
131
+ Copyx(x,s);
132
+
133
+ Copyy(y,t);
134
+
135
+ Calculatex(b,x);
136
+
137
+ Calculatey(b,y);
138
+
139
+ Beforemove(s,t);
140
+
141
+ Aftermove(x,y);
142
+
143
+ Output2(x,y);
144
+
145
+ }
146
+
147
+ Finish();
148
+
149
+ return 0;
150
+
151
+ }
152
+
153
+
154
+
155
+ void Explain1(){
156
+
157
+ printf("ゴールを目指すゲームです\n");
158
+
159
+ }
160
+
161
+
162
+
163
+ void Initialize1(int x,int y){ //座標平面の初期化
164
+
165
+ for(x=0; x<15; x++){
166
+
167
+ for(y=0; y<15; y++){
168
+
169
+ a[x][y]=0;
170
+
171
+ }
172
+
173
+ }
174
+
175
+ }
176
+
177
+
178
+
179
+ void Initialize2(){ //最初の位置である真ん中一番下に1を置く
180
+
181
+ a[14][7]=1;
182
+
183
+ }
184
+
185
+
186
+
187
+ void Output1(int x,int y){ //Initialize1の出力。マス出力
188
+
189
+ for(x=0; x<15; x++){
190
+
191
+ for(y=0; y<15; y++){
192
+
193
+ printf("%d ",a[x][y]);
194
+
195
+ }
196
+
197
+ printf("\n");
198
+
199
+ }
200
+
201
+ }
202
+
203
+
204
+
205
+ int Input(int b){ //移動方向、またキャンセルの選択、1~5の整数の選別
206
+
207
+ while(1){
208
+
209
+ scanf("%d",&b);
210
+
211
+ if((b==1)||(b==2)||(b==3)||(b==4)){
212
+
213
+ break;
214
+
215
+ }
216
+
217
+ else{
218
+
219
+ printf("1から4の整数を入力して下さい\n");
220
+
221
+ }
222
+
223
+ }
224
+
225
+ return b;
226
+
227
+ }
228
+
229
+
230
+
231
+ int Copyx(int x,int s){ //x座標のコピー
232
+
233
+ s=x;
234
+
235
+ return s;
236
+
237
+ }
238
+
239
+
240
+
241
+ int Copyy(int y,int t){ //y座標のコピー
242
+
243
+ t=y;
244
+
245
+ return t;
246
+
247
+ }
248
+
249
+
250
+
251
+ int Calculatex(int b,int x){ //Inputの選択によるx方向に進む座標の計算
252
+
253
+ switch(b)
254
+
255
+ {
256
+
257
+ case 1:
258
+
259
+ if(x==0){
260
+
261
+ printf("これより上には進めません\n");
262
+
263
+ break;
264
+
265
+ }
266
+
267
+ else{
268
+
269
+ x++;
270
+
271
+ break;
272
+
273
+ }
274
+
275
+ case 4:
276
+
277
+ if(x==14){
278
+
279
+ printf("これより下には進めません\n");
280
+
281
+ break;
282
+
283
+ }
284
+
285
+ else{
286
+
287
+ x--;
288
+
289
+ break;
290
+
291
+ }
292
+
293
+ default:
294
+
295
+ break;
296
+
297
+ }
298
+
299
+ return x;
300
+
301
+ }
302
+
303
+
304
+
305
+ int Calculatey(int b,int y){ //Inputの選択によるy方向に進む座標の計算
306
+
307
+ switch(b)
308
+
309
+ {
310
+
311
+ case 2:
312
+
313
+ if(y==0){
314
+
315
+ printf("これより左には進めません\n");
316
+
317
+ break;
318
+
319
+ }
320
+
321
+ else
322
+
323
+ y--;
324
+
325
+ break;
326
+
327
+ case 3:
328
+
329
+ if(y==14){
330
+
331
+ printf("これより右には進めません\n");
332
+
333
+ break;
334
+
335
+ }
336
+
337
+ else
338
+
339
+ y++;
340
+
341
+ break;
342
+
343
+ default:
344
+
345
+ break;
346
+
347
+ }
348
+
349
+ return y;
350
+
351
+ }
352
+
353
+ /*
354
+
355
+ void Beforemove(int s,int t){ //移動後への座標変換
356
+
357
+ a[s][t]=0;
358
+
359
+ }
360
+
361
+ *//*
362
+
363
+ void Aftermove(int x,int y){ //移動後への座標変換
364
+
365
+ a[x][y]=1;
366
+
367
+ }
368
+
369
+ */
370
+
371
+ void Output2(int x,int y){ //Initialize1の出力。マス出力
372
+
373
+ for(x=0; x<15; x++){
374
+
375
+ for(y=0; y<15; y++){
376
+
377
+ printf("%d ",a[x][y]);
378
+
379
+ }
380
+
381
+ printf("\n");
382
+
383
+ }
384
+
385
+ }
386
+
387
+
388
+
389
+ void Finish(){
390
+
391
+ printf("到着です\n");
392
+
393
+ }
394
+
395
+ ```