#1
by Hyoka » 4年前
現在、visual studio2019でシューティングをつくっているのですが、下のプログラムでは
エラー C4700 初期化されていないローカル変数’player’が使用されます
と出てしまいます。
どのようにすれば、エラーがでずにこのよう形で実行できるのでしょうか?
このプログラムは情報として必要だと思うところを記述し
他は( ・・・ )を使って省略を表しています
#include <Windows.h>
//キャラクター
struct CHARA
{
int x,y;//表示座標
int cntx, cnty; //フラグ
bool flg; //フラグ
};
enum GAME
{
TITLE, //0:タイトル画面
PLAY, //1:ゲーム中
OVER, //2:ゲームオーバー
CLEAR //3:ゲームクリア
};
//スレッド関数
DWORD WINAPI ThreadFunc(LPVOID vdParam)
{
//変数宣言のコピー先
GameWindow* gameWnd; //ゲームウィンドウ構造体
DWORD frame = 0; //フレーム数
DWORD beforeTime; //前の時間
・・・・・
CHARA player; //プレイヤー
・・・・・
//渡された値(ゲームウィンドウ構造体)を取得
gameWnd = (GameWindow*)vdParam;
//メモリDCの作成
hMemDC = CreateCompatibleDC(NULL); //Compatible 互換性
//時間の取得
beforeTime = timeGetTime();
while (1)
{
switch (game)
{
case TITLE: //タイトル画面
if (GetAsyncKeyState(VK_LBUTTON) & 0x1)
{
game = PLAY; //ゲーム中へ
//=== 初期化 ==//
//プレイヤー
player.x = WND_W / 5;
player.y = WND_H / 2;
player.flg = false;
player.cntx = 0;
player.cnty = 0;
}
break;
case PLAY: //ゲーム中
if (GetAsyncKeyState('W') & 0x8000)
{
player.y -= 5; <---エラーの出る位置
}
if (GetAsyncKeyState('S') & 0x8000)
{
player.y += 5;
}
if (GetAsyncKeyState('D') & 0x8000)
{
player.x += 5;
}
if (GetAsyncKeyState('A') & 0x8000)
{
player.x -= 5;
}
・・・・・・
break;
・・・・・・
}
}
現在、visual studio2019でシューティングをつくっているのですが、下のプログラムでは
エラー C4700 初期化されていないローカル変数’player’が使用されます
と出てしまいます。
どのようにすれば、エラーがでずにこのよう形で実行できるのでしょうか?
このプログラムは情報として必要だと思うところを記述し
他は( ・・・ )を使って省略を表しています
#include <Windows.h>
//キャラクター
struct CHARA
{
int x,y;//表示座標
int cntx, cnty; //フラグ
bool flg; //フラグ
};
enum GAME
{
TITLE, //0:タイトル画面
PLAY, //1:ゲーム中
OVER, //2:ゲームオーバー
CLEAR //3:ゲームクリア
};
//スレッド関数
DWORD WINAPI ThreadFunc(LPVOID vdParam)
{
//変数宣言のコピー先
GameWindow* gameWnd; //ゲームウィンドウ構造体
DWORD frame = 0; //フレーム数
DWORD beforeTime; //前の時間
・・・・・
CHARA player; //プレイヤー
・・・・・
//渡された値(ゲームウィンドウ構造体)を取得
gameWnd = (GameWindow*)vdParam;
//メモリDCの作成
hMemDC = CreateCompatibleDC(NULL); //Compatible 互換性
//時間の取得
beforeTime = timeGetTime();
while (1)
{
switch (game)
{
case TITLE: //タイトル画面
if (GetAsyncKeyState(VK_LBUTTON) & 0x1)
{
game = PLAY; //ゲーム中へ
//=== 初期化 ==//
//プレイヤー
player.x = WND_W / 5;
player.y = WND_H / 2;
player.flg = false;
player.cntx = 0;
player.cnty = 0;
}
break;
case PLAY: //ゲーム中
if (GetAsyncKeyState('W') & 0x8000)
{
player.y -= 5; <---エラーの出る位置
}
if (GetAsyncKeyState('S') & 0x8000)
{
player.y += 5;
}
if (GetAsyncKeyState('D') & 0x8000)
{
player.x += 5;
}
if (GetAsyncKeyState('A') & 0x8000)
{
player.x -= 5;
}
・・・・・・
break;
・・・・・・
}
}