ok voici mon code
#include <IRR/irrlicht.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#include <MYSQL/mysql.h>
#include <string>
using namespace std;
using namespace irr;
//-------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
int main(void)
{
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//Déclaration du pointeur de structure de type MYSQL
MYSQL mysql;
//Initialisation de MySQL
mysql_init(&mysql);
//Options de connexion
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
//Si la connexion réussie...
if(mysql_real_connect(&mysql,"serveur-de-la-chaussee.no-ip.info","bestben","19920512","mmo",0,NULL,0))
{
//Requête qui sélectionne tout dans ma table scores
mysql_query(&mysql, "SELECT * FROM perso");
//Déclaration des pointeurs de structure
MYSQL_RES *result = NULL;
MYSQL_ROW row = NULL;
unsigned int i = 0;
unsigned int num_champs = 0;
//On met le jeu de résultat dans le pointeur result
result = mysql_store_result(&mysql);
//On choisie une ligne
mysql_data_seek(result, 1);
//On récupère le nombre de champs
num_champs = mysql_num_fields(result);
//on stock les valeurs de la ligne choisie
row = mysql_fetch_row(result);
//On déclare un pointeur long non signé pour y stocker la taille des valeurs
unsigned long *lengths;
//On stocke cette taille dans le pointeur
lengths = mysql_fetch_lengths(result);
//On fait une boucle pour avoir la valeur de chaque champs
for(i = 0; i < num_champs; i++)
{
//On ecrit toutes les valeurs
printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
}
//Libération du jeu de résultat
mysql_free_result(result);
//Fermeture de MySQL
mysql_close(&mysql);
printf("\
");
}
else //Sinon ...
{
printf("Une erreur s'est produite lors de la connexion à la BDD!");
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
IrrlichtDevice* device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(640, 480), 16,false,false,false);
video::IVideoDriver* driver = device->getVideoDriver ();
scene::ISceneManager* scenegraph = device->getSceneManager ();
scene::ISceneManager* smgr = device->getSceneManager();
//On récupère un pointeur vers la GUI.
gui::IGUIEnvironment *gui = scenegraph->getGUIEnvironment();
//On rend invisible le curseur
device->getCursorControl ()-> setVisible (false);
SKeyMap keyMap[5];
//avancer
keyMap[0].Action = irr::EKA_MOVE_FORWARD;
keyMap[0].KeyCode = irr::KEY_KEY_Z;
//reculer
keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
keyMap[1].KeyCode = irr::KEY_KEY_S;
//a gauche
keyMap[2].Action = irr::EKA_STRAFE_LEFT;
keyMap[2].KeyCode = irr::KEY_KEY_Q;
//a droite
keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
keyMap[3].KeyCode = irr::KEY_KEY_D;
//saut
keyMap[4].Action = irr::EKA_JUMP_UP;
keyMap[4].KeyCode = irr::KEY_SPACE;
scene::IAnimatedMesh *room = scenegraph->getMesh("essai.3ds");
if (room == 0)
{
std::cout << "problème de chargement de la salle" << std::endl;
return 1;
}
scene::IMeshSceneNode *Nroom = scenegraph->addMeshSceneNode(room->getMesh(0));
Nroom->setPosition(core::vector3df(0,0,0));
//On applique une texture à la salle.
scenegraph->getMeshManipulator()->makePlanarTextureMapping(
room->getMesh(0), 0.004f);
Nroom->setMaterialTexture( 0, driver->getTexture("rockwall.bmp") );
scene::ITriangleSelector* selector = 0;
//et tu lui associ le node :
selector = smgr->createOctTreeTriangleSelector(room->getMesh(0), Nroom, 128);
Nroom->setTriangleSelector(selector);
selector->drop();
//tu cree la cam :
scene::ICameraSceneNode *camera = scenegraph->addCameraSceneNodeFPS (0, 500.0f, 300.0f, 0, keyMap, 5, false);
camera->setPosition(core::vector3df(0,15,0));
//puis tu lui associ la collision avec comme surface "selector" :
scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(
selector, camera, core::vector3df(50,50,50),
core::vector3df(0,-1,0),
core::vector3df(0,6,0));
camera->addAnimator(anim);
anim->drop();
//lumiere
scene::ILightSceneNode* lum1 = scenegraph->addLightSceneNode(Nroom, core::vector3df(0,1,0),video::SColorf(0.9f, 0.9f, 1.0f, 1.0f), 100.0f);
scene::ILightSceneNode* lum2 = scenegraph->addLightSceneNode(Nroom, core::vector3df(10,1,0),video::SColorf(0.9f, 0.9f, 1.0f, 1.0f), 100.0f);
scene::ILightSceneNode* lum3 = scenegraph->addLightSceneNode(Nroom, core::vector3df(20,1,0),video::SColorf(0.9f, 0.9f, 1.0f, 1.0f), 100.0f);
scene::ILightSceneNode* lum4 = scenegraph->addLightSceneNode(camera, core::vector3df(0,0,2),video::SColorf(0.9f, 0.9f, 1.0f, 1.0f), 200.0f);
//arme
scene::IAnimatedMesh* arme = scenegraph->getMesh("armeV2.obj");
scene::IAnimatedMeshSceneNode* Narme = scenegraph->addAnimatedMeshSceneNode(arme);
//position arme
Narme->setParent(camera);
Narme->setPosition(core::vector3df(2,-3,5)); // relatif à la position de la caméra
//On modifie les propriétés de l'arme
Narme->setMaterialFlag(video::EMF_LIGHTING, true);
Narme->setMaterialFlag(video::EMF_FOG_ENABLE, true);
Narme->getMaterial(0).EmissiveColor = video::SColor(255,0,0,0);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//On affecte une nouvelle police par défaut.
gui->getSkin()->setFont(gui->getFont("fontLucida.png"));
//On crée une chaîne de caractères unicode pour pouvoir y mettre des accents.
wchar_t* message(L"Le probleme est resolu");
//On ajoute un joli texte, avec bordure, fond et retour à la ligne automatique.
gui::IGUIStaticText *texte = gui->addStaticText(message,
core::rect<s32>(20,30,300,140), true, true, 0, -1, true);
//La zone de texte, dans le coin supérieur gauche.
gui::IGUIEditBox *editBox = gui->addEditBox(message,
core::rect<s32>(20,15,200,30));
//On réutilise la même chaîne de caractères pour le texte du bouton.
swprintf(message, L"Mise a jour", 224);
//On rajoute le bouton de mise à jour dans le coin supérieur droit.
gui::IGUIButton *bouton = gui->addButton(
core::rect<s32>(220,15,300,30), 0, -1, message);
//On associe des images de fond aux états du bouton.
bouton->setImage(driver->getTexture("vert.bmp"));
bouton->setPressedImage(driver->getTexture("rouge.bmp"));
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
driver->setFog(video::SColor(0,215,215,224), false, 2.0,200.0,0.01, true);
//La boucle de rendu
while (device->run())
{
driver->beginScene(true,true,video::SColor(0,200,200,200));
scenegraph->drawAll ();
gui->drawAll();
driver->endScene ();
//Si le bouton est enfoncé, le texte de la zone de texte
//devient le nouveau texte du texte satique.
if (bouton->isPressed() == true)
texte->setText(editBox->getText());
}
device->drop ();
return 0;
}
Bon je sait le code est pas très propre :p
Et l'erreur est de type fenétre windows envoyer ne pas envoyer