dimanche 25 octobre 2009

Jeu d'echec en Java ...


Plusieurs mois déjà que je n'ai plus posté sur mon blog, la raison est toute simple ; J'ai carrément changé de cap et ma vie à pris une autre tournure , j'avais postés mes tout derniers articles en étant Ingénieur développeur dans une société de service en informatique , sauf que la , je me présente sous une autre forme : Elève ingénieur en Architecture des systèmes d'information à l'Institut Nationale Des Sciences Appliquées à Rouen. Eeh ouii , la nécessité d'avoir une formation dans le domaine, de m'améliorer techniquement ,d'atteindre une certaine aisance dans la conception et le codage ... tout ces paramètres m'ont poussé à aller tenter cette expérience ... la , j'en suis à mon tout deuxième mois et je vous avoue que je suis plus que satisfait :)

j'essayerai en tout cas de vous donner plus de détails lors de mes prochains posts , Dès mon arrivé et aussitôt installé , je me suis de suite dirigé vers mes enseignants , mes camarades de promo pour prendre connaissance des projets qui se faisaient au département , des différentes technologies qu'on enseignait , et aussi ce qui m'importait le plus , les projets perso ,car on a l'habitude de voir chez certains passionnés de l'informatique , en plus de leurs petit boulot de développeur ou de leur formation , qu'il ont l'habitude de bosser pendant leur temps libre sur de petit projet (ça peut aller des jeux jusqu'aux grosses applications qui leurs facilitent leurs quotidiens) Je vous rassure , je n'échappe nullement à cette règle =D ! ,

En faisant mes premiers pas dans ce nouveau monde linuxien, la ou toutes les exceptions ne peuvent être que sous forme « CodeOverdoseException » et ou un multithreading d'action et d'initiative s'impose ^^… je me rends de plus en plus compte de l'importance et surtout du plaisir qu'un bon projet de développement peu aporter.

Je reviens donc sur ce blog avec de nouvelles idées, je viens de me lancer depuis déjà presque deux semaines dans un petit projet qui me tenais à cœur, la conception et le codage complet d'un jeu d'échec :P ! Mon objectif ne se résume pas simplement au fait que mon jeu fonctionne , plus que ca , je vise surtout à élaborer un codage assez optimisé, et à bien architecturé mon jeu (packages , codage en couches ..etc.)


Avant de commencer je tiens à répondre aux quelques mails que j'ai reçu me demandant la suite des tutoriels sur la fameuse bataille navale que j'avais codé … je vous signal qu'un petit souci technique :( formatage d'une partie de mon disque m'a fait perdre , une petite partie des fonction que j'avais coder coté serveur , aussitôt ces tutoriels terminé, je reviendrai à la charge pour poursuivre cette première série sur la bataille navale ;)

Autre chose ,actuellement, je travaille toujours sur ce jeu d'échec , pour l'instant j'ai réussi en deux semaines , à définir mon environnement de jeu , l'évolution de chaque pièce indépendamment des autres sur cet environnement et je m'apprête à présent , à implémenter mes fonctions d'interaction sur un package conçu spécialement pour ça « VirtualGame Package»

La réalisation de ce jeu passe forcement par plusieurs étapes ;

- conception d'une plateforme de jeu locale fonctionnant en mode deux joueurs
- codage et déploiement de modules ( logique suivie : couche graphique , couche métier et couche interaction)
- Elaborer des algorithmes d'IA afin d'implémenter des modules AP (AutonomousPlayer)
- Tests de validation et mise en ligne.

Ce projet peut donc être deviser en deux parties , Je commencerai tout d'abord par la toute première partie ou on devra concevoir une plateforme de jeu à deux joueurs , la deuxième partie sera beaucoup plus pointu … nous y reviendrons en temps voulu;

Pour l'instant place au code , je ne vais pas commencer à vous gaver par des diagrammes UML , de schéma que vous aller fixé pendant des heures afin d'y comprendre un minimum , je vais plutôt vous proposer une conception assez soft ,suivant le fameux principe KISS (Keep it Simple ,Stupid) …

On a quand même bien philosophé sur la question , place maintenant au code :P …
l'implémentation des différentes fonctionnalités (classes , méthodes) s'est faite en respectant le principe du développement en couche , en réalité , tout a été réparti en package avec pour chaque couche une série de package , je vous propose donc l'arborescence actuelle du jeu :

couche graphique :

package DisplayingToolP
package Display

couche métier

package EventHandlers
package Backend
package VirtualGame

couche interaction (en cours de réalisation)


Contenue en classes et méthodes de chaque package :

graphique-DisplayingToolP
- DisplayingTools Class contenant une fonction GridBagTransformer :
gere dynamiquement l'emplacement des éléments sur ma
GridBagLayout
- menuBar Class: contenant une seul fonction qui génère l'arborescence du
menu
- DisplayingTable Class : contient des fonctions d'initialisation :
- initialisation (initialise chaque élément de jeu)
- ElémentsInitialisation , de porté plus général que la précédente , elle
initialise tout les éléments de jeu
- DisplayTable (constructeur) : création des éléments graphiques
graphique-Display
ChessFrame Class : qui se charge de la visualisation de la table de jeu.
métier-EventHandlers
ChessterEvent Class : gère les événements émanent des différents éléments graphique du jeu.
metier-Backend
Plusieurs classe définissant chaque élément de jeu : pion,tour,fou,cheval,roi et reine , on y trouve aussi l'interface pièce implémenté par chaque élément.
metier-VirtualGame
BackendGame Class : se charge d'initialiser sur une grille tout les éléments de jeu,
objets pièces s'initialisent suivant la nature de l'objet (pion , tour , fou...etc.).

Voilà , je vais m'arrêter la pour ce premier tutoriel , j'espère que cela vous a au moins permis de vs imprégner assez facilement du raisonnement suivie , … je vous invite dés maintenant à suivre le prochain tutoriel , Ah ,oui ,j'ai oublié de vous dire un truc , n'hésitez surtout pas à laisser vos coms , vos suggestions , parce que ce jeu on va le faire à plusieurs, je vous propose cette série de tutos alors que je travaille toujours dessus , donc , je résume , prochain tuto avec pour thème : package graphique :code et test … :P

Aucun commentaire:

Enregistrer un commentaire