質問編集履歴

4

新しいのを作った

2018/06/05 11:28

投稿

AzukiV
AzukiV

スコア15

test CHANGED
@@ -1 +1 @@
1
- 二つのゲームを合わせて一つのゲームにしたい
1
+ 二つのゲームを合わせて一つのゲームにしたい (削除依頼済)
test CHANGED
File without changes

3

タイトル変更

2018/06/05 11:28

投稿

AzukiV
AzukiV

スコア15

test CHANGED
@@ -1 +1 @@
1
- 二つのゲームを一つにしたい
1
+ 二つのゲームを合わせて一つのゲームにしたい
test CHANGED
File without changes

2

追加

2018/06/05 09:30

投稿

AzukiV
AzukiV

スコア15

test CHANGED
File without changes
test CHANGED
@@ -166,7 +166,7 @@
166
166
 
167
167
 
168
168
 
169
- ball[j].set(mouseX + 15, mouseY + 15, random(5, 8), random(5,8)); //(float X, float Y, float enspX, float enspY)
169
+ ball[j].set(mouseX + 15, mouseY + 15, random(5, 8), random(5,8)); //(float X, float Y, float enspX, float enspY) enspXは敵のボールのX速度 enspYは敵ボールのY速度
170
170
 
171
171
 
172
172
 

1

ソースコード

2018/06/05 09:21

投稿

AzukiV
AzukiV

スコア15

test CHANGED
File without changes
test CHANGED
@@ -14,4 +14,316 @@
14
14
 
15
15
 
16
16
 
