キャラを増やす
Posted: 2010年10月04日(月) 14:27
以前投稿させていただいた者ですがよろしくお願いします。
以前、キャラを目的地にまで移動させるというプログラムを助言をいただきながら作成したのですが
移動するキャラを増やそうと思い、以下のようなプログラムを作りましたがキャラが増えません・・・
自作関数の使い方がおかしいのでしょうか?
**********************************************************************************
#include "DxLib.h"
#include <math.h>
void Ugoke(float bx,float by,float sx,float sy,double sokudo)
void Ugoke1(float bx1,float by1,float sx1,float sy1,double sokudo1)
{
/*必要な数値の計算*/
float sb,sbx,sby; //初期座標と目的地の座標
float sb1,sbx1,sby1;
float Ex,Ey,Esx,Esy; //移動時の座標
float Ex1,Ey1,Esx1,Esy1;
int agent; //人のグラフィック
int agent1;
double SB; //移動距離
double SB1;
float r; //ラジアン
float r1;
sbx=sx-bx; //それぞれのx座標の差
sbx1=sx1-bx1;
sby=by-sy; //それぞれのy座標の差
sby1=by1-sy1;
sb=sqrt(sbx*sbx+sby*sby); //出発点と目的地の距離
sb1=sqrt(sbx1*sbx1+sby1*sby1);
Esx=sbx/sb*sokudo; //x方向の移動速度
Esx1=sbx1/sb1*sokudo1;
Esy=sby/sb*sokudo; //y方向の移動速度
Esy1=sby1/sb1*sokudo1;
agent=LoadGraph("char1.png"); //画像をメモリに読み込み
agent1=LoadGraph("char1.png");
SB=0; //初期値
SB1=0;
Ex=0; //初期値
Ex1=0;
Ey=0; //初期値
Ey1=0;
r=atan2(sbx,sby); //ラジアン
r1=atan2(sbx,sby);
while(1)
{
ClearDrawScreen(); //画面の初期化
Ex+=Esx; //EsxをExに代入
Ex1+=Esx1;
Ey+=Esy; //EsyをEyに代入
Ey1+=Esy1;
SB=sqrt(Ex*Ex+(Ey)*(Ey)); //移動距離の計算
SB1=sqrt(Ex1*Ex1+(Ey1)*(Ey1));
if(sb<SB||sb1<SB1)
{
DrawRotaGraph(sx,sy,0.3f,r,agent,TRUE); //最後の一歩分の処理
DrawRotaGraph(sx1,sy1,0.3f,r1,agent1,TRUE);
ScreenFlip();
break;
}
DrawRotaGraph(bx+Ex,by-Ey,0.3f,r,agent,TRUE); //画像の描画
DrawRotaGraph(bx1+Ex1,by1-Ey1,0.3f,r1,agent1,TRUE);
ScreenFlip(); //表画面へ描画
}
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
SetGraphMode(1366,768,32) ; //画面の大きさ
if(DxLib_Init()==-1) return -1 ;
SetDrawScreen(DX_SCREEN_BACK) ; //裏画面に描画
Ugoke(600.0 , 300.0 , 800.0 , 600.0 ,3.0); //座標速度設定
Ugoke(800.0 , 600.0 , 300.0 , 200.0 ,3.0);
Ugoke(300.0 , 200.0 , 500.0 , 600.0 ,3.0);
Ugoke(500.0 , 600.0 , 300.0 , 200.0 ,3.0);
Ugoke(300.0 , 200.0 , 100.0 , 100.0 ,3.0);
Ugoke1(620.0 , 320.0 , 820.0 , 620.0 ,3.0);
Ugoke1(820.0 , 620.0 , 320.0 , 220.0 ,3.0);
Ugoke1(320.0 , 220.0 , 520.0 , 620.0 ,3.0);
Ugoke1(520.0 , 620.0 , 320.0 , 220.0 ,3.0);
Ugoke1(320.0 , 220.0 , 120.0 , 120.0 ,3.0);
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
**********************************************************************************
アドバイスよろしくお願いします。
以前、キャラを目的地にまで移動させるというプログラムを助言をいただきながら作成したのですが
移動するキャラを増やそうと思い、以下のようなプログラムを作りましたがキャラが増えません・・・
自作関数の使い方がおかしいのでしょうか?
**********************************************************************************
#include "DxLib.h"
#include <math.h>
void Ugoke(float bx,float by,float sx,float sy,double sokudo)
void Ugoke1(float bx1,float by1,float sx1,float sy1,double sokudo1)
{
/*必要な数値の計算*/
float sb,sbx,sby; //初期座標と目的地の座標
float sb1,sbx1,sby1;
float Ex,Ey,Esx,Esy; //移動時の座標
float Ex1,Ey1,Esx1,Esy1;
int agent; //人のグラフィック
int agent1;
double SB; //移動距離
double SB1;
float r; //ラジアン
float r1;
sbx=sx-bx; //それぞれのx座標の差
sbx1=sx1-bx1;
sby=by-sy; //それぞれのy座標の差
sby1=by1-sy1;
sb=sqrt(sbx*sbx+sby*sby); //出発点と目的地の距離
sb1=sqrt(sbx1*sbx1+sby1*sby1);
Esx=sbx/sb*sokudo; //x方向の移動速度
Esx1=sbx1/sb1*sokudo1;
Esy=sby/sb*sokudo; //y方向の移動速度
Esy1=sby1/sb1*sokudo1;
agent=LoadGraph("char1.png"); //画像をメモリに読み込み
agent1=LoadGraph("char1.png");
SB=0; //初期値
SB1=0;
Ex=0; //初期値
Ex1=0;
Ey=0; //初期値
Ey1=0;
r=atan2(sbx,sby); //ラジアン
r1=atan2(sbx,sby);
while(1)
{
ClearDrawScreen(); //画面の初期化
Ex+=Esx; //EsxをExに代入
Ex1+=Esx1;
Ey+=Esy; //EsyをEyに代入
Ey1+=Esy1;
SB=sqrt(Ex*Ex+(Ey)*(Ey)); //移動距離の計算
SB1=sqrt(Ex1*Ex1+(Ey1)*(Ey1));
if(sb<SB||sb1<SB1)
{
DrawRotaGraph(sx,sy,0.3f,r,agent,TRUE); //最後の一歩分の処理
DrawRotaGraph(sx1,sy1,0.3f,r1,agent1,TRUE);
ScreenFlip();
break;
}
DrawRotaGraph(bx+Ex,by-Ey,0.3f,r,agent,TRUE); //画像の描画
DrawRotaGraph(bx1+Ex1,by1-Ey1,0.3f,r1,agent1,TRUE);
ScreenFlip(); //表画面へ描画
}
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
SetGraphMode(1366,768,32) ; //画面の大きさ
if(DxLib_Init()==-1) return -1 ;
SetDrawScreen(DX_SCREEN_BACK) ; //裏画面に描画
Ugoke(600.0 , 300.0 , 800.0 , 600.0 ,3.0); //座標速度設定
Ugoke(800.0 , 600.0 , 300.0 , 200.0 ,3.0);
Ugoke(300.0 , 200.0 , 500.0 , 600.0 ,3.0);
Ugoke(500.0 , 600.0 , 300.0 , 200.0 ,3.0);
Ugoke(300.0 , 200.0 , 100.0 , 100.0 ,3.0);
Ugoke1(620.0 , 320.0 , 820.0 , 620.0 ,3.0);
Ugoke1(820.0 , 620.0 , 320.0 , 220.0 ,3.0);
Ugoke1(320.0 , 220.0 , 520.0 , 620.0 ,3.0);
Ugoke1(520.0 , 620.0 , 320.0 , 220.0 ,3.0);
Ugoke1(320.0 , 220.0 , 120.0 , 120.0 ,3.0);
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
**********************************************************************************
アドバイスよろしくお願いします。