ca compile, ca ne veux pas dire que ca marche
int* a=0;
ca compile et ca marche pas
en l´occurence, je suis presque sur que
"
else if (vram=1|pb==1)//si on met l´image en ram
C´est bien fait expres ca ? vram=1 et pas vram==1 ?
probalement qu´il y a une erreur puisque tu rajoute
if (vram==1)
deux lignes plus tard.
"
est une vraie erreur et je penses que ton probleme vient de la.
j´ai une ptite question (jdébute la programmation):
dans ton tuto (de ce site : http://www.fvirtman.fr.st/ ), au point 3 (OpenGL)
j´ai copier coller tt le code
j´ai compilé mais j´ai des messages d´erreurs :
[Linker error] undefined reference to `glShadeModel@4´
[Linker error] undefined reference to `glClearColor@16´
etc...
toute une liste de "Linker error"
et à la fin il ya "ld returned 1 exit status "
et C:\blablabla...\prog C++\Makefile.win [Build Error] [3d.exe] Error 1
pkoi? ![]()
tu as un probleme au linkage avec la lib GL
as tu bien installé les lib GL ?
as tu bien spécifier qu´il fallait les utiliser dans les options de compilation?
Salut, j´aimerai savoir si il existe une fonction dans SDL pour connaitre la couleur à une certaine position dans un rectangle.
exemple:
if(la couleur de ce rectangle aux coordonnées x,y,w,h est blanche)
faire ça;
else faire ça;
Sinon, je voudrais savoir comment gérer les collisions.
exemple:
je bouge mon perso dans une map, il ne peut pas en sortir.(ça, j´ai réussi)
Maintenant, si je colle un autre perso(pnj) en mouvement au milieu de la map, comment faire pour que mon perso ne traverse pas le pnj quand je le deplace.
merci par avance
@+
ce n´est pas SDL qui te permet de gerer ca.
SDL ne sert qu´a faire l´affichage.
Il te faut pour cella faire un "moteur physique" bien que tu n´ai pas besoin d´aller aussi loin que dans les super jeux moderner en 3D.
Je pense que le meme style de moteur que pour un pong suffira
il faut installer des lib GL?
dans son tuto, c t marké ke c t inclu dans les compilateurs récents
g juste mis le truc là dans options du projet/parametres/editeur de lien
-opengl32 -glu32
J´ai une petite question.
J´ai une erreur fatale lorsque je vide la mémoire avec mon destructeur.
Je vous montre le code tout simple :
class CA
{
public :
char* na;
int a;
CA() : a(0) {};
CA(char* _nom) { na = new char[strlen(_nom)]; strcpy(na, _nom); }
~CA()
{
delete(na);
}
};
Pour tester je fais ca:
A1 = new CA("vaisseau1");
delete(A1); //puis je veux deleter lorsque je quitte le programme.
Est ce que delete(A1); et A1->~CA(); fais la même chose (je pense que oui)
Mais quel que soit la ligne que je mets, j´ai une erreur fatale lorsqu´il arrive sur la ligne du destructeur delete(na);
Comment faire pour supprimer une chaine de caractere avec son destructeur?
Merci pour les réponses
Grayfoxdie > opengl GL n´est pas un moteur physique, c´est une librairie d´affichage 3D.
Si tu veux gérer les collisions, c´est avec des if qu´il faut le faire.
Dans mon exemple de tuto de balle, je les gere avec le bord de l´écran :
je dis :
si la coordonnée x de la balle est plus petite que 0, alors je change de sens.
Pour lire un pixel sur une image, regarde les fonctions getpixel qu´il y a dans les exemples de la doc de SDL. Sinon, regarde mon tuto sur la promenade, regarde futils, tu as une fonction pour lire un pixel :
attention, il faut que l´image soit en RAM de préference, je te le déconseille pour le test de collision.
franco01 >
ça plante sur la destruction de ton na :
tu l´as créé ainsi :
na = new char[strlen(_nom)];
il faut donc le détruire ainsi :
delete [] na;
car c´est un tableau.
Ok merci ca fonctionne maintenant
Encore une autre question.
J´ai une classe mère CA et une classe fille CB(dérivée de la classe mère), je voudrais utiliser le constructeur de la classe mère dans celui de la classe fille afin de créer mon objet dynamique CB.
Donc j´ai le choix entre utiliser les listes d´initialisation ou d´affectation.
Si j´utilises les listes d´initialisation pour créer mon objet j´ai une erreur de compilation car il faut que je donne des paramètres que je dois créer dans mon constructeur de CB donc ca risque pas de marcher.
Si j´utilises l´affectation je peux créer des objets intermediaires afin d´appeller le constructeur avec tous les objets mais ca ne fait rien, lorsque je sors du constructeur de CB je n´ai plus les données créer par contrcuteur de CB.
exemple (un bout de code):
CB::CB()
{
CVecteur vPos(500, 400), vTaille(80, 80);
this->bloc = new CA(&vPos, &vTaille);
CA(bloc, 500, 300);
}
lorsque je fais cela, je ne créer rien dans mon objet dynamique mais je ne peux pas non plus le mettre dans les listes d´initialisation alors comment faire?
Voici un exemple pour modéliser mon problème:
class CA
{
public :
char* nom;
int a;
CA() : a(1) {};
CA(int _a, char* _nom)
{
nom = new char[strlen(_nom)+1];
strcpy(nom, _nom);
a = _a;
}
};
class CB : public CA
{
public :
int b;
CB()
{
char* name="rossi";
CA(10, name);
b=5;
}
};
CB * B1;
B1 = new CB();
Ce que j´obtiens c´est
b de CB = 5;
a de CA = 1;
et nom de CA error
Il appelle le constructeur de CA sans paramètre afin de mettre a à 1 mais il n´appelle pas le second constructeur avec 2 parametres pourquoi? et comment s´y prendre pour que ca marche
ton second "appel" au constructeur ne fait rien, il ne faut que creer un objet local inutilise ; si tu testes en release, le code n´a simplement pas ete compile dans le binaire puisqu´il ne fait rien
pour construire ton CB avec l´appel au ctor parent avec des parametres, utilise la liste d´init :
CB::CB() : CA(param1, param2) {}
Voila, moi je me demandais si :
1 : on pouvait compiler des projets avec DEV C++ pour qu´ils tournent sous Linux 9.0 ou sup.
2 : si on trouvait des environements de développement genre Visual C++ sous Linux.
3 : Si les API (?) genre MessageBox fonctionaien aussi sous Linux.
---------------------------------------
Sinon merci à jeanYvesYves pour ton tuto (vraiment très complet !)
Qosimo > merci a toi
hélas encore loin d´etre complet le tuto ! Mais les temps arrangera doucement cela !
Pour tes questions :
1 - DevC++ repose sur la version Windows de gcc : donc pas de soucis, tu peux y compiler sous Linux (qui contient bien sur gcc)
2 - il y a des IDE sous Linux, je ne les connais car perso, quand je programmais sous Linux, j´étais sous xemacs ou nedit, mais j´ai préféré revenir sous Visual C++.
3 - MessageBox est une fonction typiquement de Windows. Il doit y avoir l´équivalent sous Linux.
Certaines lib pour l´API, comme WxWidget, sont portables.
Bonour à tous , j´aurais besoin d´un peu d´aide ...
je suis actuellement en train de programmer un rgp 2D , SDL/c++ , et au stade ou j´en suis , j´aimerais ajouter aux pnjs de mon jeu la possibilite de parler ...
mais j´aimerais des dialogues à la ´neverwinter night´ , on choisit sa reponse/question parmis une liste , et le pnj repond en fonction ...
le probleme , c´est que je n´ai aucune idée de la façon dont je pourrais m´y prendre pour faire ça ... si vous aviez un conseil , merci ![]()
Voila ce que je te propose : un pseudo langage script :
Tu crées un tableau de chaines de caracteres :
Je te marque les numéros dans la marge a titre d´exemple.
0 "P que veux tu ?"
1 "Q4 je veux de l´épée des titans"
2 "Q7 je veux manger"
3 "Q7 je veux partir"
4 "P tu as de quoi la payer cette épée ?"
5 "Q9 oui"
6 "Q14 non"
7 "P je n´ai pas a manger"
8 "E"
9 "I 500 10 16"
10"O 124"
11"S 500"
12"P Voila ton epee !"
13"E"
14"P Alors va te faire voir..."
15"E"
16"P tu n´as pas assez, reviens plus tard."
17"E"
Dans mon exemple, c´est simple : la premiere lettre de la chaine commande ce qui doit etre fait :
J´ai défini :
P -> affiche juste le texte
Q -> affiche un choix de question : le nombre qui suit est l´endroit ou on va si on choisis cette question.
E -> fin de dialogue : sors de la fonction de dialogue
I -> teste si le joueur a 500 (le nombre qui suit), si il a, il va a 10, sinon, il va a 16"
S -> enleve 500 francs
O -> Objet 124 : donne l´objet 124 (on dit que c´est l´épée)
Si tu comprends cela, tu comprends comment marche mon script de dialogue.
Appel :
char* dial[]={"P que veux tu ?" ,"Q4 je veux de l´épée des titans","Q7 je veux manger","Q7 je veux partir","P tu as de quoi la payer cette épée ?" ,"Q9 oui","Q14 non","P je n´ai pas a manger","E","I 500 10 16","O 124","S 500","P Voila ton epee !" ,"E","P Alors va te faire voir...","E","P tu n´as pas assez, reviens plus tard.","E"};
Procede_dialogue(dial);
A toi de programmer la fonction Procede_dialogue ![]()
Il faut que tu fasses une analyse et que tu réagisse en fonction de ce qu´il se passe.
Techniquement, c´est intéressant a programmer.
Une fois que tu l´as programmé, tu crées un dialogue en 2 lignes comme vu ci dessus !
Vous ete entrain de cree un jeu??
Ah ouais , joli ![]()
je vais commencer à réfléchir à ça ... merci ![]()
En fait , c´etait pas si dur ... je l´ai realise en mode console pour l´instant , si il y a des interesses je pasterais le code source .
bonjour,
jdébute en c++, j´ai dev-c++ 4.9.9.2
j´ai mis
using namespace std;
int main()
{
cout << "Salut !! ";
system("pause");
return 0;
}
sa me met "Appuyez sur une touche pour continuer..."
pourquoi pas "Salut !! "
merci
++
solo