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

質問編集履歴

2

1文追加です

2016/10/17 13:59

投稿

ain4425
ain4425

スコア19

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

1

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

2016/10/17 13:59

投稿

ain4425
ain4425

スコア19

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  ```C
5
- /* もともと s=0, t=6, x=8, y=5, a[10][10] べてintで定義しています */
5
+ /* 抜粋です */
6
6
 
7
7
 
8
8
 
@@ -27,4 +27,172 @@
27
27
 
28
28
 
29
29
 
30
+ ```
31
+
32
+ 先ほどの抜粋のもとのコードです。15×15の四角く並んだ0の、真ん中一番下がスタート位置で、1としています。そこから1か2か3か4を入力して真ん中一番上の座標まで辿りついたら(真ん中一番上が1になったら)終了というプログラムを組んだつもりでした。先ほどの0を代入する部分は、移動後のもといた場所を0とするためです。このプログラムを動かすには、たぶんCopyxとCopyyが問題だと思いますので、教えていただけると幸いです。よろしくお願いします
33
+
34
+ ```c
35
+ #include <stdio.h>
36
+ #include <stdlib.h>
37
+ #include <math.h>
38
+ int a[15][15];
39
+
40
+ void Explain1();
41
+ void Initialize1(int x,int y);
42
+ void Initialize2();
43
+ void Output1(int x,int y);
44
+ int Input(int b);
45
+ int Copyx(int x,int s);
46
+ int Copyy(int y,int t);
47
+ int Calculatex(int b,int x);
48
+ int Calculatey(int b,int y);
49
+ void Beforemove(int s,int t);
50
+ void Aftermove(int x,int y);
51
+ void Output2(int x,int y);
52
+ void Finish();
53
+
54
+ int main(){
55
+ int x;
56
+ int y;
57
+ int b=0;
58
+ int s,t;
59
+
60
+ Explain1();
61
+ Initialize1(x,y);
62
+ Initialize2();
63
+ Output1(x,y);
64
+ while(a[0][7]==0){ //ゴールにたどり着くまでループ
65
+ Input(b);
66
+ Copyx(x,s);
67
+ Copyy(y,t);
68
+ Calculatex(b,x);
69
+ Calculatey(b,y);
70
+ Beforemove(s,t);
71
+ Aftermove(x,y);
72
+ Output2(x,y);
73
+ }
74
+ Finish();
75
+ return 0;
76
+ }
77
+
78
+ void Explain1(){
79
+ printf("ゴールを目指すゲームです\n");
80
+ }
81
+
82
+ void Initialize1(int x,int y){ //座標平面の初期化
83
+ for(x=0; x<15; x++){
84
+ for(y=0; y<15; y++){
85
+ a[x][y]=0;
86
+ }
87
+ }
88
+ }
89
+
90
+ void Initialize2(){ //最初の位置である真ん中一番下に1を置く
91
+ a[14][7]=1;
92
+ }
93
+
94
+ void Output1(int x,int y){ //Initialize1の出力。マス出力
95
+ for(x=0; x<15; x++){
96
+ for(y=0; y<15; y++){
97
+ printf("%d ",a[x][y]);
98
+ }
99
+ printf("\n");
100
+ }
101
+ }
102
+
103
+ int Input(int b){ //移動方向、またキャンセルの選択、1~5の整数の選別
104
+ while(1){
105
+ scanf("%d",&b);
106
+ if((b==1)||(b==2)||(b==3)||(b==4)){
107
+ break;
108
+ }
109
+ else{
110
+ printf("1から4の整数を入力して下さい\n");
111
+ }
112
+ }
113
+ return b;
114
+ }
115
+
116
+ int Copyx(int x,int s){ //x座標のコピー
117
+ s=x;
118
+ return s;
119
+ }
120
+
121
+ int Copyy(int y,int t){ //y座標のコピー
122
+ t=y;
123
+ return t;
124
+ }
125
+
126
+ int Calculatex(int b,int x){ //Inputの選択によるx方向に進む座標の計算
127
+ switch(b)
128
+ {
129
+ case 1:
130
+ if(x==0){
131
+ printf("これより上には進めません\n");
132
+ break;
133
+ }
134
+ else{
135
+ x++;
136
+ break;
137
+ }
138
+ case 4:
139
+ if(x==14){
140
+ printf("これより下には進めません\n");
141
+ break;
142
+ }
143
+ else{
144
+ x--;
145
+ break;
146
+ }
147
+ default:
148
+ break;
149
+ }
150
+ return x;
151
+ }
152
+
153
+ int Calculatey(int b,int y){ //Inputの選択によるy方向に進む座標の計算
154
+ switch(b)
155
+ {
156
+ case 2:
157
+ if(y==0){
158
+ printf("これより左には進めません\n");
159
+ break;
160
+ }
161
+ else
162
+ y--;
163
+ break;
164
+ case 3:
165
+ if(y==14){
166
+ printf("これより右には進めません\n");
167
+ break;
168
+ }
169
+ else
170
+ y++;
171
+ break;
172
+ default:
173
+ break;
174
+ }
175
+ return y;
176
+ }
177
+ /*
178
+ void Beforemove(int s,int t){ //移動後への座標変換
179
+ a[s][t]=0;
180
+ }
181
+ *//*
182
+ void Aftermove(int x,int y){ //移動後への座標変換
183
+ a[x][y]=1;
184
+ }
185
+ */
186
+ void Output2(int x,int y){ //Initialize1の出力。マス出力
187
+ for(x=0; x<15; x++){
188
+ for(y=0; y<15; y++){
189
+ printf("%d ",a[x][y]);
190
+ }
191
+ printf("\n");
192
+ }
193
+ }
194
+
195
+ void Finish(){
196
+ printf("到着です\n");
197
+ }
30
198
  ```