#0 

21-06-2007 18:44:13

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Salut !

Récemment j'ai découvert que j'avais que très peu de connaissance en C/C++...

En effet, j'ai juste appris sur le site du zéro et avec le livre "C++ pour le nul" et il me manque des choses qui me paraissent indispensables comme l'utilisation/création de DLL, ou des fonctions qui serait utile...

Enfin, je ne sais pas comment le dire mais j'ai un manque de méthode dû au manque de base en C, qui a pour résultat un programme lourd, ou je me perd :s

Ma question est avez vous des tutoriaux/livres/... que vous me conseillerez ?

a+
w

EDIT : tient, par exemple avoir des notions de bases sur les matrices (même si je ne comprend pas tout)

Dernière modification par Willikus (21-06-2007 18:50:22)


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#1 

21-06-2007 19:51:24

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Pour les DLL, je voudrais pas dire de bêtises vu que j'en ai jamais fait, mais il me semble que c'est juste une bibliothèque de fonctions : t'écris ton programme comme d'habitude, sauf que t'as pas de main, et tu indiques a ton compilateur que tu veux compiler une dll (ca dépend des IDE). Corrigez moi si je me trompe surtout, cette question m'intéresse aussi.

Sinon, pour les matrices, c'est pas vraiment un prolème avec le C ou le C++, mais plutôt avec les maths. Sur le site du zero, y a ca : http://www.siteduzero.com/tuto-3-7456-1 … rices.html
Je pense que c'est suffisant si tu veux comprendre les bases des "maths 3D", mais si tu veux aller plus loin, y a de très bons articles sur wikipédia (forcément, ca devient tout de suite moins drôle hmm ).

Hors ligne


#2 

21-06-2007 19:57:36

diOxy
Abonné
Date d'inscription: 10-10-2006
Messages: 153

D'un autre côté, tu peux toujours jeter un oeil sur les autres langages... wink

Qui a dit c# ???

Hors ligne


#3 

21-06-2007 20:30:38

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Merci de vos reponse. (je suis en train de regarder le truc des matrices)

Pour le C# (.NET, ...) j'ai l'impression que c'est surtout religieux : j'aimerais bien connaitre les avantages/inconvénients sachant que je suis quelqu'un pas très bon en général mais maniaque voir acharné : donc la simplicité ne m'est pas utile ;)

En fait ce qui me pose problème c'est que mon code fait ses 1500 lignes (retirons en 500 qui sont juste la pour les coms ou les tests)
Bref 1000 ligne que je n'arrive pas a diviser en plusieurs fichiers (même le receiver je n'arrive pas a le séparer en un header) car il me manque les bases (le site du zero ayant un chapitre peu satisfaisent : que je n'arrive pas a adapté à une fonction "complex")

Bref, comme je le disais, ce qu'il me manque c'est de la méthode et des bases.


(Ensuite je me demandais également si il était possible de fait un truc du genre :

Fichier : Partie1.cpp

Code:

#include <irrlicht.h>
using namespace irr;

using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#pragma comment(lib, "Irrlicht.lib")

int main()
{

    IrrlichtDevice *device =
        createDevice( video::EDT_SOFTWARE2, dimension2d<s32>(640, 480), 16,
            false, false, false, 0);


    device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");


    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();


    guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",
        rect<int>(10,10,260,22), true);


    IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
    IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );


    if (node)
    {
        node->setMaterialFlag(EMF_LIGHTING, false);
        node->setMD2Animation ( scene::EMAT_STAND );
        node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
    }

Fichier : Partie2.cpp

Code:

smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));


    while(device->run())
    {
    
        driver->beginScene(true, true, SColor(255,100,101,140));

        smgr->drawAll();
        guienv->drawAll();

        driver->endScene();
    }


    device->drop();

    return 0;
}

Fichier : Main.cpp

Code:

#include"Partie1.cpp";
#include"Partie2.cpp";

Mais juste dans ce genre, avec un découpage servant qu'a la clarté)


a+
w


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


#4 

21-06-2007 20:45:43

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

euh ca paraît un peu merdique ta façon de découper là smile
Un projet ça se découpe en général plus en classes. Une "engine" assez générique, avec le sceneMgr & co, et les différents gestionnaires à côté, tout dépend du ton type de projet.
Ca te fait un main.cpp assez petit, un engine.h, engine.cpp, truc.h, truc.cpp
Je sais pas si c'est ça que tu voulais comme réponse mais en tout cas on s'y retrouve très bien comme ça. Et pas besoin d'utiliser de globales.
Vu que tu parlais du site du zero, le tuto sur la poo avec l'exemple du rpg est pas si mal fait si je me souviens bien
plouf


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#5 

22-06-2007 10:21:51

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Je pense pas que le fait de changer de langage soit une bonne solution, ici c'est plutôt un problème de méthode. Heureusement que tu es acharné, parce que autant le dire tout de suite, ça s'apprend pas en 5 minutes smile.
Encore une fois, je te conseilles d'aller voir sur wikipedia, et plus précisément le portail informatique. Y a pas vraiment d'exemple pratique, mais je pense qu'il est intéressant de se pencher un peu sur la théorie.
Pour le découpage des programmes, cherche des infos sur "les motifs de conception" ("design pattern" en anglais wink) : ce sont des sortes de "solutions" pour résoudre des problèmes courants.
http://fr.wikipedia.org/wiki/Mod%C3%A8les_de_conception
Essaie de comprendre leur fonctionnement, ca te donnera une idée de la manière de découper ton programme en classes. Nhésite pas non plus à regarder les diagrammes d'héritage dans la doc d'irrlicht. Le reste n'est qu'une question d'expérience : ca viendra au fur et à mesure smile

Hors ligne


#6 

22-06-2007 10:52:44

XT95
Membre
Date d'inscription: 20-06-2007
Messages: 15

#include"Partie1.cpp";
#include"Partie2.cpp";


oO au que c'est pas beau ca !



Sinon, il y a cet exellent tuto pour l'architecture d'un jeux video :
http://khayyam.developpez.com/articles/ … hitecture/


Hors ligne


#7 

22-06-2007 13:19:43

Willikus
Abonné
Date d'inscription: 21-10-2006
Messages: 150
Site web

Je vais regardé ça de plus près... en faite, je ne m'imaginait pas ça de cette façon.

Maitenant il faut que je comprenne ! ^^

(le dernier site qui prend Irrlicht m'es utile car ça me permet de voir un cas particulier, chose que l'on ne voit pas sur le site du zero)

Bref, je vais comprendre ça.



(Désolé si mon exemple à choquer/traumatisé des anciens wink )


a+
w


Athlon 3000+ / 1024Mo PC3200 /8800 GTS

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
68 invités en ligne
Aucun membre connecté
RSS Feed