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

質問編集履歴

5

提示コードと文章を修正しました。

2021/01/28 05:11

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- Critical error detected c0000374 の原因が知りたい。
1
+ Critical error detected c0000374 の原因が知りたい。動的にメモリを確保することが危険とはどうすればいいのか?
body CHANGED
@@ -1,13 +1,14 @@
1
- 提示コードのどこかで連続してこの関数を使ってシューティングゲームの弾をロードしてると必ずこのエラーが出るのですが何が悪いのでしょうか? 提示サイトを見たり色々調べましたがわかりません。どうすればいいのでしょうか?
1
+ 提示コードのどこかで連続してこの関数を使ってシューティングゲームの弾をロードしてると必ずこのエラーが出るのですが参考サイトを見ると
2
+ 動的に確保したメモリとありますがこの場合はでは new ですがこれが危険という場合どうすれば動的にメモリを確保すればいいのでしょうか?
2
3
 
3
- アクセスエラー「 Critical error detected c0000374 」
4
4
 
5
5
 
6
- 参考サイト1: https://donadona.hatenablog.jp/entry/2016/10/28/235531
7
- 参考サイト2: https://cdecrement.blog.fc2.com/blog-entry-82.html
8
- 参考サイト3:https://www.366service.com/jp/qa/0891e31516d74502cfd08e3ac20d16b8
9
6
 
10
7
 
8
+ アクセスエラー「 Critical error detected c0000374 」
9
+
10
+
11
+ 参考サイト: https://cdecrement.blog.fc2.com/blog-entry-82.html
11
12
  ```cpp
12
13
  #include "../Header/Texture.hpp"
13
14
  #include "../Header/Game.hpp"

4

文章を修正しました。

2021/01/28 05:11

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- ブレークポイントが発生しまたの原因がどうしてもわからない。
1
+ Critical error detected c0000374 の原因が知りたい。
body CHANGED
@@ -1,433 +1,52 @@
1
- 提示コードのPlayerクラスすがなぜコメント部で囲っあるとろでなぜ"ブレクポイトが発生しました"表示されるょうか?その内部のBulletクラス内部のSpriteクスにもデストラクタ。コピコンストラクタも記述してあるのですが何が原因かどうしてもわかりません。
1
+ 提示コードのどこか連続してこの関数を使ってシュティグゲーム弾をロードてる必ずこラーが出るのですが何が悪いでしょか? 提示サイトを見たり色々調べまたがわかりません。どうすればいいのでしょうか?
2
- printf();を使って値やその場所にコードが移動しているかを確認しましたが何もおかしいところはないためどうしてもわかりません。
3
2
 
4
- エラー「Critical error detected 」
3
+ アクセスエラー「 Critical error detected c0000374 
5
4
 
6
- 仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
7
5
 
6
+ 参考サイト1: https://donadona.hatenablog.jp/entry/2016/10/28/235531
7
+ 参考サイト2: https://cdecrement.blog.fc2.com/blog-entry-82.html
8
+ 参考サイト3:https://www.366service.com/jp/qa/0891e31516d74502cfd08e3ac20d16b8
8
9
 
9
- 実装したい動作「画面の外に弾が移動したら削除する動作でeraseすることによって要素ごと消して欲しい。」
10
-  
11
10
 
12
-
13
-
14
-
15
-
16
-
17
11
  ```cpp
