質問編集履歴
3
詳細を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,20 +8,25 @@
|
|
8
8
|
これはmain.cppでグローバル変数として定義し、define.hでextern宣言して共有できるようにしています。』
|
9
9
|
|
10
10
|
と説明されていたので
|
11
|
-
main.cpp に
|
11
|
+
main.cpp に int g_count; と追加し
|
12
|
-
define.h に extern
|
12
|
+
define.h に extern int g_count; と追加したところ見たことないエラーが出てしまい色々試したのですが解決できません。
|
13
13
|
どなたか分かる方助けてほしいです。
|
14
14
|
|
15
|
+
追記
|
16
|
+
あれからc言語の基礎など学んだりしたのですが未だに進めていません。
|
17
|
+
どなたか解決方法をお願いしたいです。
|
18
|
+
|
19
|
+
|
15
20
|
エラーメッセージ
|
16
21
|
```
|
17
|
-
>------ ビルド開始: プロジェクト: gamegame, 構成: Release Win32 ------
|
22
|
+
1>------ ビルド開始: プロジェクト: gamegame, 構成: Release Win32 ------
|
18
23
|
1>back.cpp
|
19
24
|
1>control.cpp
|
20
25
|
1>enemy.cpp
|
21
26
|
1>main.cpp
|
22
27
|
1>pch.cpp
|
23
28
|
1>player.cpp
|
24
|
-
1>control.obj : error LNK2001: 外部シンボル "
|
29
|
+
1>control.obj : error LNK2001: 外部シンボル "int g_count" (?g_count@@3HA) は未解決です
|
25
30
|
1>C:\Users\rikua\source\repos\gamegame\Release\gamegame.exe : fatal error LNK1120: 1 件の未解決の外部参照
|
26
31
|
1>プロジェクト "gamegame.vcxproj" のビルドが終了しました -- 失敗。
|
27
32
|
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
|
@@ -33,40 +38,35 @@
|
|
33
38
|
#include "control.h"
|
34
39
|
|
35
40
|
|
41
|
+
|
36
42
|
//キー取得用配列
|
37
43
|
char key[256];
|
38
|
-
// 弾のカウント
|
39
|
-
char g_count;
|
40
44
|
|
41
45
|
// プログラムは WinMain から始まります
|
42
|
-
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
46
|
+
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
|
43
47
|
{
|
44
48
|
ChangeWindowMode(TRUE);
|
45
49
|
|
46
|
-
if
|
50
|
+
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
|
47
51
|
{
|
48
|
-
return -1; // エラーが起きたら直ちに終了
|
52
|
+
return -1 ; // エラーが起きたら直ちに終了
|
49
53
|
}
|
50
54
|
|
51
55
|
|
52
|
-
CONTROL
|
56
|
+
CONTROL *control = new CONTROL;
|
53
57
|
|
58
|
+
|
54
59
|
|
55
|
-
|
56
|
-
while
|
60
|
+
while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){
|
57
|
-
|
61
|
+
|
58
62
|
control->All();
|
59
|
-
|
63
|
+
|
60
64
|
}
|
61
65
|
|
62
66
|
|
63
|
-
|
67
|
+
DxLib_End() ; // DXライブラリ使用の終了処理
|
64
68
|
|
65
|
-
|
66
|
-
|
67
|
-
DxLib_End(); // DXライブラリ使用の終了処理
|
68
|
-
|
69
|
-
return 0; // ソフトの終了
|
69
|
+
return 0 ; // ソフトの終了
|
70
70
|
}
|
71
71
|
```
|
72
72
|
define.h
|
@@ -85,7 +85,7 @@
|
|
85
85
|
|
86
86
|
//extern宣言してkey配列にどこからでもアクセスできるようにする
|
87
87
|
extern char key[256];
|
88
|
-
extern
|
88
|
+
extern int g_count;
|
89
89
|
|
90
90
|
|
91
91
|
|
@@ -101,4 +101,155 @@
|
|
101
101
|
int width, height;//画像の幅と高さ
|
102
102
|
};
|
103
103
|
|
104
|
+
|
105
|
+
|
106
|
+
```
|
107
|
+
enemy.cpp
|
108
|
+
|
109
|
+
```
|
110
|
+
#include "pch.h"
|
111
|
+
#include "enemy.h"
|
112
|
+
|
113
|
+
ENEMY::ENEMY()
|
114
|
+
{
|
115
|
+
LoadDivGraph("enemy.png", 3, 1, 3, 27, 25, gh);
|
116
|
+
|
117
|
+
width = 27;
|
118
|
+
height = 25;
|
119
|
+
|
120
|
+
x = 50;
|
121
|
+
y = -50;
|
122
|
+
|
123
|
+
in_time = 180;
|
124
|
+
|
125
|
+
stop_time = 300;
|
126
|
+
|
127
|
+
out_time = 420;
|
128
|
+
|
129
|
+
count = 0;
|
130
|
+
|
131
|
+
endflag = false;
|
132
|
+
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
void ENEMY::Move()
|
137
|
+
{
|
138
|
+
//出てきてから止まる時間までの間なら下に移動
|
139
|
+
if (in_time < g_count && g_count < stop_time) {
|
140
|
+
y += 2;
|
141
|
+
//帰還時間を過ぎたら戻る。
|
142
|
+
}
|
143
|
+
else if (g_count > out_time) {
|
144
|
+
y -= 2;
|
145
|
+
if (y < -40) {
|
146
|
+
endflag = true;
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
void ENEMY::Draw()
|
152
|
+
{
|
153
|
+
int temp;
|
154
|
+
|
155
|
+
if (!endflag) {
|
156
|
+
|
157
|
+
temp = count % 40 / 10;
|
158
|
+
if (temp == 3)
|
159
|
+
temp = 1;
|
160
|
+
|
161
|
+
DrawGraph(x, y, gh[temp], TRUE);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
|
166
|
+
bool ENEMY::All()
|
167
|
+
{
|
168
|
+
Move();
|
169
|
+
|
170
|
+
Draw();
|
171
|
+
|
172
|
+
++count;
|
173
|
+
|
174
|
+
return endflag;
|
175
|
+
}
|
176
|
+
|
177
|
+
```
|
178
|
+
|
179
|
+
enemy.h
|
180
|
+
```
|
181
|
+
#include "pch.h"
|
182
|
+
class ENEMY {
|
183
|
+
private:
|
184
|
+
double x, y;
|
185
|
+
int gh[3];
|
186
|
+
|
187
|
+
int width, height;
|
188
|
+
|
189
|
+
int in_time, stop_time, out_time;
|
190
|
+
|
191
|
+
int count;
|
192
|
+
|
193
|
+
bool endflag;
|
194
|
+
|
195
|
+
public:
|
196
|
+
bool All();
|
197
|
+
void Move();
|
198
|
+
void Draw();
|
199
|
+
ENEMY();
|
200
|
+
};
|
201
|
+
|
202
|
+
```
|
203
|
+
control.cpp
|
204
|
+
```
|
205
|
+
#include "pch.h"
|
206
|
+
#include "control.h"
|
207
|
+
|
208
|
+
|
209
|
+
CONTROL::CONTROL()
|
210
|
+
{
|
211
|
+
//プレイヤークラスの生成
|
212
|
+
player = new PLAYER;
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
back = new BACK;
|
217
|
+
|
218
|
+
}
|
219
|
+
|
220
|
+
CONTROL::~CONTROL()
|
221
|
+
{
|
222
|
+
//プレイヤークラスの解放
|
223
|
+
delete player;
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
}
|
228
|
+
|
229
|
+
void CONTROL::All()
|
230
|
+
{
|
231
|
+
|
232
|
+
//描画領域を指定
|
233
|
+
SetDrawArea(MARGIN, MARGIN, MARGIN + 380, MARGIN + 460);
|
234
|
+
|
235
|
+
back->All();
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
player->All();
|
240
|
+
|
241
|
+
|
242
|
+
if (enemy != NULL) {
|
243
|
+
if (enemy->All()) {
|
244
|
+
delete enemy;
|
245
|
+
enemy = NULL;
|
246
|
+
}
|
247
|
+
}
|
248
|
+
|
249
|
+
++g_count;
|
250
|
+
}
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
コード
|
104
255
|
```
|
2
関係ないタグがあった
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
1
抜けていた文字を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -69,8 +69,6 @@
|
|
69
69
|
return 0; // ソフトの終了
|
70
70
|
}
|
71
71
|
```
|
72
|
-
|
73
|
-
|
74
72
|
define.h
|
75
73
|
```
|
76
74
|
|