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

Question SDL ( load bmp , font , heade

jejej
jejej
Niveau 9
09 février 2005 à 13:43:26

Bonjour à tous ,
J´ai décidé de faire un petit jeu de tétris
( je change de projet comme de chemise ) , et pour une fois , ayant plus avance dans la lecture de mes bouquins sur le c++ , j´ai décidé de programmer proprement :)

Bon , c´est un tetris alors pas besoin de classes avec polymorphisme , mais j´essaye de faire au moins un header + fichier cpp

Donc , en fait , si j´ai bien compris ce qu´est un moteur de jeu , mon header se résumerais à un moteur de jeu .
Puisque j´ai mis dedans les fonctions d´inialisation de la SDL , d´affichage d´images etc

Mais j´ai pas mal de problèmes :
Le fonction initialisation SDL semble ne pas foncitonner si je l´inclus dans le . h et que je l´appelle via main .
par contre , si je la copie-colle dans main , ca marche , c´est moi qui fait une erreur ou l´initialisation de la sdl DOIT se faire dans le . cpp ?

autre chose , j´ai une fonction ChargementImage qui charge un bmp .
Je l´ai mise dans le header , mais comment faire pour charger l´image que je passerai en argument ?
je veux dire , si je dis ChargementImage(Grille) , ca serait cool si le compialteur faisait ( Grille = SDL_LoadBMP("DATA/Grille.bmp") )

je sais pas si c´est possible par contre ?

autrement , j´aurais une question sur les fonts
j´ai trouve des tutoriaux pour pouvoir ecrire des phrases multicolores , qui bougnet et tout et tout , mais je ne comprends pas comment afficher une variable ?
c´est a dire qu´a chaque ligne remplit , j´ai mon int Score qui s´incremente , mais comment afficher ce chiffre à l´écran ? je vais quand meme pas faire un bitmap pour chaque score ? !

voila , c´est tout pour le moment , j´espere avoir ete assez clair
merci :)

inconnu[pure]
inconnu[pure]
Niveau 6
09 février 2005 à 13:58:14

Je sais pas pour les autre mais pour le chargement d´image il te faudrait une fonction comme ceci pris du tutorial de [DmX].

SDL_Surface *ChargementImage(const char *filename)
{
SDL_Surface *temp, *image;
temp=SDL_LoadBMP(filename);
image=SDL_DisplayFormat(temp);//Ceci permet de gagner du temp a l´affichage
SDL_FreeSuface(temp);
return image;
}

Puis dans ton main() il te faudrait quelque chose comme:

grille=ChargementImage("DATA/Grille.bmp")

inconnu[pure]
inconnu[pure]
Niveau 6
09 février 2005 à 14:01:51

Oops j´ai oublié de demander si tu pouvais donner le lien sur où tu a trouvé le tutrial pour ecrire sur l´ecran.

LGV
LGV
Niveau 28
09 février 2005 à 14:03:26

alors, rapidement :

" c´est un tetris alors pas besoin de classes avec polymorphisme"

moi j´en vois deja un gros bien naif : un concept generique de piece que tu specialises en L et T etc. dessus tu as tes operations generiques de rotation et deplacement par ex. Le tout combine avec une fabrique abstraite, et c´est 95% du jeu.

Dans tes headers faut pas foutre les implementations, mais les protos. Paste ton code sur un wall qu´on voit quelle tronche ca a, y´a surement un truc de mal gaule dans ton approche.

" comment faire pour charger l´image que je passerai en argument"

solution " bete", tu passes un char *, tu transformes au sein de la methode pour charger la bonne ressource, et tu retournes l´objet charge. Par ex. Ou alors a coup de macros.
Sinon tu parlais de code " propre", un concept de " ressource" ( tiens encore du polymorphisme qui se pointe) c´est bien aussi, qui associe un nom de ressource et un objet, le tout avec un manager de type singleton. Mais la c´est purement du design de code.

pour ta fonte, transforme la valeur de ta variable en chaine de caractere avec un sprintf par ex.

jejej
jejej
Niveau 9
09 février 2005 à 14:04:13

Merci , je vais essayer ce que tu m´as dit

sinon , je parlais de ce site la :
http://tastalian.free.fr/.fr/cours.php?part=SDL&index=3

mais il utilise une librairie addtionnelle , SDL_TTF , car sdl ne gere pas les fonts je crois . ..

JeanYvesYves
JeanYvesYves
Niveau 10
09 février 2005 à 14:07:35

ouais, SDL_ttf charge les fichiers font : tu lui passes une chaine en char* et tu recuperes un SDL_Surface* pret a etre blitté.

sinon, comme dis LGV, pour convertir tes variables en char --> sprintf

jejej
jejej
Niveau 9
09 février 2005 à 14:08:39

Bon , mea culpa LGV , je fais mettre des classes de partout avec un mass pointeurs :)

mais . .. plus tard :)

en fait , la mon but était déjà de parvenir à afficher une image , avec juste UNE brique qui serait tombe d´un nombre détermine de pixels par secondes
Je n´ai pas encore appris a me servir du temps ( sdl_getticks ? ) , ca m´entrainera :)
sinon , j´avoue que lorsque j´ai pense aux rotations et tout le nécessaire , la seule reponse qu´y m´est venue à l´esprit a ete : gogogo jeuxvideo.com ^^

Mais bon , j´y penserais plus tard a tout ca :)
je poste mon code dans deux secondes

dailleurs , vous pourrez me dire si c´est exactement ca , un moteur de jeu 2d ?

inconnu[pure]
inconnu[pure]
Niveau 6
09 février 2005 à 14:09:43