18
- #include "../../Header/Game/Player.hpp"
19
-
20
- // コンストラクタ
21
- Player::Player(class Game* g,const char* fileName ) : Actor_2D()
22
- {
23
- Owner = g; //Game クラス
24
-
25
- mSprite = new Sprite(Owner,fileName); // スプライトクラス
26
- mInput = new Input_Key(Owner); // キー入力クラス
27
- mSpeed = SPEED; // 移動速度
28
- mVector = glm::vec2(0,1); // 方向
29
-
30
- mKeyCode = Key_Code::Up;
31
-
32
-
33
- // RIGHT
34
- mSpriteNum.at(0).at(0).at(0).x = 0;
35
- mSpriteNum.at(0).at(0).at(0).y = 0;
36
- mSpriteNum.at(0).at(0).at(1).x = CELL - 1;
37
- mSpriteNum.at(0).at(0).at(1).y = CELL - 1;
38
-
39
- mSpriteNum.at(0).at(1).at(0).x = 0;
40
- mSpriteNum.at(0).at(1).at(0).y = CELL - 1;
41
- mSpriteNum.at(0).at(1).at(1).x = CELL - 1;
42
- mSpriteNum.at(0).at(1).at(1).y = CELL * 2 - 1;
43
-
44
- // DOWN
45
- mSpriteNum.at(1).at(0).at(0).x = CELL;
46
- mSpriteNum.at(1).at(0).at(0).y = 1;
47
- mSpriteNum.at(1).at(0).at(1).x = CELL * 2 - 1;
48
- mSpriteNum.at(1).at(0).at(1).y = CELL - 1;
49
-
50
- mSpriteNum.at(1).at(1).at(0).x = CELL - 0;
51
- mSpriteNum.at(1).at(1).at(0).y = CELL + 1;
52
- mSpriteNum.at(1).at(1).at(1).x = CELL * 2 - 1;
53
- mSpriteNum.at(1).at(1).at(1).y = CELL * 2 - 1;
54
-
55
- // UP
56
- mSpriteNum.at(2).at(0).at(0).x = CELL * 2 + 1;
57
- mSpriteNum.at(2).at(0).at(0).y = 1;
58
- mSpriteNum.at(2).at(0).at(1).x = CELL * 3;
59
- mSpriteNum.at(2).at(0).at(1).y = CELL - 1;
60
-
61
- mSpriteNum.at(2).at(1).at(0).x = CELL * 2 + 1;
62
- mSpriteNum.at(2).at(1).at(0).y = CELL + 1;
63
- mSpriteNum.at(2).at(1).at(1).x = CELL * 3 - 1;
64
- mSpriteNum.at(2).at(1).at(1).y = CELL * 2 - 1;
65
-
66
- // LEFT
67
- mSpriteNum.at(3).at(0).at(0).x = CELL * 3 + 1;
68
- mSpriteNum.at(3).at(0).at(0).y = 1;
69
- mSpriteNum.at(3).at(0).at(1).x = CELL * 4;
70
- mSpriteNum.at(3).at(0).at(1).y = CELL - 1;
71
-
72
- mSpriteNum.at(3).at(1).at(0).x = CELL * 3 + 1;
73
- mSpriteNum.at(3).at(1).at(0).y = CELL + 1;
74
- mSpriteNum.at(3).at(1).at(1).x = CELL * 4 - 1;
75
- mSpriteNum.at(3).at(1).at(1).y = CELL * 2 - 1;
76
-
77
- }
78
-
79
- // 計算
80
- void Player::Update()
81
- {
82
- // キー入力
83
- mSpeed = SPEED;
84
- if (mInput->KeyDownHold(GLFW_KEY_LEFT) == true)
85
- {
86
- mVector.x = -1.0f;
87
- mVector.y = 0.0f;
88
- mKeyCode = Key_Code::Left;
89
- }
90
- else if (mInput->KeyDownHold(GLFW_KEY_RIGHT) == true)
91
- {
92
- mVector.x = 1.0f;
93
- mVector.y = 0.0f;
94
- mKeyCode = Key_Code::Right;
95
-
96
- }
97
- else if (mInput->KeyDownHold(GLFW_KEY_UP) == true)
98
- {
99
- mVector.x = 0.0f;
100
- mVector.y = 1.0f;
101
- mKeyCode = Key_Code::Up;
102
-
103
- }
104
- else if (mInput->KeyDownHold(GLFW_KEY_DOWN) == true)
105
- {
106
- mVector.x = 0.0f;
107
- mVector.y = -1.0f;
108
- mKeyCode = Key_Code::Down;
109
-
110
- }
111
- else {
112
- mSpeed = 0;
113
- }
114
-
115
- // 攻撃
116
- if (mInput->KeyDown(GLFW_KEY_SPACE) == true)
117
- {
118
- bullet.push_back(Bullet(Owner, mPosition, mVector));
119
- }
120
-
121
- //printf("bullet size: %d\n", bullet.size());
122
-
123
-
124
-
125
- ///////////////////////////////////////////////////////////////////////////////////////////
126
- // 弾 更新
127
- for (std::vector<Bullet>::iterator itr = bullet.begin(); itr != bullet.end(); )
128
- {
129
- if (itr->getPosition().x > Owner->getWindowSize().x - 200)
130
- {///////////////////////////////////////////////////
131
- //printf("いいいいい\n");
132
- itr = bullet.erase(itr);
133
- //////////////////////////////////////////////////
134
- }
135
- else
136
- {
137
- itr->Update();
138
- itr++;
139
- }
140
- }
141
- //////////////////////////////////////////////////////////////////////////////////////////////
142
-
143
-
144
-
145
- // printf("bullet size: %d\n",bullet.size());
146
-
147
-
148
- mPosition += mVector * mSpeed; //実移動
149
- }
150
-
151
-
152
- // 描画
153
- void Player::Draw()
154
- {
155
- /*
156
- for (std::vector<Bullet>::iterator itr = bullet.begin(); itr != bullet.end(); itr++)
157
- {
158
- itr->Draw();
159
- //printf("rrrr\n");
160
- }
161
- */
162
-
163
-
164
- mSprite->DrawGraph(mPosition, mSpriteNum.at((int)mKeyCode).at(1).at(0), mSpriteNum.at((int)mKeyCode).at(1).at(1));
165
- }
166
-
167
-
168
- // デストラクタ
169
- Player::~Player()
170
- {
171
-
172
- }
173
-
174
- ```
175
-
176
- ```cpp
177
- #include "../../Header/Game/Bullet.hpp"
178
- #include "../../Header/Sprite.hpp"
179
-
180
-
181
-
182
- // コンストラクタ
183
- Bullet::Bullet(class Game* g,glm::vec2 pos,glm::vec2 vec) : Actor_2D()
184
- {
185
- Owner = g; //Game クラス
186
-
187
- mPosition = pos; //座標
188
- mVector = vec; //方向
189
- speed = 10; //速度
190
-
191
- mSprite = new Sprite(g,"Assets/Bullet.png"); // スプライトクラス
192
- //mSprite = nullptr;
193
- }
194
-
195
- // 計算
196
- void Bullet::Update()
197
- {
198
- mPosition.x += mVector.x * speed;
199
- mPosition.y += mVector.y * speed;
200
-
201
- // printf("mPosition.x: %f\n", mPosition.x);
202
- // printf("mPosition.y: %f\n",mPosition.y);
203
-
204
- }
205
-
206
- // 描画
207
- void Bullet::Draw()
208
- {
209
- glm::vec2 size = mSprite->getSize();
210
- mSprite->DrawGraph(mPosition,glm::vec2(0,1),glm::vec2(size.x,size.y));
211
- }
212
-
213
-
214
- // 座標を取得
215
- glm::vec2 Bullet::getPosition()
216
- {
217
- return mPosition;
218
- }
219
-
220
- // コピーコンストラクタ
221
- Bullet::Bullet(const Bullet &b)
222
- {
223
- printf("Bullet コピーコンストラクタ\n");
224
-
225
- mPosition = b.mPosition; //座標
226
- mVector = b.mVector; //方向
227
- speed = b.speed; //速度
228
- Owner = b.Owner; //Game クラス
229
-
230
- mSprite = new Sprite(b.Owner,"Assets/Bullet.png"); //スプライト
231
-
232
-
233
- }
234
-
235
-
236
- // デストラクタ
237
- Bullet::~Bullet()
238
- {
239
- printf("Bullet デストラクタ\n");
240
- //printf("アドレス: %x\n",mSprite);
241
-
242
- delete mSprite;
243
- mSprite = nullptr;
244
- }
245
-
246
- ```
247
-
248
- ```cpp
249
- #include "../Header/Sprite.hpp"
12
+ #include "../Header/Texture.hpp"
250
- #include "../Header/Shader.hpp"
251
13
  #include "../Header/Game.hpp"
