質問編集履歴

1

提示コードを修正

2021/05/03 04:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,4 @@
1
- 提示コードの#define 部ですが二重deleteは良くないので#defineを使って防いでいるのですがこれは正解なのでしょうか?関数で書くと型の問題で
1
+ 提示コードの#define 部ですが二重deleteは良くないので#defineを使って防いでいるのですがこれは正解なのでしょうか?関数で書くと型の問題で汎用性が損なるのでこうしました。 提示コードの下のEntryクラスですが使い方としてif()文を使ってもし**nullptrじゃないとき等を使って分岐するとコードが見ずらくなる**ので使ってみましたが正しいのでしょうか?
2
-
3
- 汎用性が損なるのでこうしました。
4
2
 
5
3
 
6
4
 
@@ -32,15 +30,31 @@
32
30
 
33
31
 
34
32
 
33
+ SAFE_DELETE(a);
34
+
35
+ SAFE_DELETE(a);
36
+
37
+
38
+
39
+ return 0;
40
+
41
+ }
42
+
43
+ ```
35
44
 
36
45
 
37
46
 
38
47
 
39
48
 
49
+ ```cpp
40
50
 
41
- SAFE_DELETE(a);
51
+ #include "Entry.hpp"
42
52
 
53
+ #include "Title.hpp"
54
+
43
- SAFE_DELETE(a);
55
+ #include "Game.hpp"
56
+
57
+ #include "GameOver.hpp"
44
58
 
45
59
 
46
60
 
@@ -50,10 +64,132 @@
50
64
 
51
65
 
52
66
 
67
+ Entry::Entry()
68
+
69
+ {
70
+
71
+ changeScene = Scene::Title;
53
72
 
54
73
 
74
+
75
+ title = nullptr; //タイトル
76
+
55
- return 0;
77
+ game = nullptr; //ゲーム
78
+
79
+ gameOver = nullptr; //ゲームオーバー
56
80
 
57
81
  }
58
82
 
83
+
84
+
85
+ void Entry::Loop()
86
+
87
+ {
88
+
89
+
90
+
91
+ //シーン推移
92
+
93
+ if (title != nullptr)
94
+
95
+ {
96
+
97
+ title->Loop(this);
98
+
99
+ }
100
+
101
+ else if (game != nullptr)
102
+
103
+ {
104
+
105
+ game->Loop(this);
106
+
107
+ }
108
+
109
+ else if (gameOver != nullptr)
110
+
111
+ {
112
+
113
+ gameOver->Loop(this);
114
+
115
+ }
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+ //シーン削除
124
+
125
+ switch (changeScene)
126
+
127
+ {
128
+
129
+ case Scene::Title:
130
+
131
+ {
132
+
133
+ SAFE_DELETE(game);
134
+
135
+ SAFE_DELETE(gameOver);
136
+
137
+ title = new Title();
138
+
139
+ };
140
+
141
+ break;
142
+
143
+
144
+
145
+ case Scene::Game:
146
+
147
+ {
148
+
149
+ SAFE_DELETE(title);
150
+
151
+ game = new Game();
152
+
153
+ };
154
+
155
+ break;
156
+
157
+
158
+
159
+ case Scene::GameOver:
160
+
161
+ {
162
+
163
+ SAFE_DELETE(game);
164
+
165
+ gameOver = new GameOver();
166
+
167
+ };
168
+
169
+ break;
170
+
171
+ }
172
+
173
+ }
174
+
175
+
176
+
177
+ //シーン切り替え
178
+
179
+ void Entry::MoveTo(Scene e)
180
+
181
+ {
182
+
183
+ changeScene = e;
184
+
185
+ }
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
59
195
  ```