Pr - PowerPoint PPT Presentation

1 / 32
About This Presentation
Title:

Pr

Description:

Title: Pr sentation PowerPoint Author: LELORE Last modified by: Titi Created Date: 6/3/2005 3:45:31 PM Document presentation format: Affichage l' cran (4:3) – PowerPoint PPT presentation

Number of Views:34
Avg rating:3.0/5.0
Slides: 33
Provided by: Lel60
Category:
Tags:

less

Transcript and Presenter's Notes

Title: Pr


1
(No Transcript)
2
Contenu de la présentation
  1. Présentation de SDL.
  2. Bomberman.
  3. Limites.

3
Présentation de SDL
  • Une approche par  surface 
  • Lécran ainsi que les images chargées sont
    considérées comme des surfaces.
  • SDL_Surface type contenant toutes les
    informations sur une surface

4
Présentation de SDL
  • Une approche par  surface 
  • Initialisation dune surface
  • SDL_SetVideoMode(largeur,hauteur,BitsParPixel,type
    )
  • BitsParPixel permet de spécifier la précision des
    couleurs
  • (16-gt65536 couleurs)
  • Type peut prendre les valeurs
  • SDL_HWSURFACE Surface stockée dans la mémoire
    de la carte vidéo
  • -gtcontraire SDL_ SWSURFACE
  • SDL_DOUBLEBUF Active le double buffering (évite
    les scintillements)
  • SDL_FULLSCREEN  Fenêtre en plein écran
  • SDL_OPENGL  Permet de faire un lien avec OpenGL
  • SDL_RESIZABLE Un évènement SDL_VIDEORESIZE est
    envoyé si la taille change

5
Présentation de SDL
  • Une approche par  surface 
  • Initialisation dune surface
  • SDL_CreateRGBSurface (type,largeur,hauteur,BitsPar
    Pixel,R,V,B,A)
  • Type peut ici prendre les valeurs
  • SDL_HWSURFACE Surface stockée dans la mémoire
    de la carte vidéo
  • -gtcontraire SDL_ SWSURFACE
  • SDL_SRCCOLORKEY permet de rendre une couleur
    transparente
  • SDL_SRCALPHA permet dutiliser le canal alpha
    (permet des effets de transparence)
  • RVBA est le masque de couleur du fond (alpha
    étant la transparence 0 opaque, FF invisible)

6
Présentation de SDL
  • Une approche par  surface 
  • Initialisation dune surface à partir dune image
  • SDL_LoadBMP(chemin)
  • chemin est une chaîne de caractères indiquant le
    fichier à charger.
  • Il est cependant plus simple dutiliser une
    librairie annexe  SDL_Image
  • Cette librairie permet de charger des fichiers
  • BMP, PNM, XPM, LBM, PCX, GIF, JPEG, PNG et TGA
  • grâce à la fonction
  • IMG_Load(chemin)
  • chemin est une chaîne de caractères indiquant le
    fichier à charger.
  • SDL_Image se charge de trouver le type du fichier

7
Présentation de SDL
  • Manipulation des surfaces
  • Copie entre deux surfaces
  • SDL_BlitSurface(Surf1,rect1,Surf2,rect2)
  • Surf1 est la surface dorigine.
  • Rect1 est le rectangle de sélection, de type
    SDL_Rect
  • x et y représentent les coordonnées en haut à
    gauche du rectangle
  • h et w représentent la hauteur et la largeur du
    rectangle à sélectionner
  • Surf2 est la surface de destination.
  • Rect2 est le rectangle de destination. Seul x et
    y sont pris en compte la largeur sera celle
    spécifié avec Rect1.
  • Si Rect1 est à NULL, toute limage est copiée
  • Si Rect2 est à NULL, limage copiée se place en
    haut à gauche

8
Présentation de SDL
  • Gestion des entrées sorties
  • Récupérer les évènements claviers
  • SDL_PollEvent(evenement)
  • Evenement est de type SDL_Event.
  • SDL_Event est une structure rassemblant les
    évènements
  • Clavier
  • SDL_GetKeyState permet de récupérer un tableau de
    256 cases booléenne
  • Cest une photo du clavier si une touche est
    pressée, la case correspondante est à vrai
    constantes
  • SDLK_ESCAPE, SDLK_F1, SDLK_w
  • Il est par ailleurs possible dutiliser UNICODE
    grâce à SDL_EnableUNICODE(int enable)

9
Présentation de SDL
  • Gestion des entrées sorties
  • Récupérer les évènements claviers
  • SDL_PollEvent(evenement)
  • Evenement est de type SDL_Event.
  • SDL_Event est une structure rassemblant les
    évènements
  • 1. Clavier.
  • Souris
  • SDL_GetMouseState(x,y) permet davoir la position
    de la souris
  • SDL_BUTTON(x) permet de savoir si le bouton x est
    appuyé.
  • Joystick
  • SDL_JoystickOpen(0) permet dinitialiser le
    joystick 0.
  • SDL_JoystickClose(0) libère le joystick 0.

10
Présentation de SDL
  • Gestion du son
  • SDL permet de gérer le son, mais de manière peu
    évolué.
  • Après quelques recherches sur Internet, la
    librairie FMOD mest apparu comme très
    performante.
  • Elle permet dutiliser des effets DirectX, du son
    3D, denregistrer en FULL-DUPLEX
  • De plus, elle permet de lire des fichiers de type
  • Midi, wav, mp3, ogg, raw, cd

11
Présentation de FMOD
  • Gestion du son FMOD
  • Initialisation de FMOD
  • FSOUND_Init(freq,nbcanaux,flags)
  • Freq représente la fréquence déchantillonnage
    (44100 par ex)
  • Nbcanaux représente le nombres de canaux (ie le
    nombre de sons Max pouvant être joué
    simultanément)
  • Flags représente les différents paramètres
    dinitialisation

12
Présentation de FMOD
  • Gestion du son FMOD
  • Chargement dune musique
  • FSOUND_Stream_Open(chemin,flags,début,longueur)
  • chemin est une chaîne de caractères indiquant le
    fichier à charger.
  • flags a en général pour valeur FSOUND_LOOP
  • début est facultatif, indique loffset de debut
    du fichier
  • longueur est facultatif, indique la longueur du
    fichier

13
Présentation de FMOD
  • Gestion du son FMOD
  • Chargement dun son
  • FSOUND_Sample_Load(index,chemin,flags,début,longue
    ur)
  • Index défini le canal a utiliser
  • (FSOUND_FREE permet de laisser FMOD sen
    charger).
  • chemin est une chaîne de caractères indiquant le
    fichier à charger.
  • flags a en général pour valeur FSOUND_NORMAL
  • début est facultatif, indique loffset de début
    du fichier
  • longueur est facultatif, indique la longueur du
    fichier

14
Présentation de FMOD
  • Gestion du son FMOD
  • Jouer un son
  • FSOUND_PlaySound(index,identifiant)
  • Index défini le canal a utiliser
  • (FSOUND_FREE permet de laisser FMOD sen
    charger).
  • Identifiant est lid du son précédemment chargé
    avec FSOUND_Sample_Load

15
Exemple dutilisation Bomberman
16
Bomberman
17
Bomberman
  • Initialisation de tous les composants.
  • SDL
  • SDL_Init( SDL_INIT_VIDEOSDL_INIT_TIMER )
  • Pour démarrer SDL. Le timer permettra de régler
    la vitesse daffichage, comme nous verrons par la
    suite.
  • atexit(SDL_Quit)
  • Permet de dire à SDL de quitter proprement.
  • SDL_EnableUNICODE(1) parle de lui même.
  • SDL_ShowCursor(false) rend la souris invisible.
  • SDL_SetVideoMode(800,600,32,
  • SDL_HWSURFACE SDL_DOUBLEBUFSDL_FULLSCREEN)
  • Crée une fenêtre plein écran de 80060032, en
    mémoire vidéo, double buffer.

18
Bomberman
  • Initialisation de tous les composants.
  • FMOD
  • FSOUND_Init(44100,4,0)
  • Pour initialiser la fréquence déchantillonnage à
    44100 échantillons/sec, avec 4 canaux
    indépendants et sans gestion particulière (3D,
    directX)

19
Bomberman
  • Initialisation de tous les composants.
  • Objets du jeu
  • Par exemple bombe (mais valable pour tous les
    autres objets mur, joueurs, feu)
  • Pour des raisons doptimisation, il est
    préférable de charger les textures (ou image) une
    fois pour toute. Donc, les textures sont des
    membres static des classes.

20
Bomberman
  • Initialisation de tous les composants.
  • BOMBE
  • Bombeinit()
  • Charge les animations de la bombe
  • SDL_SetColorKey(bombe0,SDL_SRCCOLORKEYSDL_RLEAC
    CEL,noir)
  • Permet de spécifier une couleur transparente.
  • SDL_RLEACCEL permet daccélérer le rendu des
    image transparentes
  • noir est obtenu grâce a la fonction
    SDL_MapRGB(attend0-gtformat,0,0,0) qui renvoie
    la couleur associé aux trois derniers paramètres.

