|
分類:[C/C++]
Visual C++ 2008 Expressを使用、DXライブラリを使用してます。
単刀直入に言います。Bボタンで弾を発射させたいんですが、なぜかBボタンを長押ししないと弾が描写されないんですよ。そしてデバッグをしても原因が分からないんですよ。
多分ささいなミスか、または根本的に考え方が間違えているのかもしれません。だれか親切な方、どこをどうすればいいのか教えてください。
#include "DxLib.h"
int x,y;
int idoutime1,idoutime2,idouf;
int tamatime1,tamatime2,tamaY[6],tamaX[6],tamaf[6],tamacount;
void idou()
{
//左キー入力時
if( CheckHitKey( KEY_INPUT_LEFT ) == 1 && idouf == 1 && x != 75 )
{
idouf = 0;
x = x - 105;
idoutime1 = GetNowCount();
idoutime2 = GetNowCount();
}
//右キー入力時
else if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 && idouf == 1 && x != 285 )
{
idouf = 0;
x = x + 105;
idoutime1 = GetNowCount();
idoutime2 = GetNowCount();
}
//下キー入力時
else if( CheckHitKey( KEY_INPUT_DOWN ) == 1 && idouf == 1 && y != 400 )
{
idouf = 0;
y = y + 100;
idoutime1 = GetNowCount();
idoutime2 = GetNowCount();
}
//上キー入力時
else if( CheckHitKey( KEY_INPUT_UP ) == 1 && idouf == 1 && y != 200 )
{
idouf = 0;
y = y - 100;
idoutime1 = GetNowCount();
idoutime2 = GetNowCount();
}
//弾発射
else if( CheckHitKey( KEY_INPUT_B ) == 1 && idouf == 1)
{
idouf = 0;
idoutime1 = GetNowCount();
idoutime2 = GetNowCount();
//弾発射フラグを立てる
if(tamaf[tamacount] == 0)
{
tamaf[tamacount] = 1;
tamaX[tamacount] = x;
tamaY[tamacount] = y;
}
//弾をカウントする(5回までカウントしたら0に戻す)
if(tamacount > 4)
{
tamacount = 0;
}
else
{
tamacount = tamacount + 1;
}
tamatime1 = GetNowCount();
tamatime2 = GetNowCount();
}
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// 画面モードの変更
SetGraphMode( 800 , 600 , 16 ) ;
// ウインドウモードに変更
ChangeWindowMode( TRUE ) ;
//変数宣言
int chara;
int tama;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
//変数初期化
y = 300;
x = 180;
idouf = 1;
tamacount = 0;
for(int n = 0; n <= 5; n++)
{
tamaf[n] = 0;
tamaX[n] = 0;
tamaY[n] = 0;
}
// 透過色を変更
SetTransColor(0,255,0) ;
// 画像の読み込み
chara = LoadGraph( "image/chara.png" ) ;
tama = LoadGraph( "image/tama.png" ) ;
// グラフィックの描画
DrawGraph( x , y , chara , true ) ;
while(1){
ProcessMessage();
idou();
//移動が可能になるまでの時間計測
if (idoutime2 - idoutime1 > 200 && idouf == 0)
{
idouf = 1;
}
else
{
idoutime2 = GetNowCount();
}
//弾が一定時間ごとに進む
if (tamatime2 - tamatime1 > 200)
{
for(int n = 0; n <= 5; n++)
{
//弾発射フラグが立っていたら弾のX座標を移動させる
if(tamaf[n] == 1)
{
tamaX[n] = tamaX[n] + 50;
//弾が画面端までいったら弾発射フラグをなくす
if(tamaX[n] > 600)
{
tamaf[n] = 0;
}
}
}
}
else
{
tamatime2 = GetNowCount();
}
//画面を初期化
ClearDrawScreen() ;
DrawGraph( x , y , chara , true ) ;
//弾発射フラグが立っていたら画面に表示させる
for(int k = 0; k <=5; k++)
{
if(tamaf[k] == 1)
{
DrawGraph( tamaX[k] , tamaY[k] , tama , true ) ;
}
}
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
|