17
+ 下記の二つのゲームを一つのゲームとして成り立たせたいです。
18
+
19
+ 概要は青いボールを避けながら、上から降ってくる赤いボールに触れるというものです。
20
+
21
+
22
+
23
+
24
+
25
+ ```
26
+
27
+ float frballx; //仲間ボールのx座標
28
+
29
+ float frbally; //仲間ボールのy座標
30
+
31
+
32
+
33
+ float frsp=0; //仲間ボールの速度
34
+
35
+ float fra=0; //仲間ボールの加速度
36
+
37
+ float g = 3;
38
+
39
+
40
+
41
+
42
+
43
+ float touch=0;
44
+
45
+
46
+
47
+ void setup(){
48
+
49
+
50
+
51
+ size(500,650);
52
+
53
+
54
+
55
+ frballx=width/2;
56
+
57
+ }
58
+
59
+
60
+
61
+ void draw(){
62
+
63
+ background(255);
64
+
65
+ smooth();
66
+
67
+
68
+
69
+ frsp = frsp + g /30+fra;
70
+
17
- 分かりにくくてすみません。何がだめなのでしょうか?
71
+ frbally = frbally + frsp;
72
+
73
+
74
+
75
+ stroke(255,0,0);
76
+
77
+ fill(255,0,0);
78
+
79
+ ellipse(frballx,frbally,30,30);
80
+
81
+
82
+
83
+ if(frbally>665){
84
+
85
+ textSize(20);
86
+
87
+ text("GameOver",20,20);
88
+
89
+ frameRate(0);
90
+
91
+ }
92
+
93
+ if(mouseX>frballx-30 && mouseX<frballx+30 && mouseY>frbally-30 && mouseY<frbally+30){
94
+
95
+
96
+
97
+ touch=80;
98
+
99
+
100
+
101
+ fra=0.0001;
102
+
103
+
104
+
105
+ next(); //次の球がでる
106
+
107
+ }}
108
+
109
+
110
+
111
+ //次の球の設定
112
+
113
+ void next(){
114
+
115
+ frbally=-200;
116
+
117
+ frsp=0;
118
+
119
+ frballx=20 + random(465);
120
+
121
+
122
+
123
+ }
124
+
125
+ ```
126
+
127
+ ```
128
+
129
+ enball[] ball = new enball[7]; //敵ボールの定義
130
+
131
+
132
+
133
+ int i = 0; // forに使う
134
+
135
+ int j= 0; // 同上
136
+
137
+
138
+
139
+ int M7 = 0; // ボールが7個ある
140
+
141
+
142
+
143
+ float[] enballx = new float[7]; // 敵ボールの座標
144
+
145
+ float[] enbally = new float[7]; //
146
+
147
+ int flg = 0;
148
+
149
+
150
+
151
+
152
+
153
+ void setup() {
154
+
155
+
156
+
157
+ size(500,650);
158
+
159
+
160
+
161
+ for (i = 0; i < 7; i=i+1) {
162
+
163
+
164
+
165
+ ball[i] = new enball(30, 30, 30, 30); //敵ボール
166
+
167
+
168
+
169
+ ball[j].set(mouseX + 15, mouseY + 15, random(5, 8), random(5,8)); //(float X, float Y, float enspX, float enspY)
170
+
171
+
172
+
173
+ j=j+1;
174
+
175
+ if (j == 7) {
176
+
177
+ j = 0;
178
+
179
+ M7 = 1;
180
+
181
+ }
182
+
183
+ }
184
+
185
+ }
186
+
187
+
188
+
189
+
190
+
191
+ void draw() {
192
+
193
+ background(255);
194
+
195
+ for (i = 0; i < 7; i=i+1) {
196
+
197
+
198
+
199
+ ball[i].latest(); //最新の画面に切り替える
200
+
201
+ ball[i].hitwall(); //画面の上下左右端に当たったときの設定用
202
+
203
+ ball[i].ballfun(); //ボールの設定用 function
204
+
205
+
206
+
207
+ hitme(); // ボールが自機にヒットしたときの設定用
208
+
209
+ }
210
+
211
+ stroke(255,0,0);
212
+
213
+ fill(255,0,0);
214
+
215
+ rect(mouseX-5, mouseY-5, 10, 10); //自機の設定
216
+
217
+
218
+
219
+ }
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+ class enball { //敵ボール
228
+
229
+
230
+
231
+ PVector posi; //位置を定義
232
+
233
+ PVector ensp; //速度を定義
234
+
235
+ enball(float X, float Y, float enspX, float enspY) {
236
+
237
+
238
+
239
+ posi = new PVector(X, Y); //向きベクトル
240
+
241
+ ensp = new PVector(enspX, enspY); //速度ベクトル
242
+
243
+ }
244
+
245
+
246
+
247
+
248
+
249
+ void latest() {
250
+
251
+ posi.add(ensp); //位置+速度
252
+
253
+ }
254
+
255
+
256
+
257
+
258
+
259
+ void hitwall() {
260
+
261
+ if ((posi.x > width)||(posi.x < 0)) {
262
+
263
+ ensp.x = -ensp.x; //ボールが左右の壁に触れると反射
264
+
265
+ }
266
+
267
+ if ((posi.y > height)||(posi.y < 0)) {
268
+
269
+ ensp.y = -ensp.y; //ボールが上下の壁に触れると反射
270
+
271
+ }
272
+
273
+ }
274
+
275
+
276
+
277
+ void ballfun() {
278
+
279
+ stroke(0,0,255);
280
+
281
+ fill(0,0,255);
282
+
283
+ ellipse(posi.x+10, posi.y+10, 30, 30); //ボールの描画
284
+
285
+ enballx[i] = posi.x;
286
+
287
+ enbally[i] = posi.y;
288
+
289
+ }
290
+
291
+
292
+
293
+ void set(float X, float Y, float enspX, float enspY) { //位置、速度
294
+
295
+ posi.set(X, Y);
296
+
297
+ ensp.set(enspX, enspY);
298
+
299
+ }
300
+
301
+
302
+
303
+ }
304
+
305
+
306
+
307
+
308
+
309
+ void hitme() { //敵ボールが自機ふヒットしたときGameOver
310
+
311
+
312
+
313
+ if (M7 == 1 && mouseX + 18 > enballx[i] && mouseX - 18 < enballx[i] && mouseY + 18 > enbally[i] && mouseY - 18 < enbally[i] || flg == 1) {
314
+
315
+
316
+
317
+ fill(255,0,0); // 文字色
318
+
319
+ textSize(20);
320
+
321
+ text("GameOver",20,20);
322
+
323
+ noLoop();
324
+
325
+ }
326
+
327
+ }
328
+
329
+ ```