Forum Clubic

Besoin de conseils pour JAVA

Bonjour,

Je me permets de poser un post supplémentaire car j’aurais besoin de votre aide. Aujourd’hui mon boss ma confié une tâche assez délicate, je m’explique ; le cahier des charges est le suivant : projet de création d’un site internet pour entreprises (dans un premier temps), dans lequel les personnes pourront se divertir avec des jeux et autres moyens d’amusement. Je travail dans une équipe pour ce projet et j’ai la tâche de créer un jeu de carte style UNO ou Huit américain.
Ce jeu doit être programmé en JAVA, seulement le problème est que j’ai très peu programmé en JAVA, (cela remonte déjà à quelques années) j’ai néanmoins les bases en me replongeant dans mes vieux bouquins et je me suis donc un peu baladé sur le net pour obtenir quelques conseils ou autres, mais à ma grande surprise j’ai rien trouvé !!

Je vous demande donc quelques conseils pour pouvoir créer ce jeu en java, je travail sur le logiciel Eclipse que je découvre mais que je commence à maitriser. J’ai déjà fait un scanne des cartes (ce qui me semble indispensable) mais là je bloque complètement. J’aurais aimé obtenir des conseils pour bien débuter, avoir si possible les algorithmes et les étapes clés afin de concevoir ce divertissement qui a de plus besoin d’une intelligence artificielle.

Dans l’attente de vos réponses, je vous souhaite une agréable soirée.

Je te recommande très fortement de recourir à GWT ou un équivalent (librairie de composants graphiques pour applications web “riches”). L’avantage sur Swing / awt + Applets est que ton code source est “transformé” en Javascript, ce qui rend le jeu bcp plus accessible.

ongwt.googlecode.com…

Javascript n’est pas accessible et si c’est pour l’entreprise, y a de fortes chances que l’application cible soit IE6… donc des limites JS.
Pour ce que tu veux faire, tu peux faire un jeu en Java distribué à la limite via Java Webstart ou plus simple une applet Java.

Pour le jeu et les algo, là :slight_smile: je ne peux pas t’aider.

Euh, l’objectif est de faire un jeu de cartes sauf si j’ai mal lu. Donc je ne vois pas trop l’interet de l’accessibilité, si ce ne serait que de proposer plusieurs versions du jeu.

Et pour ce qui est de IE6, eh bien il n’y absolument aucun problème car le code Javascript généré par GWT est spécifique aux navigateurs qui accedent à l’application. Des hacks, il en existe pas que pour IE6, mais aussi pour Opera, Safari, …

Justement :slight_smile: tu dis “c’est plus accessible” en général. Donc je corrige.

Et là, un jeu en java par applet c’est largement suffisant…

Ahhhh…! jdisais accessible dans le sens que ca demandait moins de prérequis au navigateur (en l’occurence Java). J’aurais du choisir un autre terme :slight_smile:

Sauf qu’en entreprise, tu peux supposer que Java est installé d’office :wink:

Hep les gars, où est ce que vous avez appris à lire/décripter un cahier des charges ? Avant de lancer la dernière techno funk, lisez le sujet. Je vous la refais :

  • Techno Java
  • Site internet pour l’entreprise dans un premier temps donc possibilité d’ouverture vers l’extérieure (donc exit la maîtrise du poste client et Java Web Start).
  • Débutant complet qui semble pas savoir par où commencer, donc avant de lui expliquer tout l’avantage de l’appel-contre appel, il faudrait lui expliquer comment faire des simples virages.

Bon, passons à la réponse :

  • Pour l’algo et la mécanique du jeu, c’est une chose. A toi de faire ton modèle objet que je ne détaillerai pas car je ne connais pas les règles.
  • Code cette partie de manière totalement indépendante du reste. Teste la à la rigueur en faisant un Main grâce auquel tu pourra jouer dans une console. Dans les bonnes pratiques, tu devrais passer par des tests unitaires (cf JUnit et TestNG) mais je ne vais pas me lancer dans une explication (recherche google : “junit site:developpez.com”).

A ce moment tu a ta mécanique.

Maintenant la partie Web

  • Le web via Java s’accède grâce à un serveur d’applications. Le plus simple reste Tomcat (http://tomcat.apache.org/). Tu dois alors réaliser ce des jsp (templates de pages web) dont l’accès sera géré par le descripteur de ton application (web.xml) et ce qu’on appelle des servlets (“prototypes” de classes Java destinées à gérer les requêtes HTTP). C’est elles qui interrogeront le moteur du jeu codé précédemment, lui transmettront l’action, vérifieront le résultat et l’enverront à la jsp pour qu’elle génère la page web.

Voila pour les grandes lignes. Je n’irai pas plus loin (sauf question précise) car le reste relève des tutos inondant déjà la toile.

Pour compléter néanmoins, il existe une panoplie de codes qu’on appelle des “frameworks” destinés à se faciliter la vie. Struts par exemple a été l’un des premiers à proposer un modèle MVC web tout fait. Aujourd’hui; je ne le conseille pas, j’orienterai plutôt vers JSF. GWT est un framework très hyp’ deuxpointzero proposé par Google. Il a l’avantage de proposer du codage d’interfaces web à la mode Swing est génère derrière que de l’Ajax tout de suite prêt à tourner sur IE/FF/Safari. Il a le défaut ou qualité (selon les avis ou besoins) d’être très orienté ce qu’on appelle “single page interface”. Pour un jeu, c’est un plus. Cependant, se plonger dans un framework sans connaître/comprendre les rouages du langage est à mon sens une belle co…rie.

Ah parce qu’il t’arrive de “plonger” dans une techno sans savoir de quoi il en retourne ? Aberration totale. Toutes les librairies du monde Java dignes de ce nom ont une “Overview”. Donc pour peu que Gerion666 soit débrouillard, il va ouvrir Google, taper “GWT” ou autre, et tomber sur la description sous jacente. Faut arrêter de penser qu’on livre tout sur un plateau d’argent.

Ce n’est pas parce qu’on ne tartine pas qu’on n’a pas pris le temps de lire le post. En l’occurence, Sans nom et moi meme avons suggéré deux techno pour réaliser son projet. De plus, il s’avère que ces technos sont structurantes, c’est-à-dire que la conception du programme doit être inspirée du mode de fonctionnement de son socle. Ce qui n’est pas le cas de tous les programmes.

Par exemple, utiliser JUnit pour tester son programme GWT est un non sens. Ca reviendrait à faire du test u sur une page HTML.

Donc t’es gentil mais tu peux te garder de médire sur notre compréhension du sujet, et du fait que ta démarche plan -> code n’est pas forcément la seule qui soit viable.

Il peut par exemple expérimenter itérativement jusqu’à obtenir un proof of concept.

Et le pourquoi du GWT ? Parce que si tu prends la peine de consulter le showcase, tu verrais qu’on peut faire à peu pres ce qu’un jeu de carte demande : des cartes, un tableau de bord.

Autre exemple : www.cubicleanimals.com…

Sinon petite remarque :

Si je me mets à la place d’un patron, je dois comprendre qu’on propose à mes employés de s’amuser ? Suffit de leur ouvrir Internet non ? :slight_smile:

Et pourtant… Le monsieur dit :

  • j’ai très peu programmé en JAVA
  • cela remonte déjà à quelques années (donc quid des évolutions tel que java 5 ou l’introduction des frameworks, même si pas fondamentales)
  • j’ai néanmoins les bases en me replongeant dans mes vieux bouquins

et bon, quand on ajoute :

  • je me suis donc un peu baladé sur le net pour obtenir quelques conseils ou autres, mais à ma grande surprise j’ai rien trouvé !!

permet moi de situer la barre assez bas. Quand aux proposition de technos, tu remarquera que j’ai cité GWT en conclusion (et ce n’est pas la peine de m’envoyer à moi des ref vers GWT, je le connais un peu par coeur… Bon ok non pas forcément mais j’en ai bouffé :smiley: ). Quand à la supposition de Sans Nom, je relève :

  • projet de création d’un site internet pour entreprises (dans un premier temps)

Donc il n’y a pas de maîtrise du poste client, donc tout ce qui repose sur JWS est à éviter.

Donc c’est bien gentil de lui donner des mots clefs, mais à mon sens, Servlet, jsp, Tomcat doivent venir avant GWT.

Par contre, et là je vais monter sur mes grands chevaux :

non sens de quoi ? GWT concerne d’interface. Si tu fait du dev objet, tu a des objets métier (ne serait-ce que pour l’implémentation des règles). C’est eux que je teste.

Quand à l’interface HTML, évidemment que je la teste aussi… Selenium, tu crois que c’est un nom d’élément ? (Heu… Ah si aussi :smiley: )

C’est parce qu’il n’a pas l’air expert en la matière que j’ai orienté mon choix vers un framework de très haut niveau. C’est analogue à qqn qui voudrait faire une appli de gestion : je vais l’orienter plutot vers Hibernate que vers JDBC. Par ailleurs GWT (non non, jbosse pas chez Google !) nécessite moins de prérequis que JSP, Servlet.

Si tu testes les objets métier, pourquoi passer par l’interface !? En l’état, ca sert à rien, ou plutot ce n’est pas viable de faire du test d’interface (problèmes de pertinence, de maintenabilité), du moins d’application GWT. Pour le non sens c’est simple : tu testes que ton titre est bien en Arial bleu ?

Quant à Selenium, pour l’avoir utilisé sur plusieurs projets, c’est un framework de test d’IHM qui ne constitue en rien une panacée, et qui ne présente un interet que pour s’assurer que les controles d’une appli fonctionnent.

J’ai beau proner le test first, il faut aussi se rendre à l’évidence de l’inefficacité de ses meilleures pratiques dans certaines conditions.

Mais si c’est pour proposer un site de jeu, pas besoin de sortir l’artillerie lourde et Java hein :slight_smile:

Le site n’a pas à être en Java, donc un portail simple avec php, et zou c’est parti… et pour le jeu, y a qu’à le faire avec des applets Java… voire repomper Yahoo Games…

Je pense qu’on va beaucoup dévier du sujet initial si je réponds et c’est pas la peine pour Gerion. Ok, disons qu’il a 2 points de vu et de quoi s’orienter pour une première mouture. Sinon tu reviens :wink:

Je vais me permettre cependant de répondre sur le sujet des tests

Évidement que Selenium ne se contente que de tester les actions/réactions de l’IHM. Évidemment que je ne teste pas “la mise en page” (essaye de définir la logique du test pour voir :wink: ). Mais quelle que soit l’interface (GWT, JSF ou autre), tu a bien au moins une classe métier, disons pour du blackjack, une classe Dealer qui va avoir avoir disons une méthode getCard() qui renvoi un objet carte aléatoire. C’est ces méthodes là que tu va tester par JUnit (ou TestNG) de manière unitaire (est ce que getCard appelé plusieurs fois donne des cartes différentes, est ce que 32 demandent rendent tout le jeu, etc, etc). Et écrire ces tests n’est pas de la bonne pratique (le testFirst en est une), c’est de l’assurance qualité de ton produit (sous condition de la pertinence des tests).


[quote="Sans-Nom"] Mais si c'est pour proposer un site de jeu, pas besoin de sortir l'artillerie lourde et Java hein :) [/quote]

Boah, la question de la lourdeur de l’artillerie ne dépend que de la facilité d’utilisation. Et des contraintes du boss :wink:

Mouaip sauf que pour moi les applets sont une techno morte.

Sauf que tu ne fais pas des jeux en application 100% web :wink: (ie: html, java server, php, etc)

faut au minimum flash, java, silverlight, … mais javascript ben tu vas t’amuser encore plus à le coder ton jeu.
Edité le 22/04/2009 à 22:31

Martopioche, on est d’accord sur les tests d’ihm, sur l’utilisation de Selenium. Par contre je ne suis pas convaincu sur GWT spécifiquement. Je comprends bien la pertinence de tes tests, mais vu que l’ihm relate aussi du look and feel, elle se révèle particulièrement changeante. Donc potentiellement tu vas réécrire tes tests plein de fois. Dans ces conditions, je pense qu’il y a peut etre une autre solution “d’assurer la qualité de ton ihm”. Attention : quand je parle du changement, je ne parle pas de refactoring.

Sinon Sans-Nom, effectivement un jeu en Javascript serait l’idéal, et le développer en GWT te permet d’éviter de ne trop “t’amuser à le coder”.

Enfin bref je m’en tiens là. Par contre je demande à voir le résultat !