here is my code:
Code: Select all
#include <stdio.h>
#include <wchar.h>
#include <irrlicht.h>
using namespace irr;
#pragma comment(lib, "Irrlicht.lib")
using namespace irr;
int sec =0;
int speed=5.0f;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
scene::ISceneNode* ship = 0;
IrrlichtDevice* device = 0;
int up,down,right,left;
int far =350;
class MyEventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(SEvent event)
{
//UP A
if (event.KeyInput.Key==KEY_KEY_W)
{
down=false;
up=true;
}
//DOWN D
if (event.KeyInput.Key==KEY_KEY_S)
{
up=false;
down=true;
}
//LEFT A
if (event.KeyInput.Key==KEY_KEY_A)
{
right=false;
left=true;
}
//RIGHT D
if (event.KeyInput.Key==KEY_KEY_D)
{
left=false;
right=true;
}
return false;
}
};
//game
int main()
{
MyEventReceiver receiver;
device =createDevice(EDT_DIRECT3D9, dimension2d<s32>(800, 600), 32,
false, false, false, &receiver);
device->setWindowCaption(L"the funking 3d game");
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();
ship = smgr->addAnimatedMeshSceneNode( smgr->getMesh("ship.obj") );
scene::ISceneNode * box = smgr->addCubeSceneNode();
box->setMaterialTexture(0,driver->getTexture("char.bmp"));
if (ship)
{
ship->setMaterialFlag(EMF_LIGHTING, false);
box->setMaterialFlag(EMF_LIGHTING, false);
ship->setMaterialTexture( 0, driver->getTexture("nave.bmp") );
}
//camera
scene::ICameraSceneNode * camera = smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
smgr->addSkyBoxSceneNode(
driver->getTexture("irrlicht2_up.jpg"),
driver->getTexture("irrlicht2_dn.jpg"),
driver->getTexture("irrlicht2_lf.jpg"),
driver->getTexture("irrlicht2_rt.jpg"),
driver->getTexture("irrlicht2_ft.jpg"),
driver->getTexture("irrlicht2_bk.jpg"));
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, true);
//run time!!!
while(device->run())
{
core::vector3df c = ship->getPosition();
//UP A
if (up==true)
{
core::vector3df v = ship->getPosition();
v.Z +=speed;
camera->setPosition(core::vector3df(v.X,v.Y+50,v.Z-far));
camera->setTarget(core::vector3df(v.X,v.Y,v.Z));
ship->setPosition(v);
up=false;
}
//DOWN D
if (down==true)
{
core::vector3df v = ship->getPosition();
v.Z -= speed;
ship->setPosition(v);
}
//LEFT A
if (left==true)
{
core::vector3df v = ship->getPosition();
v.X -=speed;
ship->setPosition(v);
camera->setPosition(core::vector3df(v.X,v.Y+50,v.Z-far));
camera->setTarget(core::vector3df(v.X,v.Y,v.Z));
}
//RIGHT D
if (right==true)
{
core::vector3df v = ship->getPosition();
v.X += speed;
ship->setPosition(v);
camera->setPosition(core::vector3df(v.X,v.Y+50,v.Z-far));
camera->setTarget(core::vector3df(v.X,v.Y,v.Z));
}
right=down=left=false;
int fps = driver->getFPS();
core::stringw ddf = fps;
ddf+=" Z = ";
ddf+=c.Z;
ddf+=" Y = ";
ddf+=c.Y;
ddf+=" X = ";
ddf+=c.X;
ddf+=" sec: ";
ddf+=sec;
device->setWindowCaption(ddf.c_str());
driver->beginScene(true, true, SColor(0,200,200,200));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
device -> drop() ;
return 0;
}
