Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Programmation > Apprenez à programmer en C ! > [Pratique] Création de jeux 2D en SDL > Création d'une fenêtre et de surfaces > Lecture des commentaires

Création d'une fenêtre et de surfaces

Vous devez être inscrit pour pouvoir poster des messages

Page : 1  2  3  Suivante
Pseudo Commentaire
Page : 1  2  3  Suivante
Hors ligne Blade-974 # Posté le 19/03/2006 à 19:45:33 - Ce membre n'a pas mis de note
J'adore les sushis
Groupe : Membres
Bon, la je vais pas mettre de note, paskeu jai lu le tuto alors que j'etais a moitié endormi. Je le relirai et je mettrai la note apres. Sinon, dans l'ensemble c'est plutot clair. J'ai quand mm reussi a avoir 17 au QCM alors que chuis quasi dans les bras de morphée lol.
Par contre, juste un petit truc a changer :
Citation : M@teo21
Pour pallier à ce problème, stdlib.h nous fournit 2 constantes (des defines) :


Voila, c'est juste le "à" qui n'a rien à faire ici, puisque on ne dit pas pallier à qqchose, mais pallier qqchose ;)


+++

God bless Feisty Fawn
 
Hors ligne NarTy # Posté le 19/03/2006 à 20:44:31 - Ce membre a mis la note : 19
Je t'aime amèrement !
Avatar
Groupe : Bannis
PAS MAL VRAIMENT PAS MAL !!!
Non en fait c'est parfait !

Bravo !

Venez jouer
Mon blog => JuLeS’ ProGs
Programmeur xHTML/CSS,PHP/SQL,Javascript,C à votre service

 
Hors ligne Lanier # Posté le 19/03/2006 à 20:58:43 - Ce membre a mis la note : 19
Avatar
Groupe : Membres
Ca cartonne trop :p :p :p !
Par contre mon code pour le dégradé est assez différent mais il donne le même résultat. Je vais poser la question sur le forum voir si il y a des trucs pas clean. En tout cas il marche donc j'ai bien tout compris ;) !
Encore une fois GG M@teo!

Lanier
 
Hors ligne Portnaouak # Posté le 19/03/2006 à 22:07:33 - Ce membre n'a pas mis de note
my ability is joke
Avatar
Groupe : Membres
Hum assez sympa ce tutorial, bien plus sympathique que les tutoriaux sdl que j'ai pu lire au cours de ma carriere de programmeur amateur(quelques années déja^^).

Il y a quand même un truc qui me chifonne:
ton truc avec les event pour éviter que le programme se finisse. Moi je n'aurait pas fait ça. J'aurai simplement fait: SDL_Delay() qui me parait plus aproprié dans ce chapitre. Mais c'est ton choix et je le respecte.

Image utilisateur
 
Hors ligne Freeben666 # Posté le 20/03/2006 à 00:21:43 - Ce membre a mis la note : 20
Groupe : Membres
J'ai adoré!!!! (ça change de la console :p )

Le top c'est que c'est super bien expliqué, j'ai tout de suite comprit (mais je pense que je vais avoir un peut de mal à me souvenir du nom de toutes les fcts :-° )

Un petit 20, comme moi au QCM ^^
Hors ligne nax # Posté le 20/03/2006 à 07:59:07 - Ce membre a mis la note : 19
Avatar
Groupe : Membres
Toujours des tutos aussi bon ;)
 
Hors ligne Blade-974 # Posté le 20/03/2006 à 17:25:49 - Ce membre n'a pas mis de note
J'adore les sushis
Groupe : Membres
Salut! La encore, je ne noterai pas le tuto :/. J'ai juste un petit probleme, c'est que les couleurs ne s'affichent pas chez moi :/. Du moins, pas avec les exemples donnés dans le tuto :'( . En revanche avec d'autres codes, ca marche, je voudrais donc savoir si qqun peut me dire pourquoi il y a pas de couleurs

thx +++

God bless Feisty Fawn
 
Hors ligne Seb087 # Posté le 20/03/2006 à 18:42:46 - Ce membre n'a pas mis de note
Avatar
Groupe : Membres
Pas mal, j'ai trouvé qu'on a un peu de mal à accrocher au début mais rien de grave...

Bravo à toute l'équipe (qu'on a trop tendance à oublier ;) )

J'aurais aimé avoir davantage d'excercies et des plus variés, je vais essayer de m'en inventer moi même :) .
Hors ligne mleg # Posté le 20/03/2006 à 19:16:06 - Ce membre n'a pas mis de note
None
Groupe : Membres
Yop.

Encore une fois, très bon. Le seul petit bémol c'est que je trouve que y a beaucoup de fonctions à retenir. Sur la fin je commençais à saturer un peu. :-°

