JAVA SPRITE ...

"l'api qui petille"

... ou l'implantation d'une api de jeu video

pourquoi en java ?
Plugins type 1 : plusieurs types d'images

  • Plugins type 2 : plusieurs types de canvas

    Au debut (5 a 10 secondes) l'animation sera lente, puis elle est tres fluide des que tout le vecteur est charge.

    C'est donc le canvas qui va diriger le sprite , cela tombe bien, c'est lui qui connait toutes les donnees : le bsp (eventuellement) , la position des murs (soit la taille de l'image de fond), et la position des eventuels ennemis.

    Que se passe t'il? Et bien, la marmotte... nan, le canvas "intelligent" met le sprite ( mais ca c'est parce qu'on ne lui en a donne qu'un) et le fond (pareil) en sont centre, et apres avoir verifie l'existence du sprite, il le deplace. Il calcule toujours la position suivante, comme ca en cas de collision, on a le temps de voir venir.

    Il n'envoie pas la position, il envoie les possibilites de position
    -> dans le decor.
    -> dans l'ennemi.
    -> dans la zone authorisee.
    Et en fonction de la collision future, et de son type, il reoriente l'objet.

  • la GUI qui va avec l'API
    Pour aider à implementer et utiliser cette API, une GUI, truffee d'Observers et d'Observables, a été créée :
    bien sur, sauf si on depasse la taille de l'ecran, toute image est utilisable.


    !! SCREENSHOOTS !!

  • Mode d'emploi de la GUI
    1. allez chercher prog.tgz dans le repertoire download
    2. decompactez
    3. allez dans le repertoire Programme
    4. tapez make
    5. tapez ./go
    6. choisissez un canvas
    7. changez le fond
    8. chargez un sprite
    9. pressez le bouton play
    10. pressez le bouton pause
    11. pressez le bouton pause encore
    12. pressez le bouton stop
    13. pressez le bouton vert du haut pour charger un nouveau canvas.
    14. pressez le bouton jaune du haut pour effecer l'image de l'animation courante.
    15. chargez une sequence...
    16. ...etc...
    Ne vous inquieter pas, il y a des Tooltips !
    Et si c'est trop angoissant, renommez le repertoire Images/Icones ...
    ... les noms des boutons apparaitrons a la place des images



  • Ce que j'aurais pu faire...et que je n'ai pas fait
    Il faudrait encore 2 ou 3 trucs (qu'on devrait pouvoir faire en plugins), comme :
    la verification des types d'images loadees par securite (en cas de gif anime pour ne pas essayer d'extraire des frames qui n'existent pas)
  • l'implementation de bsp autres que rectangulaires avec des affine Transform sur les boundings internes des rectangles.
  • des canvas avec plusieurs ennemis
  • des canvas avec des maps de base
    et une petite chose que j'ai neglige, un reglage de vitesse des sprites ( un frame rate uniforme)
    et une deuxieme petite chose : passer en AWT pour accelerer, parce que je suis vilaine et n'ai pas ecoute mon professeur,pour pouvoir verifier moi-même.
    et une troisieme petite chose, carger des bsps et changer les lignes en rectangles dans les bsp, pour figurer des murs pleins
    en gros, les bounding box sont de petites boites des claustras pour ceux qui
    ont des lettres, qui decoupent une zone, en plusieurs zones plus petites.
    Ils servent a reperer un objet dans l'espace divise, en un temps
    algorithmiquement correct.
    On peut ainsi associer un evenement a chaque valeur de retour d'un parcours de
    bsp, et gerer ainsi les collisions, et les bonus, etc....
    en fait c'est une technique de partitionnement de l'espace.
    
    Ici le type est assez simple, ne gere que des rectangles separes par des
    lignes, mais reste quand meme manipulable sans grande difficulte.
    il constitue l'essentiel des maps, et permet de sauver les maps, parce qu'il
    est facilement serialisable.
    
    un petit dessin simple pour illustrer :
    
    On voit : 1 - que l'ordre d'entree des lignes importe
              2 - que chaque ligne decoupe le rectangle en - au moins - 2 parties
    
    des maps de bases existent : spirale, carre, croix... les autres seront creee
    de maniere aleatoire, c'est plus simple pour la gui....(mea culpa) ...donc
    quand on en tient une belle, vaut mieux la sauver...
    
  • Bref Tutorial : Comment creer un jeu
    Je n'ai malheureusement pas le droit de le reveler....
  • Le jeu
    Je ne l'ai pas fait..
  • Mea culpa
    Je ne l'ai pas essaye sous windows, et je l'ai developpe sous Linux
    download
    javadoc