Pour m'entrainer à utiliser le javascript et le php utilisé en commande a distance j'ai programmer le petit jeu suivant (en trois jours tout de même, je suis vraiment lent...) : C'est un clone de ce qu'on appelle le jeu de l'apocalypse, allez savoir pourquoi.

Il se joue sur un échiquier de 5x5, avec 5 pions et 2 cavaliers par joueurs. Le but est de faire perdre à l'adversaire ses cavaliers. Les pions prennent en diagonale, comme aux echecs et se déplacent dans les 4 cases adjacentes. Les cavaliers vont et prennent comme aux echecs.

En revanche, là est l'originalité du jeu, les deux joueurs jouent simultanément. Après que chaqu'un aient validés leur prochain déplacement, la situation est verifiée : si deux cavaliers arrivent sur la meme case, ils s'entretuent. si deux pions arrivent sur la meme case, idem. si un cavalier arrive en meme temps qu'un pion sur une case, il le detruit. si une piece arrive sur la case d'une autre qui se déplace le meme tour, elle n'est pas prise mais le déplacement reste valide si deux pieces tentent mutuellement de se prendre, il y a juste echange des deux

les autres règles de prise sont comme aux échecs.

vous pouvez y jouer ici : http://wolf.fserv.org/apocalypse1/

la version béta que voila n'a pas de conditions de victoire implémentés, vous devrez donc simplement arrêter la partie.

vous ne pouvez pas non plus savoir contre qui vous jouez, il vous suffit de cliquer sur le bouton de recherche d'un adversaire et espérer que quelqu'un d'autre arrive.

Je ne me sens pas capable de réaliser une IA pour jouer seul malheureusement, j'ai beaucoup à apprendre dans ce domaine.

Le jeu marche sous firefox mais pas IE, Je crois, sans etre sur, que ce qui ne marche pas sous IE c'est la plétore de setTimeout, qui pourtant sont censés être compatibles...

Si ça intéresse quelqu'un, voici l'API coté php (envoie des commandes par GET) Action=...

requestanotherplayer (retourne un identifiant de partie en 13 caracteres: ABBBBBBBBBBCC ; A est la couleur (0 pour blanc, 1 pour noir) les blancs correspondent toujours au joueur initialisant la partie, le noir au joueur arrivant en second, B est un identifiant unique représentant la partie, C est la clef du joueur)

takeit&GameID=<clef jeu>&PlayerID=<clef joueur>&color=<code couleur> (retour OK si la clef jeu existe et la clef joueur correspond a la couleur donné, le blanc devant s'enregistrer avant le noir, quand les deux joueurs ont validés, la partie est consideré comme commencé par le serveur)

snapshot&GameID=<clef jeu> (retourne une "image" du terrain de 25 caractères, un X correspond a une case vide, un A pour un pion blanc, B pour pion noir, D pour cavalier noir, P pour cavalier blanc)

play&GameID=<clef jeu>&PlayerID=<clef joueur>&Start=<position depart>&End=<position d'arrivée> (Si la clef jeu et joueur sont bons, joue le coup et retourne : REC si l'autre joueur n'a pas jouer. NXT si il a déja jouer et qu'un nouveau tour peux se faire directement. Retourne ILLEGAL si le coup n'est pas possible)

currentturn&GameID=<clef jeu> (retourne le tour en cour)

lastmoves&GameID=<clef jeu> (retourne les derniers mouvements sous la forme : AABB/CCDD, ou AA est la position de depart blanc, BB la position d'arrivée, CC le depart noir, DD son arrivée)

chat&GameID=<clef jeu>&PlayerID=<clef joueur>&Text=<texte> (ajoute Text au fichier de chat de la partie, la clef joueur n'est pas verifiée, si elle ne correspond pas a un joueur, il est indiqué "visitor" dans le fichier)

chatrequest&GameID=<clef jeu>&lastline=<numero de la derniere ligne> (retourne le texte posté dans le fichier chat entre lastline et la derniere ligne du fichier)