M'enfin bon je pense qu'en relisant le tout ça finira par rentrer. ;)

Et en pratiquant aussi bien sûr, le dégradé c'est une bonne idée.

Même si bon, ajouter une variable j et la décrémeter pour inverser c'est pas trop dur. ^^

Voilà sinon c'est très bien fait, vu la difficulté de la chose.

++
 
Hors ligne Dark-Side # Posté le 20/03/2006 à 20:16:04 - Ce membre a mis la note : 20
($ ) + 10.
Avatar
Groupe : Membres
très bon tuto bien expliqué ... encore une fois :)
Bravo m@teo !

Image utilisateur

Envie de vous mettre au lojban ?
« mi nelci lonu do dikni tcidu le nuzba pe la'o fy. BHM fy. »
 
Hors ligne tisbardo # Posté le 21/03/2006 à 19:27:32 - Ce membre a mis la note : 20
Avatar
Groupe : Membres
miamiam des vrai fenêtres :D

je met 40/20 :p ... a non on peut pas c'est vrai :euh: ... bon ba 20/20
Hors ligne -Ne0- # Posté le 22/03/2006 à 11:09:11 - Ce membre a mis la note : 19
Avatar
Groupe : Membres
Très bon tuto (pour ne pas dire excellent ;) )

juste une remarque, pour la fonction pause :
on peut "l'abréger" comme ceci, je trouve ca plus clair et moins lourd ^^
Code : C
void pause()
{
    SDL_Event event;
    do
        SDL_WaitEvent(&event);
    while(event.type != SDL_QUIT);
}


19,75 / 20 - Excellent travail, continue ainsi :p

- Ne0 -

Tuto sur le JavaScript
--> c'est par ici !
 
Hors ligne Rafael861 # Posté le 22/03/2006 à 15:23:03 - Ce membre n'a pas mis de note
Groupe : Membres
Très bon tuto! Puis je trouve que la question demandant l'ordre des fonctons est un bonne idée pour se rappeler des principales!

Merci! ;)
Hors ligne Gotrunks # Posté le 22/03/2006 à 16:03:41 - Ce membre n'a pas mis de note
Groupe : Membres
Très bon tuto , clair , bien expliqué ;) !
Hors ligne remram44 # Posté le 22/03/2006 à 18:44:05 - Ce membre n'a pas mis de note
§ KCOMDL §
Avatar
Groupe : Membres
Eeeeeik !
Horreur !
Citation : M@teo21
Pour faire ça, on va devoir créer 256 surfaces (256 lignes)

Créer des surfaces dans la mémoire vidéo pour des lignes de couleur unie ? Ca va pas ?
Code : C
#include <SDL/SDL.h>

int main(int argc,char** argv)
{
    int i=0;
    SDL_Surface* screen;
    SDL_Rect rect = {0,0,256,1};
    SDL_Event event;

    SDL_Init(SDL_INIT_VIDEO);
    screen = SDL_SetVideoMode(256,256,SDL_HWSURFACE|SDL_DOUBLEBUF);

    while(i<256)
    {
        SDL_FillRect(screen,&rect,SDL_MapRGB(screen->format,i,i,i));
        i++;
        rect.y++;
    }

    do
    {
        SDL_Flip(screen);
        SDL_WaitForEvent(&event);
    }
    while(event.type!=SDL_QUIT);

    SDL_FreeSurface(screen);
    SDL_Quit();

    return 0;
}


Compare les performances et tu comprendras...

---:--: g33k |ns|d3 :--:---
WikiNyug
 
Hors ligne Shurtugal # Posté le 25/03/2006 à 10:25:28 - Ce membre a mis la note : 20
Groupe : Membres
Hier, j'ai rien compris, comme quoi une bonne nuit de sommeil fait du bien !
Me voilà levé et j'ai réussi tout les exercices ^^ .

Très bon tutorial ! Bien qu'il y a un paquet de fonctions à retenir, il faut bien les connaitre !
 
