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++

dnob700
dnob700
Niveau 10
22 novembre 2005 à 16:40:54

Tu peut pas, mais qu´est ce que ça change vu que de toute manière le constructeur de B n´a pas accès au membre de l´instance de A lorsqu´il s´exécute et que celui de A ne fait qu´avoir plus d´information, si tu n´en veux pas tu ne t´en sers pas.

Si tu y tiens tout de même, tu peut faire :

class A
{
public :
A(){...;Instance_B = new B;}
~A() [delete Instance_B;}
private :
B *Instance_B;
}
int main(void)
{
A Instance_A;
return 0;
}

Oualors initialiser Intance_B à la main si c´est un membre public.
Mais c´est moins pratique et pas exactement pareil.

Mouuh
Mouuh
Niveau 6
22 novembre 2005 à 16:53:45

Ben dans l´optique d´apprendre le C++ et surtout l´objet (ayant surtout fait du C auparavant), j´ai commencé à programmer un petit jeu à l´aide de la SDL et OpenGL. J´en profite donc pour me faire une librairie en surcouche de SDL et OpenGL que je pourrais facilement réutiliser pour d´autres petits jeux (pong, tetris etc.).

J´ai donc une classe CGameManager qui contient une classe CWindow. SDL se lance et s´arrête dans CGameManager. La fenêtre est créé dans CWindow et SDL_FreeSurface() est appelé dans son destructeur. Ce qui fait que SDL_Quit() est appelé avant SDL_FreeSurface().

Je vais déplacer SDL_FreeSurface dans une fonction Destroy() que j´appelerais manuellement je pense.

Merci pour ta réponse

dnob700
dnob700
Niveau 10
22 novembre 2005 à 18:21:04

Donen la possibilité de créer plusieurs fenêtre de jeu : ne mets pas de CWindows dans CGameManager (ça n´est pas logique) et comme ça tu n´aura plus de problème.

Bon bien sur ce n´est pas être pas aussi simple mais ce genre de problème se rsolve par une étude appronfondie de la structure de tes classe avant de commencer à les programmer.

Bartours
Bartours
Niveau 9
22 novembre 2005 à 21:01:48

merci pour la réponse! par contre, j´aimerai bien savoir comment faire pour ajouter une bibliothèque (est-ce bien en copiant/collant le fichier telechargé dans le repertoire avec toutes les bibliothèques?)

et j´aurais aimé savoir pour mon problème avec le déplacement d´une moto ou d´un vélo dans un décor 2d (donc il n´y aurais que le pavé directionnel qui fonctionnerai!), pour mon mec sur le vélo, faut-il faire tout plein d´images qui formeront des annimations et s´en occuper dans le programme, ou alors ça fonctionne tout autrement?

dnob700
dnob700
Niveau 10
22 novembre 2005 à 21:35:33

Quelque part il doit y avoir un fichier qui te dit comment installer la DLL.

De plus, dans Dev C++ dans le menu outils il y a un logiciel pour installer de nouveau package, et l´un d´eux doit être SDL, ce qui permet de l´installer automatiquement.

globalement pour installer une lib, tu copie tout les fichiers .a dans le dossier lib du compilateur, tout les fichiers .h dans le dossier include du compilateur, et tout les fichier .dll dans C:\windows\system (où le nom qui y correspond sur ton PC).

godrik
godrik
Niveau 30
23 novembre 2005 à 12:47:32

Bartours, tu as raison, il faut faire plein d´image qui change toute les x frames.
Apres, j´imagine que des gens ont déjà fait ca bine, mais le refaire est un bon exercice je penses.

Bartours
Bartours
Niveau 9
23 novembre 2005 à 21:03:16

Ok merci pour ces réponses! j´ai ajouté mes lib! par contre j´ai pas vu la fonction avec advio pour redimmensionner la fenêtre...
Pour ce qui est du changement d´images, ça doit demander un boulot monstrueux pour que le perso soit bien animé (même si c´est de la 2d! parce que c´est pas super de jouer avec un mec qui glisse!), n´y a t´il pas un logiciel qui s´occuperai de m´aider en ce qui concerne les anim? Sinon j´ai pas tout a fait compris:
"Apres, j´imagine que des gens ont déjà fait ca bine, mais le refaire est un bon exercice je penses."
:d) on fait quoi bien? un genre de fonction pour le changement d´images?

dnob700
dnob700
Niveau 10
23 novembre 2005 à 23:16:45

advio, pour la console ?
si ton objet s´appelle console alors tu fait console.SetConsoleSize(100,50);
ça s´occupe de la taille du buffer et de la console.

Mais je te conseille de retélécharger la bibliothèque, j´ais mis à jour cette fonction (justement, pour mieux gérer la taille du buffer).

Bartours
Bartours
Niveau 9
24 novembre 2005 à 20:39:29

oui advio pour la console!
J´ai retelechargé la lib et il semble y avoir un problème sur la fonction SetConsoleSize. en effet, le deuxième nombre de la parenthèse ne peux pas dépasser 59, sinon la fenetre s´agrandit mais avec un ascenceur donc c´est pas chouette (je conseille de tester pour mieux se rendre compte...), sinon j´aimerai savoir si avec cette fonction, il est possible de mettre la fenêtre de la console en plein écran (ce qui changerait d´un ordinateur à l´autre selon la résolution je crois!). Sinon j´ai vu qu´il y avait aussi une fonction qui permettait de changer la couleur de la console mais après l´avoir testé, je me rends compte qu´elle en fait que changer la couleur de fond là ou il y a du texte écrit (la aussi je suis désolé c´est pas super pour expliquer mais faudrait tester!). Y a t´il une fonction qui permet de changer tout le fond de la console? (comme la commande "color" en dos...).

dnob700
dnob700
Niveau 10
24 novembre 2005 à 22:29:23

Pour l´ascenceur, c´est normal. Tu remarque que lorsque tu ouvre une console il y a déjà un ascenceur.

Pourquoi ? en fait il y a deux chose : le buffer qui est la zone dans laquel on peut écrire, et la console elle même qui affiche une petite zone du buffer.

Dans chaque dimensions la console doit être plus petite que le buffer (ou de même taille mais pas plus grande).
En règle générale, la console fait la même largeur que le buffer mais le buffer est beaucoup plus "haut" que la console, ce qui permet de revoir des lignes qui sont sortie par en haut.

C´est une fonctionnalité que je garde avec SetConsoleSize qui est une fonction "facile" d´utilisation. La fonction adapte la taille du buffer en largeur pour qu´il n´y ait pas d´ascenceur horizontal. Mais pas en hauteur. Mais de plus windows enpêche une fenêtre d´être plus grande que 59 lignes je suppose (en tout cas pour la console) donc à ce moment là il y a un ascenceur verticale.

En fait, c´est ce que j´ai corrigé dans la denière version : la hauteur du buffer est maintenant presque systématiquement plus grande que celle de la fenêtre (ce qui n´était pas le cas avant) donc il y aura toujours un ascenceur.

Si ça ne te vas pas il faut que tu utilise les fonction SetBufferSize et SetConsolePos pour choisir indépendament la taille du buffer et la position de la console dans celui-ci. (il faut appeler d´abord la fonction pour le buffer puis celle pour la console), c´est les fonctions "difficile".

Pour info si tu veux que la console et le buffer fasse la même dimension, pour ne pas avoir d´ascenceur, fait :
POS p;
p.X=x;p.Y=y;
SetBufferSize(p);
puis :
SetConsolePos(0,x-1,0,y-1);
ou :
SetConsoleSize(x,y);

Noflama
Noflama
Niveau 9
25 novembre 2005 à 18:02:08

J´aimerai savoir comment bloqué la touche qui permet d´ouvrire le menu de windowns. Celle entre le ctrl et le alt

MERCI !

Bartours
Bartours
Niveau 9
25 novembre 2005 à 19:56:48

J´ai essayé les commandes que tu as données et elles ne fonctionnent pas. Avec quel bibliothèques fonctionnent elles? ou alors comment dois-je m´y prendre? (j´ai fait du copier/coller mais fallait peut-être pas...en même temps ça me parait bizarre car x et y ne sont pas définis...)
Sinon j´ai réessayé d´installer la SDL et je suis à court d´idées... je suis passé sur de nombreux forums qui explicaient comment il fallait faire, j´ai telechargé plein de version differentes mais au final: RIEN! Je suis passé également sur le topic sur ce forum et ça m´a mené vers le site de JY² (fvirtman.com), j´ai suivi les instructions à la lettre (mis le .dll avec mon repertoire dans lequel est le jeu, transféré tous les contenus des dossiers dans ceux correspondants), ensuite j´ai appelé ma bibliothèque en faisant:

  1. include <sdl> (j´ai essayé aussi avec <sdl.dll>) et dès que je compile, ça me détecte cette ligne comme une erreure.. quel est la solution???!
jejej
jejej
Niveau 9
25 novembre 2005 à 20:15:46

faut inclure le header SDL.h ... include <sdl> ça veut rien dire du tout ...
donc tu fais #include <SDL.h> , ou , plus probablement si t´as suivi le tuto a JYY , #include <SDL/SDL.h> ...

Bartours
Bartours
Niveau 9
25 novembre 2005 à 21:24:15

Yooouuuuuuppppppi!!!!!!!! merci tu viens de résoudre mon problème! le pire c´est que c´était plutot con! bon ben du coup je vais lire la suite des tuto!!!!!!! :)

Bartours
Bartours
Niveau 9
25 novembre 2005 à 22:02:35

désolé je suis deja retour mais j´ai un nouveau problème!
J´ai copié/collé le programme sur le site de JYY pour afficher une image, j´ai changé le nom de "image.bmp" et j´ai remplacé par mon image que j´ai ajouté dans le dossier de mon projet. Je compile mais il ne m´affiche rien et dans le log de compile il marque :
C:\Documents and
Settings\Propriétaire\....\lib\gcc\mingw32\3.4.2\.
.\..\..\..\mingw32\bin\ld.exe: cannot open output file Projet1.exe: Permission denied
collect2: ld returned 1 exit status
make.exe: *** [Projet1.exe] Error 1
Exécution terminée
(et il m´affiche deux erreures...) ptêtre besoin de voir le prog? le voici:

  1. include <cstdlib>
  2. include <iostream>
  3. include <SDL/SDL.h>
  4. include <advio.h>

using namespace std;

SDL_Surface* screen; // l´ecran principale
SDL_Surface* firstscreen; // tampon temporaire
SDL_Event event; // gestion d´evenement

void init_SDL() // initialise SDL
{
SDL_Init(SDL_INIT_VIDEO); // preapare SDL
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN); // mode graphique
SDL_ShowCursor(0); // eneleve la souris
}

void waitkey() // attend qu´on appuie sur RETURN
{
while(1) // boucle
{
while(SDL_PollEvent(&event)) // aquisition d´evenement
{
if (event.type == SDL_KEYDOWN) // on appuie sur une touche ?
{
if (event.key.keysym.sym == SDLK_RETURN) return; // c´est "RETURN" ?
}
}
}
}

int main(int argc ,char **argv)
{
SDL_Rect rect1; // structure rectangle
init_SDL(); // initialise (plus haut)
firstscreen = SDL_LoadBMP("MonImage.bmp"); // charge l´image
// on dessine
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024; // défini le rectangle
rect1.h = 768;

SDL_BlitSurface(firstscreen,NULL,screen,&rect1); /
/ colle l´image sur l´écran, NULL car on affiche TOUTE l´image
SDL_Flip(screen); // affiche la prochaine frame
waitkey(); // attends qu´on appuie sur Return (plus haut)
SDL_ShowCursor(1); // reactive la souris
SDL_Quit(); // quitte SDL
return 0; // quitte le programme
}

(désolé pour la place encombrée!)

godrik
godrik
Niveau 30
25 novembre 2005 à 23:41:17

tu dois essayer de compiler alors qu´une instance du programme tourne toujours

_-hebuskiller-_
_-hebuskiller-_
Niveau 8
26 novembre 2005 à 17:44:09

?? ?
je crois qu´on ne peut pas utiliser sdl et iostream en meme temps

_-hebuskiller-_
_-hebuskiller-_
Niveau 8
26 novembre 2005 à 17:48:56

j´aurai une question:
Dans les fonctions qui retourne des valeurs, puis-je retourner plusieurs valeurs avec une seule fonction ?
Parceque j´en aurai besoin pour mon jeu

exemple

  1. include <truc>

int func(int z)
{
.......
return r1;
return r2;
}

int main()
{
int a, b, z=2;
a=func(z);
b=func(z);

return 0;
}

voila ce que je voudrais faire ( bien sur ceci n´est pas possible, mais je voudrais retourner 2 valeurs grace a une fonction.

poisson_d_avril
poisson_d_avril
Niveau 10
26 novembre 2005 à 18:01:38

Ou ya t-il une aide pour game maker ?

poisson_d_avril
poisson_d_avril
Niveau 10
26 novembre 2005 à 18:03:10

oupps me suis trompez scuse

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