252
- #include "../Header/Texture.hpp"
253
- #include "../Header/VertexData.hpp"
254
14
 
255
- // 数学ライブラリ
256
- #include "glm/ext.hpp"
257
- #include "glm/glm.hpp"
258
-
259
- // OpenCV
260
- #include <opencv2/core.hpp>
261
-
262
- class Game;
263
- /*################################################################################################################
264
- * 画像 描画クラス
265
- ################################################################################################################*/
266
-
267
- //コンストラクタ
268
- /*
269
- * Game クラス
270
- * テクスチャ パス
271
- * 描画する画像の寸法
272
- */
273
-
274
- Sprite::Sprite(class Game* g, const char* FileName) : Transform_2D(g)
15
+ byte* LoadTexture(const char* str, int& width, int& height,int& channels )
275
16
  {
276
- shader = new Shader(g,"Shader/2D/Sprite.vert", "Shader/2D/Sprite.frag");
277
- Owner = g;//Gameクラス
17
+ cv::Mat image;
278
-
279
- Transform_2D::setTransfrom(glm::vec2(1,1),0,glm::vec2(0,0)); //トランスフォームを初期化
18
+ image = cv::imread(str, cv::IMREAD_UNCHANGED);
19
+
280
20
 
281
- //テクスチャを設定
282
- glGenTextures(1, &TextureID);
283
- glBindTexture(GL_TEXTURE_2D, TextureID);
21
+ //printf("image.channels: %d\n", image.channels()); // 3
284
22
 
23
+ if (image.empty() == true)
24
+ {
25
+ printf("image.empty()\n");
26
+ return nullptr;
27
+ }
28
+ else {
29
+ // printf("load \n");
30
+
285
- float width = 0, height = 0; //画像の寸法
31
+ cv::cvtColor(image, image, cv::COLOR_BGRA2RGBA);
286
- int channels = 0; //画像のチャンネル数
287
32
 
288
- byte* data = LoadTexture(FileName,width,height,channels); //テクスチャを取得
33
+ // printf("channels: %d\n",image.channels()); //4
289
-
34
+ int size = image.rows * image.cols * image.channels();
290
35
 
291
- mPicSize.x = width;
292
- mPicSize.y = height;
293
36
 
294
- //printf("widht: %f\n", width);
37
+ // printf("size: %d\n", size);
38
+ byte* bytes = new byte[size]{ 0 };
295
- //printf("height: %f\n", height);
39
+ std::memcpy(bytes, (void*)image.data, (size_t)size);
40
+
41
+ // 画像サイズを取得
42
+ width = image.cols; // 横
43
+ height = image.rows; // 縦
44
+
45
+ channels = image.channels(); //チャンネル数を取得
296
46
 
297
- if (data != NULL)
298
- {
299
- if (channels == 3)
300
- {
301
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (GLsizei)width, (GLsizei)height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
302
- }
303
- else if (channels == 4)
304
- {
305
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
306
- }
307
- }
308
- else {
309
- std::cerr << "Unable to load texture: " << FileName << std::endl;
310
- }
311
47
 
312
-
313
-
314
- //ミニマップを設定
315
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
316
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
317
- glGenerateMipmap(GL_TEXTURE_2D);
318
-
319
- //異方性フィルタリング設定
48
+ return bytes; // unsigned char*返す
320
- GLfloat largest;
321
- glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest);
322
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest);
323
-
324
-
325
- glDeleteBuffers(1, &VAO);
326
- glDeleteVertexArrays(1, &VAO);
327
-
328
- glBindVertexArray(0);
329
- glBindTexture(GL_TEXTURE_2D, 0);
330
-
331
-
332
- delete data;
49
+ }
333
- data = nullptr;
334
-
335
50
  }