Hors ligne Seb087 # Posté le 25/03/2006 à 13:48:07 - Ce membre n'a pas mis de note
Avatar
Groupe : Membres
Code : C
void pause()
{
    int continuer = 1;
    SDL_Event event;

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


Il ne faudrait pas rajouter un break; à la fin du "case" ??
Hors ligne Ze Killer-Whale # Posté le 01/04/2006 à 15:06:50 - Ce membre a mis la note : 18
Bisounours Powaa!!
Avatar
Groupe : Membres
remram44, je ne connais pas bien la SDL, c'est d'ailleurs pour celà que je suis les cours, mais en étudiant ton code je me suis aussi rendu compte que c'était stupide de créer 256 surfaces plus un rectangle alors qu'un seul rectangle suffisait...

Perso ne sachant pas qu'on pouvait faire ça avec les rectangles directs j'avais quand même pensé à essayer un truc qui est de ne créer qu'une seule surface et de faire juste une mise à jour des coordonnées avant de blitter, ça marchait aussi mais effectivement ton code est encore mieux...

Juste quelques fautes que j'ai remarqué à la compilation: SDL_WaitEvent(&event); et non pas SDL_WaitForEvent(&event); et puis il manquait un argument à SDL_SetVideoMode puisque tu n'as pas mis de profondeur de couleur, mais je suppose que c'est parceque tu l'as écrit vite...

En même temps je pense que si M@téo nous a fait faire ça c'est pour maitriser tout de suite le Blit pour passer aux images... ;)

EDIT: Seb087: Il faut un break; pour pas que les instructions d'après le case: soit lues, mais vu que c'est le dernier case: du switch de toute façon il n'y a plus rien après alors le programme sort de la boucle quand même après avoir fait ce qu'il devait faire (affecter la valeur 0 à continuer).

Je suis né la 593299834e seconde de l'ère Unix, si c'est pas épatant?
 
Hors ligne Blade-974 # Posté le 11/04/2006 à 19:16:25 - Ce membre n'a pas mis de note
J'adore les sushis
Groupe : Membres
Jvoudrais juste rajouter que SDL_Flip(ecran) équivaut dans notre cas à SDL_UpdateRect(ecran, 0, 0, 0, 0)

Je sais, tout le monde s'en fout mais vu que jle sais jvais le dire, ca fera de mal à personne :p .

PS : pour SDL_UpdateRect, c possible que j'ai oublié un 0

God bless Feisty Fawn
 
Hors ligne manene # Posté le 16/04/2006 à 21:26:28 - Ce membre n'a pas mis de note
Mens sana in corpore sano !
Avatar
Groupe : Membres
J'ai une question...

Pour les coordonnées... Ce ne serait pas plutôt :

0;0 (LargeurÉcran - 1);0
0;(HauteurÉcran - 1) (LargeurÉcran - 1);(HauteurÉcran - 1)


Non ?
Car, comme on commence à zéro, on doit enlever 1 à la taille !
Ex :
- largeur : 640 ;
- hauter : 480 ;

ça donnerait donc :

0;0 639;0
0;479 639;479



Vous n'êtes pas d'accord ?

De plus, j'ai vérifier sur Paint les dimensions ! ;)

Voilà ! @+

Cordialement,
manene.
 
Hors ligne Binabik # Posté le 19/04/2006 à 20:36:58 - Ce membre a mis la note : 19
Frappadingue
Avatar
Groupe : Membres
19 j'ai tout capter donc le prof doit pas être trop mauvais ^^

juste je suis comme les autres je me demande s'il est necessaire de faire un tableau de 256 pour le degradé alors que une surface suffit oO

Image utilisateur
 
Hors ligne 2020 # Posté le 25/05/2006 à 22:03:30 - Ce membre a mis la note : 17
Groupe : Membres
:D Bonjour je trouve ce tutorial intéressent , mais j’ai un problème au niveau de la création des fenêtres. J’ai fait copier/coller et l’application ne c’est pas lancée, pouvez vous s’il vous plait m’envoyer les corrections complètes, s’il vous plait, merci d’avance. Sincères Salutations . M@teo21 :D
Hors ligne Kant # Posté le 05/06/2006 à 03:18:15 - Ce membre n'a pas mis de note
Avatar
Groupe : Membres
Salut, merveilleux chapitre...
Juste, il y a pas d'explication pour le:

ecran->format

???

"A ne pas oublier, que passées les bornes, il y a la limite" J. Lacan
 
Hors ligne kidlito # Posté le 01/07/2006 à 03:35:20 - Ce membre n'a pas mis de note
Mac User :)
Avatar
Groupe : Membres
Attention, sous mac: ne mettez surtout pas d'accent dans le titre de votre fenêtre sinon ca plante


Juste pour dire que je me suis arraché les cheveux pendant 1 semaine avec ça lol

iMac G5 1,8Ghz, 2go de RAM, 500go de DD
KDE sur Mac!
 
Hors ligne redspikers # Posté le 06/07/2006 à 10:09:45 - Ce membre a mis la note : 20
Goa listener
Avatar
Groupe : Membres
Salut tout le monde
que dire sur ce tuto a part qu'il est parfait et très bien expliqué ! :lol:

J'ai remarqué que si on écrit :
SDL_Flip(ecran);
dans la boucle qui parcoure le tableau,
on voit le dégradé qui s'affiche progressivement.
Moi j'ai trouvé sa plus jolie, voila pour ceux que ca intéresse.
^^
 
