CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

godrik
godrik
Niveau 30
20 août 2005 à 17:33:49

ca compile, ca ne veux pas dire que ca marche
int* a=0;

  • a = 34;

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.

grayfoxdie
grayfoxdie
Niveau 8
21 août 2005 à 17:32:54

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? :question:

godrik
godrik
Niveau 30
21 août 2005 à 18:50:00

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?

gokusnake
gokusnake
Niveau 7
21 août 2005 à 21:45:31

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

@+

godrik
godrik
Niveau 30
21 août 2005 à 21:57:16

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

grayfoxdie
grayfoxdie
Niveau 8
21 août 2005 à 22:41:13

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

franco01
franco01
Niveau 7
27 août 2005 à 11:31:15

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

JeanYvesYves
JeanYvesYves
Niveau 10
27 août 2005 à 12:25:31

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.

franco01
franco01
Niveau 7
27 août 2005 à 13:00:59

Ok merci ca fonctionne maintenant

franco01
franco01
Niveau 7
28 août 2005 à 13:03:23

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?

franco01
franco01
Niveau 7
28 août 2005 à 13:26:28

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

LGV
LGV
Niveau 28
28 août 2005 à 16:22:16

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) {}

Qosimo
Qosimo
Niveau 37
29 août 2005 à 18:12:46

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 !)

JeanYvesYves
JeanYvesYves
Niveau 10
29 août 2005 à 19:21:54

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.

jejej
jejej
Niveau 9
31 août 2005 à 09:55:01

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 :)

JeanYvesYves
JeanYvesYves
Niveau 10
31 août 2005 à 10:27:32

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 !

vegeta66
vegeta66
Niveau 6
31 août 2005 à 10:33:09

Vous ete entrain de cree un jeu??

jejej
jejej
Niveau 9
31 août 2005 à 10:33:26

Ah ouais , joli :)
je vais commencer à réfléchir à ça ... merci :)

jejej
jejej
Niveau 9
31 août 2005 à 12:07:24

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 .

solodown
solodown
Niveau 2
31 août 2005 à 12:57:52

bonjour,
jdébute en c++, j´ai dev-c++ 4.9.9.2

j´ai mis

  1. include <stdlib.h>
  2. include <iostream>

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

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware