Beispiel #1
0
void Stage::initID(){
	//i => kind of id
	for(int i = 0; i < 5; ++i)
		mapchipDefinition.push_back( MapchipDefinition(i) );

	for(auto& chip : mapchipDefinition){
		switch(chip.id){
		case 0://chip which can't move 
			chip.image = MV1LoadModel("data/image/3Dmodel/chip/00 null/00 null.mqo");
			//chip.image = GetColor(255, 128, 0);
			chip.resistance = INT_MAX;
			break;

		case 1://movable(id=1 => 草原, id=2 => 岩… などにする)
			chip.image = MV1LoadModel("data/image/3Dmodel/chip/01 grass.mqo");
			//chip.image = GetColor(128, 255, 0);
			chip.resistance = 1;
			break;

		case 2://沼地的な
			chip.image = MV1LoadModel("data/image/3Dmodel/chip/02 marsh.mqo");
			//chip.image = GetColor(128, 0, 128);
			chip.resistance = 2;
			break;

		default:
			chip.resistance = INT_MAX;
			break;
		}
	}
}
// キャラクターの共通情報を初期化
void CharaCommon_Initialize( void )
{
	// モデルの読み込み
	chcmn.BaseModelHandle = MV1LoadModel( "DxChara.x" ) ;

	// 影描画用の画像の読み込み
	chcmn.ShadowHandle = LoadGraph( "Shadow.tga" ) ;
}
Beispiel #3
0
Boss::Boss(){
	
	graph = MV1LoadModel("Graph/Active Frame/Active Frame.pmx");
	if (!graph){
		DxLib_End();
	}
	boss_attack_sound = LoadSoundMem("sound/bomb.mp3");
	ChangeVolumeSoundMem(125, boss_attack_sound);
	score = 20000;
}
Beispiel #4
0
Enemy::Enemy(float x, float y, float z, int life, int timer){
	this->x = x;
	this->y = y;
	this->z = z;
	this->life = life;
	this->timer = timer;
	graph = MV1LoadModel("R-13A.pmd");
	MV1SetScale( graph, VGet(0.025f, 0.025f, 0.025f));
	ShotSpeed = 1.5f;
}
Beispiel #5
0
//public--start
inline MODEL :: MODEL(SHOT* mS, float rotateY){
	init();
	ModelHandle = MV1LoadModel("model\\heri\\heri.mv1");
	MV1SetFrameVisible(ModelHandle, 39, FALSE);
	MV1SetupCollInfo(ModelHandle, 39, 8, 16, 32);
	attachIndex = MV1AttachAnim(ModelHandle, 0, -1, FALSE);
	animTime = MV1GetAttachAnimTotalTime(ModelHandle, attachIndex);
	playTime = 0.0f;
	this->mS = mS;
	this->rotateY = rotateY;
}
Beispiel #6
0
void Character::Init(float a, float b, float c, float X, float Y, float Z, int graph){
	x = a;
	y = b;
	z = c;
	RotateX = X;
	RotateY = Y;
	RotateZ = Z;
	RotateZ2 = 0;
	life = 10;
	power = 0;
	this->graph = graph;
	DeathTimer = 180;
	targetwindow = MV1LoadModel("target.mqo");
	MV1SetScale(targetwindow, VGet(0.025f, 0.025f, 0.025f));
	MV1SetScale(graph, VGet(0.06f, 0.06f, 0.06f));
	for(int i = 0; i < SNUM; i++){
		shot[i].flag = 0;
		shot[i].graph = MV1LoadModel("shotp.pmx");
		shot[i].attach = MV1AttachAnim( shot[i].graph, 0, -1, FALSE ) ;
		shot[i].shottime = MV1GetAttachAnimTotalTime( shot[i].graph, shot[i].attach );
		shot[i].playtime = 0;
		MV1SetScale(shot[i].graph, VGet(0.3f, 0.3f, 0.8f));
	}
	
	//ブーストの初期化
	boost.graph = MV1LoadModel("boost.pmd");
	boost.attach = MV1AttachAnim(boost.graph, 1, -1, FALSE ) ;
	boost.totaltime= MV1GetAttachAnimTotalTime( boost.graph, boost.attach ) ;
	boost.playtime = 0;
	MV1SetScale(boost.graph, VGet(0.11f, 0.11f, 0.11f));
	
	boost2.graph = MV1LoadModel("boost.pmd");
	boost2.attach = MV1AttachAnim(boost2.graph, 2, -1, FALSE ) ;
	boost2.totaltime= MV1GetAttachAnimTotalTime( boost2.graph, boost2.attach ) ;
	boost2.playtime = 0;
	MV1SetScale(boost2.graph, VGet(0.11f, 0.11f, 0.11f));

	shotsound = LoadSoundMem( "sound/shoot1.mp3" );
	 ChangeVolumeSoundMem( 100, shotsound ) ;

}
Beispiel #7
0
Character::Character(float a, float b, float c, float X, float Y, float Z, int graph){
	x = a;
	y = b;
	z = c;
	RotateX = X;
	RotateY = Y;
	RotateZ = Z;
	life = 10;
	this->graph = graph;
	targetwindow = MV1LoadModel("target.mqo");
	MV1SetScale(targetwindow, VGet(0.025f, 0.025f, 0.025f));
	MV1SetScale(graph, VGet(0.015f, 0.015f, 0.015f));
	for(int i = 0; i < SNUM; i++){
		shot[i].flag = 0;
		shot[i].graph = MV1LoadModel("aaaa.mqo");
	}
	damage_sound = LoadSoundMem("sound/nc84550.mp3");
	ChangeVolumeSoundMem(100, damage_sound);
	damaged_timer = 0;
	damaged_flag = false;
}
Beispiel #8
0
void Enemy::Death(){
	float x = 0.3f, y = 0.3f, z =0.3f;
	if(life <= 0 ){
		DeathTimer --;
		RotateY --;
		RotateX --;
		MV1SetScale(graph, VGet( x, y , z));
	}
	if( life == 0){
		graph = MV1LoadModel("爆発消x1.pmd");
		life --;
	}
}
Beispiel #9
0
void Character::Death(){
	if(KeyGet(KEY_INPUT_L)) life = 0;
	float x = 0.3f, y = 0.3f, z =0.3f;
	if(life <= 0 ){
		DeathTimer --;
		RotateY --;
		RotateX --;
		MV1SetScale(graph, VGet( x, y , z));
		if(DeathTimer == 0) gamestate = 2;
	}
	if( life == 0){
		graph = MV1LoadModel("Graph/消せる爆発/爆発消x1.pmd");
		life --;
	}
}
Beispiel #10
0
void MANAGIMENT :: freeMode(){
	int ModelHandle;
	//床読み込み
	ModelHandle = MV1LoadModel("model\\floor\\floor.mqo");
	MV1SetScale(ModelHandle, VGet(250.0f, 100.0f, 250.0f));
	MV1SetPosition(ModelHandle, VGet(0, 0, 0));

	BUILDING buil;

	//弾の配列の確保
	SHOT* mShot;
	mShot = new SHOT(GetColor(255, 255, 0), 15.0f, 85.0f);
	//モデルの読み込み
	PLAYER* p;
	p = new PLAYER(VGet(0, 0, 0), 0.0, mShot);
	//ターゲットの読み込み
	TARGET t;
	t.newTarget();

	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		// 画面をクリア
		ClearDrawScreen();
		//床の描画
		MV1DrawModel(ModelHandle);
		
		buil.display();
		//FPSの表示
		fpsDisplay();
		//モデルの操作,描画
		p->control();
		p->display();
		t.display();
		p->doNotMove(buil.collision(p->getPos(), p->getRotate()));
		p->doNotMove(t.collision(p->getPos(), p->getRotate()));
		mShot->collisionTarget(buil.getModelHandle());
		if(mShot->collisionTarget(t.getModelHandle()) > 0){
			t.delTarget();
			t.newTarget();
		}
		//裏画面の内容を表画面に反映
		ScreenFlip();
	}
	MV1DeleteModel(ModelHandle);
	delete mShot;
	delete p;
}
Beispiel #11
0
void Enemy::SetAll( float x, float y, float z, int life, int timer, int shotpattern, int movepattern , int Itemflag){
	SetX(x);
	SetY(y);
	SetZ(z);
	SetLife(life);
	SetTimer(timer);
	this->Itemflag = Itemflag; 
	this->shotpattern = shotpattern;
	this->movepattern = movepattern;
	for(int i = 0; i < ESNUM; i++){
		es[i].graph = MV1LoadModel("aaaa.mqo");
		es[i].flag = 0;
		MV1SetScale(es[i].graph, VGet(0.01f, 0.01f, 0.01f));

	}
	score = life * 100;
	DeathTimer = 120;
}
Beispiel #12
0
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	//細かい設定色々
	ChangeWindowMode(true);
	SetGraphMode(Window::Width, Window::Height, 32);
	SetWindowSizeChangeEnableFlag(TRUE);
	SetWindowSizeExtendRate(1.0);
	//背景の色替え
	//SetBackgroundColor(255, 255, 255);

	int ModelHandle;

	// DXライブラリ初期化処理(エラーが起きたら直ちに終了)
	if (DxLib_Init() == -1)		return -1;			

	//ウラ画面に描画する
	SetDrawScreen(DX_SCREEN_BACK);

	ModelHandle = MV1LoadModel("res/car04.mqo");	
	
	MV1SetPosition(ModelHandle, VGet(200.0f, -200.0f, 600.0f));

	//メインループ
	//whileの()にあるProcessMessageを消すと、正常に動かなくなる
	while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
		ClearDrawScreen();			//画面を消去する

		
		MV1DrawModel(ModelHandle);

		
		ScreenFlip();				//オモテ画面とウラ画面を入れ替える
	}

	//DXライブラリ使用の終了処理
	DxLib_End();

	//ソフトの終了 
	return 0;
}
Beispiel #13
0
// 初期化をする
Room *Room_Initialize()
{
	Room *self;
	self = new Room();

    self->room = MV1LoadModel("meta/room.mqo") ;    //model画像ハンドルの格納
	self->window = MV1SearchFrame(self->room, "window");
	self->coffee = MV1SearchFrame(self->room, "coffee");
	self->door = MV1LoadModel("meta/door.mqo") ;    //model画像ハンドルの格納
	self->glass = MV1LoadModel("meta/glass.mqo") ;  
	self->hammer = MV1LoadModel("meta/hammer.mqo") ;
	self->pot = MV1LoadModel("meta/pot.mqo") ;
	self->paper0 = MV1LoadModel("meta/paper.mqo") ;
	self->paper1 = MV1DuplicateModel(self->paper0) ;
	self->paper2 = MV1DuplicateModel(self->paper1) ;
	self->paper3 = MV1DuplicateModel(self->paper1) ;
	self->table = MV1LoadModel("meta/table.mqo") ;
	self->bed = MV1LoadModel("meta/bed.mqo") ;
	self->makura = MV1SearchFrame(self->bed, "makura");
	self->huton = MV1SearchFrame(self->bed, "huton");
	self->stand = MV1SearchFrame(self->bed, "cover");
	self->black_cap = MV1SearchFrame(self->table, "black_futa");
	self->yellow_cap = MV1SearchFrame(self->table, "yellow_futa");
	self->green_cap = MV1SearchFrame(self->table, "green_futa");
	

	self->door_close_count = 0;
	self->rotY = 0.0f;
	self->swit = 0;
	self->count = 0;
	self->s_swit = 0;
	self->s_count = 0;
	self->slide = 0;
	self->role = 0;

	return self;
}
Beispiel #14
0
void Boss::Init(){
	x = 0;
	y = -200;
	z = 130;
	life = LIFE;
	SetAnimPattern(appear);
	AnimSpeed = 0.8;
	AnimTime = 0.0f;
	for (int i = 0; i < BSNUM; i++){
		bs[i].flag = 0;
		bs[i].graph = 0;
	}
	timer = 0;
	flag = 0 + APPEAR;

	ShotSpeed = 1.5f;
	for (int i = 0; i < 16; i++){
		HitEffectGraph[i] = MV1LoadModel("Graph/消せる爆発/リング3連.pmd");
		HitEffectPosition[i] = VGet(0, 0, 0);
		HitEffect[i].AnimTime = 0.0f;
		HitEffect[i].TotalTime = 5.0f;
		HitEffectFlag[i] = 0;
	}
}
// ステージの初期化処理
void Stage_Initialize( void )
{
	// ステージモデルの読み込み
	stg.ModelHandle = MV1LoadModel( "ColTestStage.mqo" ) ;

	// モデル全体のコリジョン情報のセットアップ
	MV1SetupCollInfo( stg.ModelHandle, -1 ) ;


	// 作成する画像のフォーマットを不動小数点型で1チャンネル、16ビットにする
	SetDrawValidFloatTypeGraphCreateFlag( TRUE ) ;
	SetCreateDrawValidGraphChannelNum( 1 ) ;
	SetCreateGraphColorBitDepth( 16 ) ;

	// 影用深度記録画像の作成
	DepthBufferGraphHandle = MakeScreen( 4096, 4096, FALSE ) ;

	// 設定を元に戻す
	SetDrawValidFloatTypeGraphCreateFlag( FALSE ) ;
	SetCreateDrawValidGraphChannelNum( 4 ) ;
	SetCreateGraphColorBitDepth( 32 ) ;

	// 深度記録画像描画用の頂点シェーダーを読み込む
	Skin4_DepthShadow_Step1_VertexShader = LoadVertexShader( "SkinMesh4_DepthShadow_Step1VS.vso" ) ;
	Normal_DepthShadow_Step1_VertexShader = LoadVertexShader( "NormalMesh_DepthShadow_Step1VS.vso" ) ;

	// 深度記録画像描画用のピクセルシェーダーを読み込む
	DepthShadow_Step1_PixelShader = LoadPixelShader( "DepthShadow_Step1PS.pso" ) ;

	// 深度記録画像を使ったディレクショナルライト一つの描画用頂点シェーダーを読み込む
	Skin4_DirLight_DepthShadow_Step2_VertexShader = LoadVertexShader( "SkinMesh4_DirLight_DepthShadow_Step2VS.vso" ) ;
	Normal_DirLight_DepthShadow_Step2_VertexShader = LoadVertexShader( "NormalMesh_DirLight_DepthShadow_Step2VS.vso" ) ;

	// 深度記録画像を使ったディレクショナルライト一つの描画用ピクセルシェーダーを読み込む
	DirLight_DepthShadow_Step2_PixelShader = LoadPixelShader( "DirLight_DepthShadow_Step2PS.pso" ) ;
}
Beispiel #16
0
void MANAGIMENT :: battleModeC(){
	int ModelHandle;
	//床読み込み
	ModelHandle = MV1LoadModel("model\\floor\\floor.mqo");
	MV1SetScale(ModelHandle, VGet(250.0f, 100.0f, 250.0f));
	MV1SetPosition(ModelHandle, VGet(0, 0, 0));

	//弾の配列の確保
	SHOT* mShot;
	SHOT* eShot;
	mShot = new SHOT(GetColor(255, 255, 0), 15.0f, 85.0f);
	eShot = new SHOT(GetColor(255, 0, 0), 15.0f, 85.0f);
	//モデルの読み込み
	PLAYER* p;
	ENEMY* e;
	p = new PLAYER(VGet(0, 0, 3500.0), 0.0f, mShot);
	e = new ENEMY(VGet(0, 0, -3500), PI, eShot);
	BUILDING buil;

	int pH;
	int eH;
	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		// 画面をクリア
		ClearDrawScreen();

		//床の描画
		MV1DrawModel(ModelHandle);
		buil.display();
		//FPSの表示
		fpsDisplay();
		//モデルの操作,描画
		//プレイヤー
		p->control();
		p->display();
		//敵
		VECTOR rotateP = p->getRotate();
		e->control(rotateP.y, p->getVector());
		e->display();
		
		p->doNotMove(buil.collision(p->getPos(), p->getRotate()));
		e->doNotMove(buil.collision(e->getPos(), e->getRotate()));
		mShot->collisionTarget(buil.getModelHandle());
		eShot->collisionTarget(buil.getModelHandle());

		p->doNotMove(p->collision(e->getPos(), e->getRotate()));
		e->doNotMove(e->collision(p->getPos(), p->getRotate()));
		
		pH = p->damageCheck(eShot);
		eH = e->damageCheck(mShot);
		if(pH <=0 || eH <= 0)
			break;
		mShot->collisionModel(e->getModelHandle());
		eShot->collisionModel(p->getModelHandle());
		
		//裏画面の内容を表画面に反映
		ScreenFlip();
	}
	
	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		// 画面をクリア
		ClearDrawScreen();
		//床の描画
		MV1DrawModel(ModelHandle);
		buil.display();
		//FPSの表示
		SetFontSize(16);
		fpsDisplay();
		p->addCR(0.01f);
		p->display();
		e->display();
		SetFontSize(32);
		pH = p->getHp();
		eH = e->getHp();
		if(pH == eH)
			DrawFormatString(300, 350, GetColor(255, 255, 255), "Draw");
		else if(pH > eH) 
			DrawFormatString(310, 350, GetColor(255, 255, 255), "Win");
		else
			DrawFormatString(300, 350, GetColor(255, 255, 255), "Loss");
		//裏画面の内容を表画面に反映
		ScreenFlip();
	}
	SetFontSize(16);

	MV1DeleteModel(ModelHandle);
	delete mShot;
	delete eShot;
	delete p;
	delete e;
}
Beispiel #17
0
void MANAGIMENT :: battleModeH(){
	int ModelHandle;
	//床読み込み
	ModelHandle = MV1LoadModel("model\\floor\\floor.mqo");
	MV1SetScale(ModelHandle, VGet(250.0f, 100.0f, 250.0f));
	MV1SetPosition(ModelHandle, VGet(0, 0, 0));

	BUILDING buil;

	//弾の配列の確保
	SHOT* mShot;
	SHOT* eShot;
	mShot = new SHOT(GetColor(255, 255, 0), 15.0f, 85.0f);
	eShot = new SHOT(GetColor(255, 0, 0), 15.0f, 85.0f);

	
	READ_INIT* read;
	read = new READ_INIT();
	char src_ip[32];
	int src_port;
	char sin_ip[32];
	int sin_port;
	VECTOR pPos;
	VECTOR ePos;
	float pR, eR;
	read->read(src_ip, &src_port, sin_ip, &sin_port, &pPos, &ePos, &pR, &eR);
	delete read;
	
	NET_TRANS* net;
	net = new NET_TRANS(src_ip, src_port, sin_ip, sin_port);
	net->setBind();
	

	hTh = (HANDLE)_beginthreadex(NULL, 0, &thread_recv, net, 0, &thID);

	while(1){
		DrawFormatString(20, 20, GetColor(0, 0, 0), "通信中");
		if(!nflag2)
			net->send("start");
		if(nflag1)
			net->send("ok");
		if(nflag1 && nflag2)
			break;
		if(ProcessMessage() != 0 || CheckHitKey(KEY_INPUT_ESCAPE) != 0){
			sflag1 = true;
			WaitForSingleObject(hTh, INFINITE);
			CloseHandle(hTh);
			delete net;
			delete mShot;
			delete eShot;
			MV1DeleteModel(ModelHandle);
			return;
		}
		ScreenFlip();
	}
	sflag1 = true;
	WaitForSingleObject(hTh, INFINITE);
	CloseHandle(hTh);
	
	//モデルの読み込み
	PLAYER* p;
	ENEMY_NET* e;
	p = new PLAYER(pPos, pR, mShot, net);
	e = new ENEMY_NET(ePos, eR, eShot, net);
	

	int pH;
	int eH;

	e->start(e);
	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		// 画面をクリア
		ClearDrawScreen();
		//床の描画
		MV1DrawModel(ModelHandle);
		buil.display();
		//FPSの表示
		fpsDisplay();
		//モデルの操作,描画
		//プレイヤー
		p->control();
		p->send();

		p->doNotMove(buil.collision(p->getPos(), p->getRotate()));
		mShot->collisionTarget(buil.getModelHandle());
		
		p->display();
		e->display();

		e->enterCritical();
		eShot->collisionTarget(buil.getModelHandle());
		pH = p->damageCheck(eShot);
		e->leaveCritical();

		p->doNotMove(p->collision(e->getPos(), e->getRotate()));
		if(e->getHp() <= 0 || pH <= 0){
			break;
		}
		eH = e->damageCheck(mShot);
		//裏画面の内容を表画面に反映
		ScreenFlip();
	}
	
	
	while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
		p->send();
		// 画面をクリア
		ClearDrawScreen();
		//床の描画
		MV1DrawModel(ModelHandle);
		buil.display();
		//FPSの表示
		SetFontSize(16);
		fpsDisplay();
		p->addCR(0.01f);
		p->display();
		e->display();

		SetFontSize(32);
		pH = p->getHp();
		eH = e->getHp();
		if(pH == eH)
			DrawFormatString(300, 350, GetColor(255, 255, 255), "Draw");
		else if(pH > eH) 
			DrawFormatString(310, 350, GetColor(255, 255, 255), "Win");
		else
			DrawFormatString(300, 350, GetColor(255, 255, 255), "Loss");
		//裏画面の内容を表画面に反映
		ScreenFlip();
	}
	e->stop();
	SetFontSize(16);
	
	
	delete net;

	MV1DeleteModel(ModelHandle);
	delete mShot;
	delete eShot;
	delete p;
	delete e;
}
Beispiel #18
0
//public--start
inline TARGET :: TARGET(void){
	srand((unsigned)time(NULL));
	ModelHandle = MV1LoadModel("model\\target\\target.mqo");
	MV1SetScale(ModelHandle, VGet(3.0f, 3.0f, 3.0f));
}
Beispiel #19
0
void Boss::Shot(float px, float py, float pz){
	if (timer  == 119){
		SetAnimPattern(firebomb);
		flag |= HORIZONTAL;
	}
	if (count == 6){
		flag &= ~HORIZONTAL + ~VERTICAL;
		flag |= APPROACH;
	}
	
	if (AnimPattern == firebomb && AnimTime >= 20 && !(flag & ATTACK) && flag & HORIZONTAL){
		float len = 3;
			for (int i = 0; i < BSNUM; i++){
				if (bs[i].flag == 0){
					if (bs[i].graph == 0){
						bs[i].graph = MV1LoadModel("aaaa.mqo");
						MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
					}
					bs[i].flag = 1;
					bs[i].x = x;
					bs[i].y = y + 40;
					bs[i].z = z;

					float sbx = x - target_x;
					float sby = y - target_y + 40;
					float sbz = z - target_z;
					float sb = sqrt(sbx * sbx + sbz * sbz);
					bs[i].rx = sbx / sb * ShotSpeed;
					bs[i].rz = sbz / sb * ShotSpeed;
					bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

					break;
				}
			}
			for (int i = 0; i < BSNUM; i++){
				if (bs[i].flag == 0){
					if (bs[i].graph == 0){
						bs[i].graph = MV1LoadModel("aaaa.mqo");
						MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
					}
					bs[i].flag = 1;
					bs[i].x = x;
					bs[i].y = y + 40;
					bs[i].z = z;

					float sbx = x - px - len;
					float sby = y - py + 40;
					float sbz = z - pz;
					float sb = sqrt(sbx * sbx + sbz * sbz);
					bs[i].rx = sbx / sb * ShotSpeed;
					bs[i].rz = sbz / sb * ShotSpeed;
					bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

					break;
				}
			}
			for (int i = 0; i < BSNUM; i++){
				if (bs[i].flag == 0){
					if (bs[i].graph == 0){
						bs[i].graph = MV1LoadModel("aaaa.mqo");
						MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
					}
					bs[i].flag = 1;
					bs[i].x = x;
					bs[i].y = y + 40;
					bs[i].z = z;

					float sbx = x - px + len;
					float sby = y - py + 40;
					float sbz = z - pz;
					float sb = sqrt(sbx * sbx + sbz * sbz);
					bs[i].rx = sbx / sb * ShotSpeed;
					bs[i].rz = sbz / sb * ShotSpeed;
					bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

					break;
				}
			}
			for (int i = 0; i < BSNUM; i++){
				if (bs[i].flag == 0){
					if (bs[i].graph == 0){
						bs[i].graph = MV1LoadModel("aaaa.mqo");
						MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
					}
					bs[i].flag = 1;
					bs[i].x = x;
					bs[i].y = y + 40;
					bs[i].z = z;

					float sbx = x - px + len * 2;
					float sby = y - py + 40;
					float sbz = z - pz;
					float sb = sqrt(sbx * sbx + sbz * sbz);
					bs[i].rx = sbx / sb * ShotSpeed;
					bs[i].rz = sbz / sb * ShotSpeed;
					bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

					break;
				}
			}
			for (int i = 0; i < BSNUM; i++){
				if (bs[i].flag == 0){
					if (bs[i].graph == 0){
						bs[i].graph = MV1LoadModel("aaaa.mqo");
						MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
					}
					bs[i].flag = 1;
					bs[i].x = x;
					bs[i].y = y + 40;
					bs[i].z = z;

					float sbx = x - px + len * -2;
					float sby = y - py + 40;
					float sbz = z - pz;
					float sb = sqrt(sbx * sbx + sbz * sbz);
					bs[i].rx = sbx / sb * ShotSpeed;
					bs[i].rz = sbz / sb * ShotSpeed;
					bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

					break;
				}
			}
			flag |= ATTACK + VERTICAL;
			flag &= ~HORIZONTAL;
			count++;
			PlaySoundMem(boss_attack_sound, DX_PLAYTYPE_BACK);
	}

	if (AnimPattern == firebomb && AnimTime >= 20 && !(flag & ATTACK) && flag & VERTICAL){
		float len = 3;
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - target_x;
				float sby = y - target_y + 40;
				float sbz = z - target_z;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px;
				float sby = y - py + 40 - len;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px;
				float sby = y - py + 40 + len;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px ;
				float sby = y - py + 40 + len * 2;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px ;
				float sby = y - py + 40 + len * -2;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		flag |= ATTACK;
		flag &= ~VERTICAL;
		flag |= HORIZONTAL;
		count++;
		PlaySoundMem(boss_attack_sound, DX_PLAYTYPE_BACK);
	}

	if (AnimPattern == firebomb && AnimTime >= 20 && !(flag & ATTACK) && flag & CROSS){
		float len = 3;
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - target_x;
				float sby = y - target_y + 40;
				float sbz = z - target_z;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px;
				float sby = y - py + 40 - len;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px;
				float sby = y - py + 40 + len;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px;
				float sby = y - py + 40 + len * 2;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px;
				float sby = y - py + 40 + len * -2;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px - len;
				float sby = y - py + 40;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px + len;
				float sby = y - py + 40;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px + len * 2;
				float sby = y - py + 40;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		for (int i = 0; i < BSNUM; i++){
			if (bs[i].flag == 0){
				if (bs[i].graph == 0){
					bs[i].graph = MV1LoadModel("aaaa.mqo");
					MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
				}
				bs[i].flag = 1;
				bs[i].x = x;
				bs[i].y = y + 40;
				bs[i].z = z;

				float sbx = x - px + len * -2;
				float sby = y - py + 40;
				float sbz = z - pz;
				float sb = sqrt(sbx * sbx + sbz * sbz);
				bs[i].rx = sbx / sb * ShotSpeed;
				bs[i].rz = sbz / sb * ShotSpeed;
				bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

				break;
			}
		}
		flag |= ATTACK;
		count++;
		PlaySoundMem(boss_attack_sound, DX_PLAYTYPE_BACK);
	}

	if (flag & APPROACH){

		if (AnimPattern != flight && !(flag & CONTINUITY)){
			SetAnimPattern(flight);
			flag &= ~HORIZONTAL + ~VERTICAL + ~CROSS;
		}
		if (!(flag & CONTINUITY)){
			z -= 2;
		}
		if (z <= 80 && AnimPattern == flight){
			flag |= CONTINUITY;
			SetAnimPattern(firebomb);
		}
		if (AnimPattern == firebomb && AnimTime >= 20 && (int(AnimTime) % 5 == 0) && flag & CONTINUITY){
			float len = 3;
			for (int i = 0; i < BSNUM; i++){
				if (bs[i].flag == 0){
					if (bs[i].graph == 0){
						bs[i].graph = MV1LoadModel("aaaa.mqo");
						MV1SetScale(bs[i].graph, VGet(0.01f, 0.01f, 0.01f));
					}
					bs[i].flag = 1;
					bs[i].x = x;
					bs[i].y = y + 40;
					bs[i].z = z;

					float sbx = x - target_x;
					float sby = y - target_y + 40;
					float sbz = z - target_z;
					float sb = sqrt(sbx * sbx + sbz * sbz);
					bs[i].rx = sbx / sb * ShotSpeed;
					bs[i].rz = sbz / sb * ShotSpeed;
					bs[i].ry = sby / sqrt(sb * sb + py * py) * ShotSpeed;

					break;
				}
			}
			flag |= ATTACK;
			count += 100;
			PlaySoundMem(boss_attack_sound, DX_PLAYTYPE_BACK);
		}
	}
	if (count >= 2100){
		count = 0;
		flag |= LEAVE;
		flag &= ~APPROACH;
	}
	if (flag & LEAVE){
		z += 1;
		if (z >= 130){
			flag &= ~LEAVE;
			flag &= ~CONTINUITY;

			if (life <= LIFE / 2)
			{
				flag |= CROSS;
			}
			else{
				flag |= HORIZONTAL;
			}
			count = 0;
		}
	}
	if (AnimPattern == firebomb && AnimTime == 0) flag &= ~ATTACK;

	for (int i = 0; i < BSNUM; i++){
		if (bs[i].flag)
		{
			bs[i].x -= bs[i].rx;
			bs[i].y -= bs[i].ry;
			bs[i].z -= bs[i].rz;
			MV1SetPosition(bs[i].graph, VGet(bs[i].x, bs[i].y, bs[i].z));
			MV1DrawModel(bs[i].graph);
			if (bs[i].z < -10){
				bs[i].flag = 0;
			}
		}
	}	
	
}
Beispiel #20
0
	Model(const String &source)
	{
		handle = MV1LoadModel(source.c_str());
	}
Beispiel #21
0
Enemy::Enemy(){

	life = -1;
	graph = MV1LoadModel("Graph/Tブースター.pmx");
	MV1SetScale( graph, VGet(0.5f, 0.5f, 0.5f));
}