21
Bomberman
  • Initialisation de tous les composants.
  • Le plateau
  • Il est composé dun tableau à 2 dimensions
  • Ce sont des pointeurs sur des objets

Vide
Vide
Vide
1,1
1,2
1,3
Feu
Mur
Vide
2,1
2,2
2,3
22
Bomberman
  • Initialisation de tous les composants.
  • Le plateau
  • Par ailleurs, un autre tableau recense toutes les
    modifications du plateau (une bombe de posée, un
    mur qui explose)
  • A départ, toutes les cases sont misent à 1
    (modification), pour que tout le plateau soit
    affiché.

23
Bomberman
  • Boucle daffichage
  • On efface les joueurs.
  • En effet, lorsquun joueur se déplace, il faut
    leffacer en réaffichant le décor qui se trouve
    sous le joueur .Sinon, une traînée apparaît

24
Bomberman
  • Boucle daffichage
  • On affiche les explosions
  • On parcours le tableau des modifications, et si
    une cases est à 2 alors cest quelle explose.
  • On interroge lobjet pour savoir où et comment
    les flammes partent.
  • Teste les collisions avec les objets du plateau
    et ainsi détermine quels objets sont détruits par
    lexplosion.
  • Affiche les flammes de lexplosion.

25
Bomberman
  • Boucle daffichage
  • On affiche les objets du plateau qui ont étés
  • modifiés
  • Parcours le tableau de modifs
  • Lobjet na pas été modifié, on ne laffiche pas.
  • Lobjet explose, on affiche son explosion.
  • Lobjet doit être réactualisé, on laffiche.
  • Gestion de la pseudo-3D

26
Bomberman
  • Boucle daffichage
  • On affiche les joueurs
  • Le joueur est contrôlé pour un humain
  • Calcul de la direction demandé
  • Collision
  • Modification de la direction en calculant le
    point de contact sur le carré de collision de
    lobjet et et en modifiant en conséquence le
    vecteur déplacement.
  • affichage du joueur
  • Calcul de limage à afficher en fonction de la
    direction du vecteur déplacement ainsi que de son
    module (et de limage précédente)

27
Bomberman
  • Boucle daffichage
  • On affiche les joueurs
  • Le joueur est contrôlé par lordinateur
  • Calcul du but (par ordre de priorités)
  • Y a til un danger?
  • Y a til un joueur relativement proche?
  • Y a til un bonus relativement proche?
  • Calcul du chemin (par ordre de calcul)
  • Il y a un danger
  • Calcul du chemin le plus cour vers une case sure,
    sans se soucier de passer par des cases
    dangereuses
  • Ne fait pas les autres calculs!
  • Recherche le chemin le mois dangereux (sans
    passer a coté des bombes)
  • Recherche du plus cour chemin.
  • Puis même schéma que précédemment
  • Calcul des collisions et gestion de la pseudo 3D

28
Bomberman
  • Boucle daffichage
  • Calcul de la vitesse dexécution
  • Si le temps passé a réactualiser la scène est
    supérieur à 30 ms, on attend le temps restant.
    Sinon, on redessine une nouvelle scène.
  • Rendu possible grâce à SDL_INIT_TIMER et à la
    fonction SDL_GetTicks() qui renvoie le nombre de
    ms passées depuis le lancement de SDL.

29
Limites de SDL
  • La principale limite lage.
  • En effet, cette bibliothèque développé il y a
    fort longtemps est en réalité basé sur DirectX5
    (pour Windows), ce qui implique quelques
    limitations. En effet, de nombreuse fonction
    (comme la transparence) sont gérées en software,
    sans tenir compte doptimisations matérielles

30
Limites de SDL
  • La seconde limite
  • Pas de manipulation avancé.
  • La bibliothèque ninclus pas de primitives
    évolué, comme zoomer sur une partie dimage, ou
    faire faire une rotation à une image.

31
Limites de SDL
  • La bibliothèque nautomatise pas lutilisation de
    plusieurs surfaces sur une même surface.
  • Cest à dire que cest au programmeur
    denregistrer ce qui se trouve sous la surface
    pour pouvoir effacer lobjet par la suite

masque
32
Fin de la présentation
  • De très bon tutoriaux se trouvent sur le site
  • http//www.programmationworld.com/site/
Write a Comment
User Comments (0)
About PowerShow.com