วันพุธที่ 10 มีนาคม พ.ศ. 2553

After Burner

After Burner
1. มีศัตรู 10 ตัว
2. ใช้ W,A,S,D ควบคุมยาน
3. ใช้ space bar ยิง
4. หลังจากที่ฆ่าศัตรูครบแล้วจะเจอบอส
5.ฆ่าบอสได้ก็จบเกม


ใช้ W ไปข้างหน้า A ไปทางซ้าย S ถ่อยหลัง D ไปทางขวา Space bar ยิง หลังจากที่กำจัดหมดแล้วก็ จะเจอบอส หลังจากที่ฆ่าบอสได้ก็จะจบเกม

Code

bool AddMis( char* name, const vector3df& pos, const vector3df& di, const vector3df& vel );
void UpdateMis(void);
void RemoveMis(void);

ประกาสฟังก์ชันที่จะใช้ล่วงหน้า

bool AddMis( char* name, const vector3df& pos, const vector3df& di, const vector3df& vel )
{
Missile_info* minfo = new Missile_info( );
minfo->misslie = g_engine.smgr->getMesh( name );
minfo->misslie_node = g_engine.smgr->addAnimatedMeshSceneNode( minfo->misslie );
minfo->misslie_node->setMaterialFlag( EMF_LIGHTING, false );
minfo->misslie_node->setScale( vector3df(0.2f,0.2f, 5) );
minfo->pos = pos;
minfo->di = di;
minfo->vel = vel;
minfo->misslie_node->setPosition(vector3df(pos));
mlist.push_back( minfo );

return true;
}


เป็นฟังก์ชันที่เพิ่มกระสุนเข้าไปในเกม

void UpdateBATK(void)
{

myboss.pos.Z -= 1.0f;
myboss.BOSS_node->setPosition(myboss.pos);

}


ฟังก์ชันที่ควบคุมการขยับของบอส

void UpdateATK(void)
{
for( u32 i = 0; i <5;>setPosition(mytarget[i].pos );
}
}


ฟังก์ชันที่ควบคุมทิศัตรูแบบแรก

void UpdateATK2(void)
{
for( u32 i = 0; i <5;>setPosition(mytarget2[i].pos );
}
}

ฟังก์ชันที่ควบคุมทิศัตรูแบบ

void UpdateMis(void)
{
for( u32 i = 0; i != mlist.size(); i++ )
{
mlist[i]->pos += mlist[i]->di * mlist[i]->vel;
mlist[i]->misslie_node->setPosition( mlist[i]->pos );
}
}

ควบคุมทิศทางกระสุน

void RemoveMis(void)
{
for( u32 i = 0; i != mlist.size(); i++ )
{
if( mlist[i]->pos.Z > pac_node->getPosition().Z + 2000 )
{
mlist[i]->misslie_node->remove( );
SAFEDELETE( mlist[i] );
mlist.erase( i );
return;
}
}
}

ลบกระสุนออกจากเกม

skybox = g_engine.smgr->addSkyBoxSceneNode(
g_engine.driver->getTexture("2.jpg"),
g_engine.driver->getTexture("4.jpg"),
g_engine.driver->getTexture("3.jpg"),
g_engine.driver->getTexture("6.jpg"),
g_engine.driver->getTexture("5.jpg"),
g_engine.driver->getTexture("1.jpg"));

ใส่ skybox

pac_node->setRotation( vector3df(0,180,0) );
if( g_input.keyDown(KEY_KEY_E) )
{move( pac_node, vector3df(0,1,0));
pac_node->setRotation( vector3df(45,180,0) );}
if( g_input.keyDown(KEY_KEY_Q) )
{move( pac_node, vector3df(0,-1,0));
pac_node->setRotation( vector3df(-45,180,0) );}
if( g_input.keyDown(KEY_KEY_W) )
move_ex( camera, pac_node, vector3df(0,0,1));
if( g_input.keyDown(KEY_KEY_S) )
move_ex( camera, pac_node, vector3df(0,0,-1));
if( g_input.keyDown(KEY_KEY_A) )
{
move_ex( camera, pac_node, vector3df(-1,0,0));
pac_node->setRotation( vector3df(0,180,30) );
}
if( g_input.keyDown(KEY_KEY_D) )
{
move_ex( camera, pac_node, vector3df(1,0,0));
pac_node->setRotation( vector3df(0,180,-30) );
}


ควบคุมตัวละคร

if( g_input.keyPressed(KEY_SPACE) )
AddMis( "pacman.b3d", pac_node->getPosition(), vector3df(0,0,1), vector3df(0,0,20) );
if( g_input.keyPressed(KEY_KEY_Z) )
AddMis( "pacman.b3d", pac_node->getPosition(), vector3df(0,0,1), vector3df(0,0,20) );


ยิงกระสุน 2 ชนิด กดได้ 2 ปุ่มคือ space bar กับ z

for( i = 0; i < z =" 0;">misslie_node) )
{compare = mytarget[i].Active;
mytarget[i].Active = false;
if(compare != mytarget[i].Active)
{k++;}
}
if( !mytarget[i].Active )
{mytarget[i].devil_node->setVisible( false );}

}
for( j = 0; j < x =" 0;">misslie_node) )
{compare = mytarget2[j].Active;
mytarget2[j].Active = false;
if(compare != mytarget2[j].Active)
{k++;}
}
if( !mytarget2[j].Active )
{mytarget2[j].devil2_node->setVisible( false );}

}
if (k > 9 && k < active =" true;">setVisible( true );
UpdateBATK();
for( u32 a = 0; a != mlist.size(); a++ )
if( collision(myboss.BOSS_node,mlist[a]->misslie_node) )
{compare = myboss.Active;
myboss.Active = false;
if(compare != myboss.Active)
{k++;m++;}
}
if( !myboss.Active && m == 90 )
{myboss.BOSS_node->setVisible( false );}
}


เช็คว่ากระสุนชนกับศัตรูหรือไม่ ถ้าชนก็จะทำให้ศตรูหายไปแล้วไปเพิ่มคะแนนขึ้น

UpdateMis( );

RemoveMis( );

เรียกใช้ฟังก์ชั้น

swprintf ( text, 256, L"Score:%d",k );
g_font->draw( text, rect(0,0,0,22), SColor(255,255,255,255) );
if(k == 100){
swprintf ( text2, 256, L"You Win");
g_font->draw( text2, rect(365,190,10,0), SColor(255,255,255,255) );
}

แสดงคะแนน และถ้าคะแนนถึง 100 ก็จะขึ้น You Win

Download Source code ทั้งหมด

ไม่มีความคิดเห็น:

แสดงความคิดเห็น