Hors ligne ThArGos # Posté le 31/08/2006 à 11:41:34 - Ce membre a mis la note : 18
Groupe : Membres
Très bon tutoriel. Merci pour le temps que vous avez passé à le rédiger.
J'ai noté quelques petites coquilles au passage:
Dans la section Votre première surface : l'écran
Citation : tutoriel
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // On tente d'ouvrir une fenêtre
if (ecran == NULL) // Si l'ouverture a échoué, on écrit l'erreur et on arrête
{
fprintf(stderr, "Impossible de charger le mode vidéo : %s\nq", SDL_GetError());
exit(EXIT_FAILURE);
}

je ne sais pas ce qu'il fait là lui =).

Ensuite dans la section Centrer la surface à l'écran
Citation : tutoriel
On sait afficher la surface en haut à gauche.
Il serait aussi facile de la mettre en bas à droite. Les coordonnées seraient (640 - 206, 480 - 112), car il faut retrancher la taille de notre rectangle pour qu'il s'affiche entièrement.


Vous avez pris les nombres correspondants aux couleurs et non à la taille de la fenêtre. Par conséquent le rectangle ne serait pas en bas à droite. Les bons nombres étant : 640 - 220, 480 - 180

Enfin j'insisterais fortement sur le fait qu'on dise une bibliothèque et non une librairie.
La traduction de "library" en anglais est bibliothèque. C'est un faux ami.

L'idée des exercices à la fin est excellente.
Hors ligne Slowrage # Posté le 06/09/2006 à 02:12:09 - Ce membre a mis la note : 19
Groupe : Membres
C'est un bon tutorial :)
Je débute en matière d'utilisation de bibliothèque et donc en SDL et j'ai bien compris grâce à ce tuto.

Je pense que la solution de ramram devrait être intégré au tuto car elle semble quand même plus propre.

J'ai aussi une petite remarque à faire, pour centrer le rectangle à l'écran il serait plus propre de récupérer les dimensions à l'aide de la structure :

Code : C
    position.x = (ecran->w/2) - (rectangle->w/2);
    position.y = (ecran->h/2) - (rectangle->h/2);
Hors ligne flioux # Posté le 01/10/2006 à 19:09:21 - Ce membre a mis la note : 20
IUTiste
Avatar
Groupe : Membres
super, enfin s'en ai terminé avec la console! oufff

note 20/20

Bientôt :
iutdijon.eu
iutinfo.eu
 
Hors ligne cyber_al # Posté le 10/10/2006 à 12:28:28 - Ce membre n'a pas mis de note
Groupe : Membres
coucou

bien pour moi la console c'est pas fini ,explications :

la fenêtre s'ouvre bien ,mais horreur ! la console aussi en même temps
et lorsque je ferme la console ,c'est les 2 qui se ferment
(PS : la fenêtre console porte le nom de : C:\WINDOWS\system32\cmd.exe)
de quoi ça viendrait svp ?

sinon a part ça la note sera de 19/20 pour le moment (une prof de dessin industriel m'avait fait ce coup pretextant que rien ne merite un 20 o_O )
Hors ligne tTz # Posté le 31/12/2006 à 19:09:48 - Ce membre n'a pas mis de note
Groupe : Membres
EXELLENT ! 20/20 !

voici un code super rigolo et bizarre a la fois (Je n ai pas fais qu un double degradé ;) et en utilisant qu une seule boucle for :p )

Code : C

#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <math.h>
#define wow 128

void pause();

int main(int argc, char *argv[])
{
    SDL_Surface *ecran = NULL;
    SDL_Rect position;
    SDL_Surface *couleurs[wow] = {NULL};
    long i = 0;

    SDL_Init(SDL_INIT_VIDEO);

    ecran = SDL_SetVideoMode(640, wow, 32, SDL_HWSURFACE);
    for (i = 0 ; i<=wow; i++)
    {
    couleurs[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1, 32, 0, 0, 0, 0);
    }

    SDL_WM_SetCaption("Super C0uleurs !", NULL);

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


    for (i = 0; i<wow; i++)
    {
    position.x = 0;
    position.y = i+1;
    SDL_FillRect(couleurs[i], NULL, SDL_MapRGB(ecran->format, 255%2, 2*i, i*i-1));
    SDL_BlitSurface(couleurs[i], NULL, ecran, &position);
    }


    SDL_Flip(ecran);

    pause();
for (i=0;i<=wow;i++)
{
    SDL_FreeSurface(couleurs[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;
        }
    }
}


REMARQUE : Lorsqu on retire le modulo sur la couleur rouge ... Les couleurs changent completement !!

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 74 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.2889s (0.2775s)