336
51
 
337
- //描画
338
- void Sprite::DrawGraph(glm::vec2 pos, glm::vec2 start, glm::vec2 end)
339
- {
340
-
341
-
342
- Transform_2D::UpdateTransform(); //トランスフォームを更新
343
- Transform_2D::setTransform_Move(pos); //移動
344
-
345
- shader->Enable(); //シェーダーを有効にする
346
- shader->SetFloatUniform_3m("uViewMatrix", getViewMatrix());
347
- shader->SetFloatUniform_3m("uWorldMatrix", getWorldMatrix());
348
-
349
-
350
- glm::vec2 mSize;
351
- mSize = end - start; //画像のサイズを取得
352
-
353
-
354
-
355
-
356
- // 頂点情報を設定
357
- vertex[0] = VertexAttribute_2D{ -mSize.x / 2.0f,mSize.y / 2.0f, start.x / mPicSize.x ,start.y / mPicSize.y };
358
-
359
-
360
-
361
- vertex[1] = VertexAttribute_2D{ -mSize.x / 2.0f,-mSize.y / 2.0f, start.x / mPicSize.x ,end.y / mPicSize.y };
362
- vertex[2] = VertexAttribute_2D{ mSize.x / 2.0f,-mSize.y / 2.0f, end.x / mPicSize.x ,end.y / mPicSize.y };
363
-
364
- vertex[3] = VertexAttribute_2D{ -mSize.x / 2.0f,mSize.y / 2.0f, start.x / mPicSize.x ,start.y / mPicSize.y };
365
- vertex[4] = VertexAttribute_2D{ mSize.x / 2.0f,-mSize.y / 2.0f, end.x / mPicSize.x ,end.y / mPicSize.y };
366
- vertex[5] = VertexAttribute_2D{ mSize.x / 2.0f,mSize.y / 2.0f, end.x / mPicSize.x ,start.y / mPicSize.y };
367
-
368
-
369
-
370
- //VAO
371
- glGenVertexArrays(1, &VAO);
372
- glBindVertexArray(VAO);
373
-
374
- //VBO
375
- glGenBuffers(1, &VBO);
376
- glBindBuffer(GL_ARRAY_BUFFER, VBO);
377
- glBufferData(GL_ARRAY_BUFFER, (sizeof(vertex) / sizeof(vertex[0])) * sizeof(VertexAttribute_2D), vertex, GL_STATIC_DRAW);
378
-
379
- //頂点座標
380
- glEnableVertexAttribArray(0);
381
- glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(VertexAttribute_2D), NULL);
382
-
383
- //UV座標
384
- glEnableVertexAttribArray(1);
385
- glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(VertexAttribute_2D), (void*)(sizeof(float) * 2));
386
-
387
-
388
- glBindVertexArray(VAO);
389
- glBindTexture(GL_TEXTURE_2D, TextureID);
390
- glDrawArrays(GL_TRIANGLES, 0, (GLsizei)std::size(vertex));
391
-
392
- // バッファを解放
393
- glDeleteBuffers(1,&VAO);
394
- glDeleteVertexArrays(1,&VAO);
395
-
396
- //glBindVertexArray(0);
397
- // glBindTexture(GL_TEXTURE_2D, 0);
398
-
399
- }
400
-
401
-
402
-
403
- // 画像サイズを取得
404
- glm::vec2 Sprite::getSize()
405
- {
406
- return mPicSize;
407
- }
408
-
409
-
410
-
411
- // デストラクタ
412
- Sprite::Sprite(const Sprite & sp) : Transform_2D(sp.Owner)
413
- {
414
- shader = new Shader(sp.Owner, "Shader/2D/Sprite.vert", "Shader/2D/Sprite.frag");
415
- Owner = sp.Owner;//Gameクラス
416
- mPicSize.x = sp.mPicSize.x;
417
- mPicSize.y = sp.mPicSize.y;
418
-
419
-
420
- }
421
-
422
-
423
- // デストラクタ
424
- Sprite::~Sprite()
425
- {
426
- printf("Sprite delete\n");
427
- delete shader;
428
- shader = nullptr;
429
- glDeleteTextures(1,&TextureID);
430
-
431
- }
432
-
433
52
  ```

3

文章を修正しました。

2021/01/28 04:46

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  提示コードのPlayerクラスですがなぜコメント部で囲ってあるところでなぜ"ブレークポイントが発生しました"表示されるのでしょうか?その内部のBulletクラスとその内部のSpriteクラスにもデストラクタ。コピーコンストラクタも記述してあるのですが何が原因のかどうしてもわかりません。
2
2
  printf();を使って値やその場所にコードが移動しているかを確認しましたが何もおかしいところはないためどうしてもわかりません。
3
3
 
4
+ エラー「Critical error detected 」
4
5
 
5
6
  仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
6
7
 

2

文章を修正しました。

2021/01/28 04:06

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 例外がスロされましたのどうしても原因がわからない。
1
+ ブレクポイントが発生たの原因がどうしてもわからない。
body CHANGED
@@ -1,8 +1,8 @@
1
- 提示コードのPlayerクラスですがなぜコメント部で囲ってあるところで例外がスロされました表示されるのでしょうか?その内部のBulletクラスとその内部のSpriteクラスにもデストラクタ。コピーコンストラクタも記述してあるのですが何が原因のかどうしてもわかりません。
1
+ 提示コードのPlayerクラスですがなぜコメント部で囲ってあるところでなぜ"ブレクポイントが発生しました"表示されるのでしょうか?その内部のBulletクラスとその内部のSpriteクラスにもデストラクタ。コピーコンストラクタも記述してあるのですが何が原因のかどうしてもわかりません。
2
2
  printf();を使って値やその場所にコードが移動しているかを確認しましたが何もおかしいところはないためどうしてもわかりません。
3
3
 
4
4
 
5
- ゲーム内仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
5
+ 仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
6
6
 
7
7
 
8
8
  実装したい動作「画面の外に弾が移動したら削除する動作でeraseすることによって要素ごと消して欲しい。」
@@ -348,8 +348,6 @@
348
348
 
349
349
  glm::vec2 mSize;
350
350
  mSize = end - start; //画像のサイズを取得
351
- // printf("mSize.x %f\n", mSize.x);
352
- //` printf("start.x. x%f\n", end.x);
353
351
 
354
352
 
355
353
 
@@ -357,8 +355,8 @@
357
355
  // 頂点情報を設定
358
356
  vertex[0] = VertexAttribute_2D{ -mSize.x / 2.0f,mSize.y / 2.0f, start.x / mPicSize.x ,start.y / mPicSize.y };
359
357
 
360
- // printf("%f\n", start.y / mSize.y);
361
358
 
359
+
362
360
  vertex[1] = VertexAttribute_2D{ -mSize.x / 2.0f,-mSize.y / 2.0f, start.x / mPicSize.x ,end.y / mPicSize.y };
363
361
  vertex[2] = VertexAttribute_2D{ mSize.x / 2.0f,-mSize.y / 2.0f, end.x / mPicSize.x ,end.y / mPicSize.y };
364
362
 

1

文章を修正しました。

2021/01/28 03:55

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,10 @@
1
1
  提示コードのPlayerクラスですがなぜコメント部で囲ってあるところで例外がスローされましたと表示されるのでしょうか?その内部のBulletクラスとその内部のSpriteクラスにもデストラクタ。コピーコンストラクタも記述してあるのですが何が原因のかどうしてもわかりません。
2
2
  printf();を使って値やその場所にコードが移動しているかを確認しましたが何もおかしいところはないためどうしてもわかりません。
3
3
 
4
+
5
+ ゲーム内仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
6
+
7
+
4
8
  実装したい動作「画面の外に弾が移動したら削除する動作でeraseすることによって要素ごと消して欲しい。」
5
9
   
6
10