Partage
  • Partager sur Facebook
  • Partager sur Twitter

activer la SDL

25 août 2018 à 18:48:22

bonjour. j'ai pu installer finalement la SDL 1.2 . apparemment ça a marché apres avoir suivi les étapes d'installation .

j'ai un long code dans le "main.cpp" ce qui est normal d'apres ce que j'ai lu . par contre quand je compile , j'ai le message "hello world" qui s'affiche mais je n'ai pas la 2e fenetre  (celle de la SDL  avec l'image ) qui apparait . 

bien que je n'ai aucun message d'erreur apres la compilation , ni apres l'appartition  de la console avec le message "hello world" je me demande si dans mon cas , c'est normal .

 est ce que en fin de compte , la bibliothèque graphique (SDL) est activée ?

j'ai réussi à retrouver la phrase : "fatal error :SDL/SDL.h : No such file or directory" !!

je n'ai pas crée de fichier .h ?!!!!

-
Edité par DavidBerger2 28 août 2018 à 1:42:34

  • Partager sur Facebook
  • Partager sur Twitter
25 août 2018 à 19:20:25

Salut,

Montre ton code. Es-tu sûr de compiler le bon projet (montre une capture d'écran de Code::Blocks) ? Pourquoi utiliser la SDL 1.2 quand la SDL 2 est sortie depuis plus de cinq ans ?

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
25 août 2018 à 20:01:27

parce que cette foutue SDL 2 j'arrive pas à l'installer sur mon codeblock qui est la version 17.12 . malgré toutes les procédures que j'ai lu , c'est peine perdu que cette foutue version accepte de s'installer .

ceci dit je n'ai essayé que la version 64 bits  du SDL 2 parce que je suis en 64 bits . on m'a expliqué que cette version ne fonctionne pas apparemment  et qu'il vallait mieux installer la version 32 bits . c'est ce que j'ai fait .

 mais il y a plusieurs façons d'installer et j'ai beaucoup essayé c'est fatiguant ,  ça n'a pas marché... trop  de manipulations à faire.

le code est seulement celui du main qui apparait à la fin de l'installation de la SDL .

  • Partager sur Facebook
  • Partager sur Twitter
27 août 2018 à 21:28:55

Bon, donc pour la SDL 2 sur Code::Blocks, tu peux voir ici. Et j'ai envie de dire que la partie important, c'est pas celle qui explique comment lier la SDL 2, ce n'est qu'un exemple. La partie importante, c'est celle qui explique le fonctionnement des bibliothèques et la configuration de ton projet. Pour la SDL ça donne ça.

  • Télécharger la SDL. Prendre la version pour MinGW.
  • Créer un projet en console.
  • Dans le dossier de ce projet, créer un dossier include et un dossier lib.
  • Décompresser la SDL. Dans le dossier i686-w64-mingw32, prendre les dossier lib et include et les fusionner avec les dossiers include et lib de notre projet (en fait, on n'a pas besoin de tous les fichiers de lib). Prendre la dll dans le dossier bin, et la placer dans le dossier du projet.

Un peu de copier-coller.

Sous Code::Blocks, nous devons aller dans le menu « Project », puis dans « Build options », pour accéder aux options de compilation.

Il ne faut choisir ni « Debug » ni « Release », mais rester dans la configuration de l’intégralité du projet. Nos réglages seront alors appliqués à l’intégralité du projet et seront donc valables en changeant de cible.

Dans le menu « Search directories » → « Compiler », ajoutons le dossier include que nous avons créé. À la question « Keep this as a relative path? », répondons oui, pour que son chemin soit par rapport à notre projet (il sera donc /include). Le compilateur saura alors qu’il faut rajouter ce dossier aux dossiers dans lesquels chercher les fichiers d’en-tête.

Dans le menu « Search directories » → « Linker », ajoutons le dossier lib que nous avons créé. À la question « Keep this as a relative path? », répondons oui, pour la même raison que précédemment. L’éditeur de lien saura alors où chercher les fichiers compilés des bibliothèques.

Dans le menu « Linker Settings », il faut alors renseigner les bibliothèques à lier au projet. On le fait, soit en les choisissant dans le répertoire avec le menu de gauche, soit en saisissant les options de linkage à rajouter.

Les options de linkage à rajouter sont -lmingw32 -lSDL2main -lSDL2 -mwindows (-mwindows` sert à ne pas avoir la console avec la fenêtre, on peut le retirer pour garder la console).

Et ensuite, on compile un code.

#include <sdl2>

int main(int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Quit();
    return 0;
}
</sdl2>

On le sait déjà, mais l'éditeur Markdown d'OC est vraiment chiant !

-
Edité par yo@n97one 28 août 2018 à 2:07:03

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
28 août 2018 à 1:22:50

d'accord merci pour la réponse . mais que sont les bibliothèques à renseigner?

j'ai finalement réussi à activer cette foutue SDL car la fenetre  sdl est apparue lorsque j'ai fait la compilation.

par contre , lorsque j'ai voulu compiler ton petit code  il m'a fait quoi ?!!!

"fatal error:SDL/SDL.h : No such file or directory " !!!

le code block n'a pas détecté la SDL ou je n'ai pas fait de fichier .h ou je sais pas quoi ?!!!!

pourquoi ça arrive ?!!! le dossier de mon projet c'est bien celui qui est créé lorsque je choisis un nom pour mon dossier   avec la fenetre qui me demande ou je veux mettre ce dossier , c'est bien ça ?

-
Edité par DavidBerger2 28 août 2018 à 1:47:43

  • Partager sur Facebook
  • Partager sur Twitter
28 août 2018 à 2:05:00

Oui, le dossier de ton projet c'est celui que tu crée quand tu crées ton projet (celui où il y a le .cbp). Pour ton problème avec SDL/SDL.h qui n'est pas reconnu, regarde dans le dossier include qu'on a créé où est le fichier SDL.h. Il est sûrement dans un dossier SDL2/SDL.h et pas SDL/SDL.h.

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
28 août 2018 à 3:40:01

bon alors je ne sais pas quel micmac s'est passé mais voilà pour une raison que j'ignore . le codeblocks a merdé et s'est réinitialisé mais le plus surprenant , c'est que ça a marché...

 car auparavant ,  les fichiers .h   du dossier include de mon projet n'affichaient que l'extension en fin de nom  mais depuis la "merde" , ils ont changé d'apparence , maintenant l'extension de chaque fichier se trouve écrite en gros à l'intérieur du fichier et de couleur rouge . que s'est il passé ?

mais le + bizarre c'est que le meme changement s'est opéré aussi pour mon "main" car la grosse lettre "c" est écrite en bleu dans le fichier meme.

par contre et c'est là le plus bizarre , ça indique "C++"  source file

  • Partager sur Facebook
  • Partager sur Twitter
28 août 2018 à 4:40:52

Ce serait bien que tu nous dises quelle version tu comptes utiliser. Là, j'ai l'impression que tu es sur la SDL 1.2 ce qui expliquerait pourquoi tu as un fichier C++ (le template de Code::Blocks est mauvais et il te crée un dossier avec un main.cpp).

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
28 août 2018 à 4:55:07

version codeblocks : 17.12, version SDL : 1.2.15 voilà.
  • Partager sur Facebook
  • Partager sur Twitter
28 août 2018 à 5:00:36

Ben voilà, c'est normal. Et ça va poser problème, donc quand tu fais un projet SDL, supprime le fichier main.cpp et crée un fichier main.c.

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
28 août 2018 à 15:09:41

Merci.je fais comment dejà pour faire le main.c parce que quand j'ai essayé de supprimer le main.c++ le code par contrr n'etait plus fonctionnel.

J'ai été obligé de le remettre.

  • Partager sur Facebook
  • Partager sur Twitter
29 août 2018 à 20:42:50

bonjour. voilà j'ai pu régler mon probleme . j'ai supprimé le main.cpp et j'ai recréé un fichier.c et j'ai changé le cpp de settings par cc. par contre , quand j'ouvre le codeblock par le main.c que j'ai recréé, la meme erreur liée au SDL apparait et le code ne compile pas .

mais lorsque je lance le codeblock par le fichier projet SDL  le code fonctionne et compile et tout marche nickel !

et dans le code block à gauche du code dans la colonne managment , il y a un triangle jaune sur le fichier main.c que j'ai refait .

  • Partager sur Facebook
  • Partager sur Twitter
1 septembre 2018 à 22:42:20

je suis passé aux exercices non corrigés : le dégradé. et j'ai essayé le dégradé du blanc vers le noir. je m'attendais à ce que ce soit facile mais je bloque sur la procédure et pourtant  la logique voudrait que ce soit l'inverse du noir au blanc  je n'arrive pas à produire le dégradé du blanc vers le noir .
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

void pause();
int main (int argc, char* argv[])
{
     SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
    SDL_Rect position;
    int i = 0;

    SDL_Init(SDL_INIT_VIDEO);

    ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE);

    for (i = 0 ; i <=255 ; i++)
        lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0);

    SDL_WM_SetCaption("Mon dégradé en SDL !", NULL);

    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

    for (i = 0 ; i<=255 ; i--)
    {
        position.x = 0; // Les lignes sont à gauche (abscisse de 0)
        position.y = i; // La position verticale dépend du numéro de la ligne
        SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i));
        SDL_BlitSurface(lignes[i], NULL, ecran, &position);
    }

    SDL_Flip(ecran);
    pause();

    for (i = 0 ; i<=255  ; i--) // N'oubliez pas de libérer les 256 surfaces
        SDL_FreeSurface(lignes[i]);
    SDL_Quit();

    return EXIT_SUCCESS;
}
void pause()
{
    int continuer = 1;
    SDL_Event event;

    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
        }
    }
}
  • Partager sur Facebook
  • Partager sur Twitter
2 septembre 2018 à 14:38:07

Hello,

Lignes 23 et 34: quelles valeurs va prendre i ?

-
Edité par edgarjacobs 2 septembre 2018 à 14:54:22

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

2 septembre 2018 à 21:35:01

et bien la ligne 23 j'ai voulu décrémenter  ceci :

SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255255255))

si j'ai bien compris , je mets les 3 valeurs à 255 ce qui représente la couleur blanche et donc tant que i est plus petit que 255 , et bien je diminue la valeur 255 donc je la fonce !

apres j'ai longuement réfléchit sur la ligne que je viens de coller ; 

dans l'exemple du code donné précédemment pour la couleur  noir vers blanc , les chiffres étaient à 0 !

 est-ce que ces "0" représentaient l'assignation  à la couleur noir pour débuter le code  ou au contraire , une initialisation  à 0 qui n'a rien à voir avec les couleurs ou au contraire la position de départ de la couleur d'origine qui changera par la suite grace à l'incrémentation ou la décrémentation ? le site n'a rien expliqué à ce sujet .

si j'ai bien compris l'abscisse et l'ordonnée , ,

la ligne verticale qui correspond au "y" commence du haut qui est le 0 (départ) vers le bas (qui est la valeur max) ?

et le "x qui est la ligne horizontale commence de la gauche qui est 0 vers la droite qui est le max , c'est bien ça ?

  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2018 à 0:19:02

Re,-

J'ai posé une question simple qui demande une réponse simple (qui te dirigera vers la solution), et tu écris une tartine (full options) dans laquelle tu ne réponds même pas à la question....

-
Edité par edgarjacobs 3 septembre 2018 à 0:21:02

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

3 septembre 2018 à 1:15:42

je t'ai parlé de la ligne 23 ou j'ai voulu décrémenter 255 qui représente la couleur blanche . 

donc i devrait valoir 0 non,  vers la fin , une fois que le nombre de lignes atteint 255 , donc devenir plus foncé au fur et à mesure que RGB(255) diminue .

-
Edité par DavidBerger2 3 septembre 2018 à 1:20:10

  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2018 à 9:03:31

Fais la ligne 23 à la main, en regardant bien toute la ligne. Au premier tour, i vaut 0, puis...

-
Edité par yo@n97one 3 septembre 2018 à 9:04:01

  • Partager sur Facebook
  • Partager sur Twitter
Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
3 septembre 2018 à 13:30:29

DavidBerger2 a écrit:

je t'ai parlé de la ligne 23 ou j'ai voulu décrémenter 255 qui représente la couleur blanche . 

....


As-tu répondu à la question que je t'avais posée ? Non.

Suis le conseil de yo@n97one !

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

3 septembre 2018 à 14:10:19

D'accord .je ferai comme tu as dis.

j'ai vu l'erreur .

j'aimerai qu'on m'explique juste ceci :SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));

les 3 "0" à la fin représentent'ils , une initialisation à 0  , ou bien une allocation de la couleur noire pour chaque couleur primaire ou bien encore  la position de ou la couleur va changer suivant le code ? 
je me repère par rapport à la fenetre : le 0 pour l'ordonnée"y" commence depuis le haut et non le bas. que représente donc les 3 "0" ?

-
Edité par DavidBerger2 3 septembre 2018 à 22:05:43

  • Partager sur Facebook
  • Partager sur Twitter
4 septembre 2018 à 16:33:47

j'aimerai qu'on m'explique juste ceci :SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));

les 3 "0" à la fin représentent'ils , une initialisation à 0  , ou bien une allocation de la couleur noire pour chaque couleur primaire ou bien encore  la position de départ de la couleur d'origine ?
je me repère par rapport à la fenetre : le 0 pour l'ordonnée"y" commence depuis le haut et non le bas. 
  • Partager sur Facebook
  • Partager sur Twitter
4 septembre 2018 à 18:45:03

DavidBerger2 a écrit:

j'aimerai qu'on m'explique juste ceci :SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));

les 3 "0" à la fin représentent'ils , une initialisation à 0  , ou bien une allocation de la couleur noire pour chaque couleur primaire ou bien encore  la position de départ de la couleur d'origine ?

.

C'est un QCM ?

Faut lire la doc, aussi: SDL_FillRect remplit une surface avec une couleur. COULEUR. Que veux-tu que les 3 zéros servent à fabriquer ? Du boudin ?



-
Edité par edgarjacobs 4 septembre 2018 à 18:46:47

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

4 septembre 2018 à 18:57:05

Je me posait des questions par rapport aux 3 "0".

Est ce que c'etait une initialisation à 0 , ou bien deja une allocation de couleur ?

  • Partager sur Facebook
  • Partager sur Twitter
4 septembre 2018 à 19:08:32

Te répondre me rappelle une vieille blague (mais tellement vraie !)

Un homme demande son chemin à un autre.
- Pourriez-vous m'indiquer comment me rendre rue Unetelle ?
- Certainement, mon père. Mais, dites-moi, vous êtes jésuite ?
- Mais oui, mon fils. Pourquoi ?
- Vous n'y arriverez jamais: c'est tout droit.

Si elle pose un problème éthique, me le signaler, merci.

-
Edité par edgarjacobs 4 septembre 2018 à 20:03:32

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

18 septembre 2018 à 22:07:28

bonjour aujourd'hui je suis passé au dégradé horizontal mais je pensais pas que ce serait aussi dur  j'ai fait ceci :

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>

void pause();
int main (int argc, char* argv[])
{
     SDL_Surface *ecran = NULL, *lignes[640] = {NULL};
    SDL_Rect position;
    int i = 0;

    SDL_Init(SDL_INIT_VIDEO);

    ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE);

    for (i = 0 ; i <=639 ;i++)
        lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 10, 32, 0, 0, 0, 0);

    SDL_WM_SetCaption("Mon dégradé en SDL !", NULL);

    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));

    for (i = 0 ; i <=639 ;i++)
    {
        position.x = i; // Les lignes sont à gauche (abscisse de 0)
        position.y = 0; // La position verticale dépend du numéro de la ligne
        SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i));
        SDL_BlitSurface(lignes[i], NULL, ecran, &position);
    }

    SDL_Flip(ecran);
    pause();

    for (i = 0 ; i <=639 ;i++)
        SDL_FreeSurface(lignes[i]);
    SDL_Quit();

    return EXIT_SUCCESS;
}
void pause()
{
    int continuer = 1;
    SDL_Event event;

    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
        }
    }
}

bon j'arrive à faire bizarrement 3 dégradés horizontaux  . j'ai changé la taille des pixel à 10 pour que ça se voit mieux . mais j'arrive pas à faire un seul dégradé et je n'arrive pas à faire plusieurs lignes .

  • Partager sur Facebook
  • Partager sur Twitter
19 septembre 2018 à 11:16:02

Bonjour,

En ligne 27 les i associés au format représentent les 3 couleurs et donc devraient être compris entre 0 et 255.

  • Partager sur Facebook
  • Partager sur Twitter
Architecture SDL                     Multithreading         
19 septembre 2018 à 12:31:12

-

-
Edité par edgarjacobs 19 septembre 2018 à 16:32:54

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent