Run-Time Check Failure #3 - The variable 'pp' is being used without being initialized.
と出て別のプログラム?が出てきてしまいます。
crt0.cが出てきます。
コード:
/*STG弾.h*/
typedef struct DATA2{
int hp, //状態
xx, //x座標
yy; //y座標
int x, //中心x座標
y, //中心y座標
z; //弾の大きさ
int dd; //攻撃力
int ax, //中心の移動量
ay, //中心の移動量
o, //xとyの角度
ao, //角度の変化値
as, //中心からの長さの変化値
s, //中心からの長さ
so, //中心からの角度
aso;//中心からの角度の変化値
int time;//消えるまでの時間(単位:1/60秒)
}TAMA,*TAMA2;
void tama_liset(TAMA2 tt){
for(int a=0;a<50;a++){
(tt+a)->hp=0;
(tt+a)->xx=0;
(tt+a)->yy=0;
(tt+a)->x=0;
(tt+a)->y=0;
(tt+a)->z=0;
(tt+a)->dd=0;
(tt+a)->ax=0;
(tt+a)->ay=0;
(tt+a)->o=0;
(tt+a)->ao=0;
(tt+a)->s=0;
(tt+a)->as=0;
(tt+a)->so=0;
(tt+a)->aso=0;
(tt+a)->time=0;
}
}
コード:
#include "DxLib.h"
#include "STG弾.h"
int Key[256];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
else GetHitKeyStateAll_InputKey[i]=0;
}
return 0;
}
//背景
void haikei(int yy){
int z=32;
//縦線
for(int x=z;x<640;x+=z)
DrawLine(x,0,x,480,GetColor(100,100,100));
//横線
for(int y=z;y<480;y+=z)
DrawLine(0,y+yy,640,y+yy,GetColor(100,100,100));
}
//プレイヤーの情報
typedef struct DATA{
int x,
y;
int ax,
ay;
}PREI,*PREI2;
//移動用
void idou(PREI2 pp){
int furagu=4;
int cont=0xffff;
if(Key[KEY_INPUT_UP]!=0 && Key[KEY_INPUT_UP]<cont){
cont=Key[KEY_INPUT_UP];
furagu=0;
}
if(Key[KEY_INPUT_DOWN]!=0 && Key[KEY_INPUT_DOWN]<cont){
cont=Key[KEY_INPUT_DOWN];
furagu=2;
}
if(furagu==0)
pp->ay=-4;
else if(furagu==2)
pp->ay=4;
else pp->ay=0;
cont=0xffff;
if(Key[KEY_INPUT_RIGHT]!=0 && Key[KEY_INPUT_RIGHT]<cont){
cont=Key[KEY_INPUT_RIGHT];
furagu=1;
}
if(Key[KEY_INPUT_LEFT]!=0 && Key[KEY_INPUT_LEFT]<cont){
cont=Key[KEY_INPUT_LEFT];
furagu=3;
}
if(furagu==1)
pp->ax=4;
else if(furagu==3)
pp->ax=-4;
else pp->ax=0;
//移動させる
pp->x+=pp->ax;
pp->y+=pp->ay;
//行きすぎないように処理
if(640-32<pp->x)pp->x=640-32;
if(pp->x<0)pp->x=0;
if(480-32<pp->y)pp->y=480-32;
if(pp->y<0)pp->y=0;
}
//描写
void gazou(PREI2 pp,TAMA2 tt){
DrawBox(pp->x,pp->y,pp->x+32,pp->y+32,GetColor(50,50,200), FALSE) ; // 四角形を描画;
for(int a=0;a<50;a++){
if(0<(tt+a)->hp)DrawCircle((tt+a)->xx,(tt+a)->yy,(tt+a)->z,GetColor(200,200,200),0);
}
}
//メインになる関数
int state(PREI2 pp){
int yy=0;
TAMA t[50];
tama_liset(t);
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
//移動
idou(pp);
//背景の処理
if(yy<31)yy++;
else yy=0;
haikei(yy);
//自分の描写
gazou(pp,t);
ScreenFlip();
}
return 0;
}
//メイン関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
PREI p;
//自分の初期化
p.x=640/2;
p.y=480/2;
p.ax=0;
p.ay=0;
state(&p);
DxLib_End();
return 0;
}
変更点も含めたすべてのプログラムです。