友人から、#defineやGetRandを使えばできるよと言われ、制作してみましたが、エラーばかりで、動きません。
下記のプログラムは、デバックした途端、敵が1体すでに描画されており、X軸に5秒ぐらい動き続け、そのあと、画面の上に勝手に移動し、画面内から消えるという感じのプログラムです。とりあえず、敵の動きのプログラムだけ書きました。
僕の理想は、5秒経ったときか、敵1体を倒したときか、敵が画面内から消えたとき、敵が四方から1体出るようにし、同じ絵の敵は画面内で描画されないようにしたいです。
#include "DxLib.h"
void teki();
int tekiX , tekiY , tekiMuki , tekiGraph ;
int tekiW , tekiH;
int Tame = 0;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// 画面モードの設定
SetGraphMode( 640 , 480 , 16 ) ;
ChangeWindowMode( TRUE ) ;
// DXライブラリ初期化処理
if( DxLib_Init() == -1 ) return -1;
// グラフィックの描画先を裏画面にセット
SetDrawScreen( DX_SCREEN_BACK ) ;
tekiGraph = LoadGraph( "zakoteki.png" ) ;
tekiX = 0 ; tekiY = 30 ;
GetGraphSize( tekiGraph , &tekiW , &tekiH ) ;
//初期値
tekiMuki = 0 ;
// 移動ルーチン
while( 1 )
{
// 画面を初期化(真っ黒にする)
ClearDrawScreen() ;
// 敵の移動ルーチン
{
teki();
}
// 裏画面の内容を表画面にコピーする
ScreenFlip() ;
// Windows 特有の面倒な処理をDXライブラリにやらせる
// -1 が返ってきたらループを抜ける
if( ProcessMessage() < 0 ) break ;
// もしESCキーが押されていたらループから抜ける
if( CheckHitKey( KEY_INPUT_ESCAPE ) ) break ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
void teki(){
if( tekiMuki == 1 ) tekiX += 3 ;
if( tekiMuki == 0 ) tekiX -= 3 ;
if( tekiX > 576 )
{
tekiX = 576 ;
tekiMuki = 0;
}
if( tekiX < 0 )
{
tekiX = 0 ;
tekiMuki = 1 ;
}
//約5秒経ったら、画面の上に移動し、画面上から消える
if(Tame >300)tekiY--;
DrawGraph( tekiX , tekiY , tekiGraph , FALSE ) ;
Tame++;
}
どうかよろしくお願いします。