J´ai deja essayé de l´installer mais je n´y comprends rien.Je suis un peut spécial moi je suis rentré dans l´age be^te avant les autre et je suis pas près d´en sortir

jejej
jejej
Niveau 9
09 février 2005 à 14:11:17

le . cpp :
http://rafb.net/paste/results/Je317N10.html

le header correspondant ( affichage.h ) :
http://rafb.net/paste/results/upw84G96.html

vous en pensez quoi ? :)
merci pour tout conseil , remarque , critique . ..

JeanYvesYves
JeanYvesYves
Niveau 10
09 février 2005 à 14:15:08

ne met pas de code dans ton affichage.h

si tu veux le faire a part, renomme ton fichier
affichage.cpp

et met au dessus :

  1. include " affichage.h"

et dans affichage.h
tu mets juste les prototypes :

void ChargementImage();
void AffichageTout( SDL_Surface *img , int x , int y ) ;
void AffichageBout( SDL_Surface *img , int x , int y , int w , int h , int x2 , int y2 ) ;

inconnu[pure]
inconnu[pure]
Niveau 6
09 février 2005 à 14:18:20

Bon je ne suis pas professional mais voila ma sul critiqUn moteur de jeu sers a etre reutilisé,mais avec ta fonctions ChargementImage() elle ne peut que charger l´image plateau.La fonction que je t´ai mis en au elle permet de charge plusiere image.

jejej
jejej
Niveau 9
09 février 2005 à 16:22:23

Bon , je suis en train de reecrire mon header en enlevant tout nom propre à mon jeu .
Mais j´ai un problème ( encore ^^ ) pour l´initialisation de la SDL .

dans mon . cpp , j´ai ca :

  1. include < affichage.h>

SDL_Surface *Ecran;

InitialisationSDL(800,600,16,Ecran);

dans mon header , j´ai ca :
void InitialisationSDL( int x , int y , int bbp , SDL_Surface *img ) { . .. }

les points de suspension correspondent à un copier coller de la fonction d´initialisation , inclue auparavant dans le . cpp

a la difference que j´ai remplace Ecran par img , 800 par x , 600 par y et 16 par bbp .

Normalement , tout devrait marcher , mais a la compilation , le programme se lance ( ecran noir ) et s´arrete tout de suite , le fichier de log sterr donne :
" fatal signal : Segmentation Fault ( SDL Parachute Deployed) "

A quoi cela peut il etre du ? c ma faute ? oO ou alors on ne peut vraiment pas initialiser la SDL dans un . h .
. .. A ce propos , je n´ai pas bien compris ce que tu m´as dit , JYY :
si j´ai bien compris , mon header serait presque vide , il ne contiendrait que des prototypes ? je vois mal l´interet a vrai dire :p)

JeanYvesYves
JeanYvesYves
Niveau 10
09 février 2005 à 16:25:10

faut que tu debug.

L´interet est simple :

il sert a séparer : quand tu feras un gros prog, l´interet sera flagrant.

Dans le fichier . h, tu mets juste les prototypes, c´est a dire ce que tu autorises a appeler de l´exétrieur.
Comme le sommaire d´un livre : l´idée est de faire un outil transparent, réutilisable par la suite, sans que tu aies besoin de revenir dans affiche.cpp

jejej
jejej
Niveau 9
09 février 2005 à 16:27:29

Bon , en utilisant , pour la premiere fois de ma vie , quelle emotion , le debuggeur de devcpp , j´obtiens :
" une violation d´acces ( erreur de segmentation ) est apparue dans votre programme . "

:snif:

JeanYvesYves
JeanYvesYves
Niveau 10
09 février 2005 à 16:28:43

c´est normal, si ton prog a planté : ce qui est intéressant, c´est de savoir OU.
en lançant le debugger, tu vois ou.

jejej
jejej
Niveau 9
09 février 2005 à 16:33:04

Euh . .. ou ca ? j´ai remarqué sur la droite , dans l´onglet debug , ceci :

{<text variable, no debug info>} 0x402150 < printf> = Could not watch this variable

mais , je ne vois pas de ligne , ni de nom de variable .
dailleurs , je n´ai pas mis de " text variable "
( char qqchose ) ?

JeanYvesYves
JeanYvesYves
Niveau 10
09 février 2005 à 16:38:10

bizarre, quand le débugger se lance, au moment ou ça plante, tu dois avoir un curseur qq part non ?

jejej
jejej
Niveau 9
09 février 2005 à 16:44:52

Bon , le machin c´est l´horreur , j´ai redebuguer pour voir ( quand tu dis un curseur qq part , tu veux bien dire toute une ligne du programme surlignéee en marron-rouge ? )

Mais la , gros probleme :)

j´ai plusieurs trucs ( include , event , machin , for ? ! ) qui sont " not found in current context " . .. gné ?
ma text variable not watch est toujours la en plus . .. :snif:

je vais reposter mon code , ou mieux , remettre mon programme comme avant , c´est a dire avec l´initialisation dans le . cpp , parceque la ca marchait . ..

JeanYvesYves
JeanYvesYves
Niveau 10
09 février 2005 à 16:45:38

commence par me copier ici la ligne marron-rouge :)

jejej
jejej
Niveau 9
09 février 2005 à 16:47:23

Bah non , justement , y en a pas
mais ce qui est etrange ( je trouve ) c´est que des trucs comme " for " et SDL_BlitSurface " soient " not found in current context "
c´est bizarre quand meme . .. nan ? ^^

sinon , je n´ai pas de lignes en rouge comme d´ahbitude a la compilation , ni dans le . h ni dans le . cpp . ..

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