Je me suis enfin lancé sur la SDL et je suis au TP de mario Sodokan. Actuellement j'essaye simplement d'initialiser la page d'accueil avec une photo jpg fournie dans le dossier. Cependant quand j'éxécute le programme j'ai un écran noir et pas d'image de fond... Je link bien les libs à la compile.
/******************************************************************************************
*Title: Home Page Mario Sodokan
*Author :
*Reviewer:
*Description:
*Status: in developpment
*****************************************************************************************/
#include <SDL/SDL.h> /* SDL */
#include <SDL/SDL_image.h> /* Inclusion du header de SDL_image (adapter le dossier au besoin) */
#include "mario_sodokan.h"
SDL_Surface *HomePage()
{
SDL_Surface *screen = NULL;
SDL_Surface *home = NULL;
SDL_Rect position_home;
position_home.x = 0;
position_home.y = 0;
SDL_Init(SDL_INIT_VIDEO);
SDL_WM_SetIcon(IMG_Load("caisse.jpg"), NULL);
screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_VIDEORESIZE);
SDL_WM_SetCaption("Mario Sodokan", NULL);
home = IMG_Load("menu.jpg");
SDL_BlitSurface(home, NULL, screen, &position_home);
ChoiceHomePage();
return screen;
}
void ChoiceHomePage()
{
int continuer = 1;
SDL_Event event;
SDL_Rect position_screen;
while (continuer)
{
SDL_WaitEvent(&event);
switch (event.type)
{
case SDL_QUIT:
continuer = 0;
case SDL_VIDEORESIZE:
position_screen.x = event.resize.w / 2;
position_screen.y = event.resize.h / 2;
break;
case SDL_KEYDOWN:
switch (event.key.keysym.sym)
{
case SDLK_1:
continuer = 0;
break;
case SDLK_2:
continuer = 0;
break;
}
break;
}
}
}
Salut, c'est plus compliqué que ça, il faut télécharger tes lib et headers et changer ton code : SDL_SetVideoMode() n'existe plus, on n'utilise plus des pointeurs sur SDL_Surface pour la fenêtre mais sur SDL_Window. Regarde de ce côté
KevinGL merci pour l'info ! Ca serait bien qu'OCR se mette à jour car je viens de voir que la nouvelle SDL date de 2013... J'espère qu'il n'y a pas tant de changements que ca sinon tout mon code sera faux
Effectivement le changement fonctionne mais j'ai des soucis avec les autres fonctions comme set video, set caption. Aurais tu un site qui regroupe les nouvelles fonctions de la SDL 2 ?
J'ai l'impression que toutes les fonctions ont changées et du coup le tuto est obsolète...
- Edité par Moshé Frydmann 21 janvier 2021 à 7:17:45
J'ai l'impression que toutes les fonctions ont changées et du coup le tuto est obsolète...
- Edité par Shémo il y a moins de 30s
edgarjacobs a écrit:
Hello,
Oublie sdl 1.x, obsolète. Passe à la 2.x
- Edité par edgarjacobs il y a environ 13 heures
Sinon pour avoir la doc sdl, mis à part une recherche google bien évidemment, c'est toujours une bonne idée de voir le site de ladite bibliothèque →http://wiki.libsdl.org/FrontPage
Yes j'ai regardé un peu mais j'ai l'impression que y a pas mal de différences. Ca décourage à poursuivre cette bibliothèque surtout qu'en réalité je pense que pour du C c'est pas forcément nécessaire.
On ne fait jamais du C juste pour faire du C, sauf si on est dans un cursus qui le demande.
On ne peut, àmha, apprendre un langage que si on a une base en algo. On ne résout pas un problème en C (ou en Python ou en Typescript ou en ...), on résout un problème indépendamment d'un langage particulier puis seulement ensuite on implémente la solution dans en utilisant un langage (ou plusieurs d'ailleurs) dans un environnement.
C'est là tout l'intérêt des structure de données abstraites. Tu dois créer un moteur de jeu genre pacman qui se joue sur un petit plateau → tu vas certainement avoir à implémenter une recherche de plus court chemin avec une recherche en largeur d'abord ; le jeu est real time avec une grande map → tu vas certainement t'orienter plus vers un algo type A*. Mais dans les deux cas tu vas ptêt avoir à gérer des priorités, du coup avoir besoin d'une deque que tu implémenteras soit classiquement suivant le langage ou grâce à un arbre min-max heap …
Alors évidemment tout n'est pas aussi manichéen que ça. Dans un projet tu sais quel langage sera utilisé, donc tu fais aussi des choix en fonction de la faisabilité dans ce langage. Mais comment connaître la facilité d'implémentation si tu ne l'as jamais implémenté ?
Apprendre un langage en n'utilisant que des bibliothèques qui font le boulot intéressant c'est pas forcément l'idéal.
Bon j'ai l'impression de faire mon 👴 en ressassant qu'il faut de bonnes bases en algo … mais on dit que si tu ne disposes que d'un marteau tous tes problèmes ont une forme de clou … étoffe ton établi et tout sera plus simple.
Oui effectivement je fais du C pour me donner une base de compréhension (algo, gestion de mémoire même si j'en aurai pas besoin après avec d'autres languages), etc... J'ai surtout commencé la SDL pour le fun.
Je pense, et dites moi si j'ai tord, que le C est une bonne école pour apprendre à programmer. On est face à pas mal de problèmes qui nous poussent à réfléchir. Tu as raison WhiteCrow, l'algorithmie est indépendante de tous language. d'ailleurs j'ai entendu parler d'un livre (ou d'un site je sais plus) qui regroupe pas mal d'algorithmes courants/existants en programmation. A mon sens le coeur du métier est là.
Je dirais au contraire que le C est assez bof pour apprendre à programmer (en fait il est surtout enseigné comme premier langage pour des raisons historiques).
Un programme faux peut tout à fait compiler et avoir l'air de fonctionner.
Il fait se concentrer sur des détails chiants et pas importants, ce qui fait qu'on ne peut pas se concentrer sur de l'algo par exemple.
Toujours lié au point précédent, on aimerait bien des structures de bases (au moins des chaînes de caractères et des listes potables) qui permettraient de travailler un peu (quitte à voir plus tard comment on peut les implémenter et tout). En fait, on compare à la bibliothèque standard d'autres langages et on sent un gros gouffre.
Tu as raison WhiteCrow, l'algorithmie est indépendante de tous language. d'ailleurs j'ai entendu parler d'un livre (ou d'un site je sais plus) qui regroupe pas mal d'algorithmes courants/existants en programmation. A mon sens le coeur du métier est là.
Des livres il y en a des tonnes, tout comme des sites … Je t'ai même déjà donné 2 ou 3 références il me semble.
Shémo a écrit:
Oui effectivement je fais du C pour me donner une base de compréhension (algo, gestion de mémoire même si j'en aurai pas besoin après avec d'autres languages), etc... J'ai surtout commencé la SDL pour le fun.
Bah il faut bien commencer par quelque chose … et au final, savoir s'interfacer avec une bibliothèque externe fait partie de compétences à avoir.
En passant, ce n'est pas tant que tu n'as pas besoin de savoir comment la mémoire est gérée dans d'autres environnements de programmation, c'est juste qu'en C tu es «proche du matériel» mais plus justement de l'OS et que du coup tu as besoin d'être très rigoureux sur de nombreux points. C'est ce que ya@n97one voulait dire par : «Il fait se concentrer sur des détails chiants et pas importants, ce qui fait qu'on ne peut pas se concentrer sur de l'algo par exemple.». rigueur qui fait forcément défaut aux débutants et qu'il est parfois difficile d'acquérir.
yo@n97one a écrit:
Toujours lié au point précédent, on aimerait bien des structures de bases (au moins des chaînes de caractères et des listes potables) qui permettraient de travailler un peu (quitte à voir plus tard comment on peut les implémenter et tout). En fait, on compare à la bibliothèque standard d'autres langages et on sent un gros gouffre.
Bon, il existe quelques bibliothèques qui essayent de pallier ce problème, comme APR d'Apache, ou la GLib.
Oui WhiteCrow tu m'as donné 2 référence, d'ailleurs une que j'ai commencé à regarder. Intéressant.
PB Mario sodokan - écran noir
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent