Grande bataille navale de programmeurs

Le , par Tournoyons, Membre éclairé
Grande bataille navale de programmeurs
Tout langage web est supporté pour ce tournoi entre algorithmes de Bataille navale

Développer son propre algorithme de joueur de Bataille navale (entre autres jeux proposés), et le faire participer à des tournois d'algorithmes, tel est l'objet à la fois ludique et sérieux de Tournoyons. L'intérêt est de tenter d'élaborer le meilleur algorithme, et de le confronter aux autres algorithmes via la plateforme de tournoi.

Chacun développe avec son langage de programmation favori, quel qu'il soit, et met en ligne le code sur son propre hébergement internet.

Plus précisément :
  • vous développez avec le langage de votre choix, quel qu'il soit, sachant qu'il s'exécutera sur un hébergement internet. Un manuel technique précise le codage des coups, et les échanges avec Tournoyons ;
  • vous installez le code sur un hébergement internet ;
  • pour le tester et l’améliorer, vous jouez sur Tounoyons contre votre algorithme ;
  • quand vous le souhaitez, vous l’inscrivez au tournoi, et pouvez continuer à l’améliorer ;
  • des trophées sont en jeu ;
  • que le meilleur gagne !


Tournoyons sur Developpez.com
Forum d'entraide sur Tournoyons



Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de markior markior - Membre habitué https://www.developpez.com
le 30/03/2013 à 1:49
Hello,

Je viens d'inscrire mon moteur au tournois.

Je l'ai réaliser en JAVA et c'est hébergé avec un Tomcat sur mon PC de bureau... J'espère ne pas couper le serveur par inadvertance

Il me reste quelques trucs à peaufiner mais je suis plutôt satisfait dans l'ensemble. J'ai jouer 2 matchs contre chacun et je n'ai perdu qu'une seule fois contre Yqnn_ : en visualisant la partie, pour moi tu as eu de la chance

Bonne chance à tout les participants
Avatar de markior markior - Membre habitué https://www.developpez.com
le 30/03/2013 à 10:57
Sinon, j'avais une remarque concernant ce qui a été dis...
Citation Envoyé par Tournoyons  Voir le message
On peut aussi jouer différemment suivant l'adversaire, par observation de ses matchs précédents.

Mais il n'y a aucun moyen de connaitre l'adversaire ou alors j'ai loupé quelque chose ?

Edit : ah si effectivement il y a la valeur opponent dans l'url
Avatar de Tournoyons Tournoyons - Membre éclairé https://www.developpez.com
le 30/03/2013 à 12:29
Citation Envoyé par markior  Voir le message
Je viens d'inscrire mon moteur au tournoi.

Bienvenue dans le tournoi
Ça bataille ferme
Avatar de markior markior - Membre habitué https://www.developpez.com
le 30/03/2013 à 16:56
Merci

Je suis désolé mais j'ai du me désinscrire ce matin, j'ai trouvé une problème dans mon algo et ca donnait une erreur sur certaine partie.
Je viens de corriger et remettre mon moteur en route mais du coup ca m'a fait un reset de stat
Avatar de Tournoyons Tournoyons - Membre éclairé https://www.developpez.com
le 30/03/2013 à 17:15
Citation Envoyé par markior  Voir le message
j'ai du me désinscrire ce matin

Ce n'est pas gênant.
Ça a l'air une super idée d'utiliser Tomcat pour tester la chose.
Par contre, la nécessité de désinscrire n'est-elle pas liée à ça ?
NB : Comme le moteur n'était pas désinscrit côté Tournoyons.com au passage, il y a une partie en erreur.
Avatar de markior markior - Membre habitué https://www.developpez.com
le 30/03/2013 à 17:42
Le problème était de mon côté car mon moteur pouvait tirer deux fois sur une même case. J'ai eu 3 parties en erreurs et j'ai préféré, le temps de corriger, couper le serveur et me désinscrire du tournois pour qu'il n'y ai pas d'autres erreurs pour cause de serveur inaccessible. Mais du coup c'est vrai que sur le site tournoyons ça n'a pas été fait... Tant pis !

Pour Tomcat, j'ai l'habitude d'utiliser ce serveur d'application au travail et je suis beaucoup plus à l'aise en Java qu'avec d'autres langages donc le choix était vite fait à mes yeux.

Vu que mon objectif (créer un moteur qui fonctionne et qui ne fait pas que perdre) est atteint et même dépasser je vais en dire un peu plus sur ma technique !
Donc pour déterminer où tirer je calcul pour chaque case la probabilité qu'un bateau s'y trouve.
- je commence par éliminer toutes les case qui ont une probabilité nulle : raté / touché / coulé / à côté d'un bateau coulé (les bateaux ne peuvent pas être collé sauf en diagonale).
-pour les cases à côté d'un bateau touché je leur donne une forte probabilité 1/4 quand on ne connait pas le sens et 1/2 quand on le connait.
- ensuite en fonction des bateaux restant je calcul la probabilité pour qu'une partie du bateau soit sur cette case
Il ne reste alors plus qu'a trouver la case qui a la plus grande probabilité et de tirer.

Et au vu des résultats ça marche plutôt pas mal : 13 victoires pour 1 défaite à l'heure ou j'écris ce message.

Maintenant il faudrait peaufiner un peu en s'adaptant au joueur qu'on a en face mais je ne sais pas encore si je m'attaquerai à ce gros morceau.
Je vais déjà améliorer le placement de mes bateaux car il suffit de regarder quelques une de mes parties pour pouvoir gagner à tout les coups contre moi !
Avatar de bertry bertry - Membre éclairé https://www.developpez.com
le 10/04/2013 à 23:04
Salut Pierre,

Mon moteur est inscrit en compétition depuis plusieur jours...

Je me demande s'il serait possible de porter le nombre de parties de 48 à 100, 200 ou bien plus, afin de pouvoir obtenir un classement plus représentatif des performences de chaques compétiteurs.

Comment est obtenu le nombre de point de chaques compétiteurs au classement?

Pourquoi avoir scindé les concours en 3 compétitions différentes (sur tounoyons, développez et le site du 0) plutôt que de réunir les compétiteurs des 3 sites dans un même tournoi (plus on est de fous et plus on rit)?

Merci.
Avatar de Tournoyons Tournoyons - Membre éclairé https://www.developpez.com
le 11/04/2013 à 9:24
Bonjour,
Citation Envoyé par bertry  Voir le message
Je me demande s'il serait possible de porter le nombre de parties de 48 à 100, 200 ou bien plus, afin de pouvoir obtenir un classement plus représentatif des performances de chaque compétiteur.

Le nombre de parties ne doit pas être trop élevé pour intégrer facilement les nouveaux arrivants, et assez élevé pour faire la différence. Là, le classement est établi sur les 48 dernières parties, et semble assez stable et représentatif. Je vais quand même réfléchir à ta demande.

Citation Envoyé par bertry  Voir le message
Comment est obtenu le nombre de point de chaque compétiteur au classement ?

Voir le à droite de "Lancer une partie"

Citation Envoyé par bertry  Voir le message
Pourquoi avoir scindé les concours en 3 compétitions différentes (sur tounoyons, développez et le site du 0) plutôt que de réunir les compétiteurs des 3 sites dans un même tournoi (plus on est de fous et plus on rit)?

Les tournois côté tournoyons.developpez.com sont destinés à la communauté des informaticiens professionnels et individuels, le classement est individuel.
Les tournois côté tournoyons.com sont destinés aux étudiants informaticiens d'écoles d'ingénieurs (et d'université), le classement recherché à terme est par écoles (en intégrant les individuels au nom d'une école dite "Public Programmers").

Bravo en tous cas pour ton moteur de Bataille navale
Avatar de bertry bertry - Membre éclairé https://www.developpez.com
le 12/04/2013 à 9:55
Pour le calcul des points c'est le à droite de Rang dans le tableau du classement.

Ca donne:
Code : Sélectionner tout
Points = 1000*(Gagnées*5+Nulle*2+Perdue)/jouées-(Forfait+erreurs)
Au passage il manque une parenthèse au dénominateur (sinon ça ne correspond pas aux scores donnés dans le tableau de classement):
Code : Sélectionner tout
Points = 1000*(Gagnées*5+Nulle*2+Perdue)/(jouées-(Forfait+erreurs))
Avatar de Tournoyons Tournoyons - Membre éclairé https://www.developpez.com
le 12/04/2013 à 10:51
Citation Envoyé par bertry  Voir le message
Pour le calcul des points c'est le à droite de Rang dans le tableau du classement.

Oui, effectivement

Citation Envoyé par bertry  Voir le message
Au passage il manque une parenthèse au dénominateur

Bien vu, je corrige, merci
Avatar de Tournoyons Tournoyons - Membre éclairé https://www.developpez.com
le 12/04/2013 à 20:31
Bonjour,
Suite à une demande reçue par mail, une fonctionnalité commune à tous les jeux est introduite :
Lorsque une partie est terminée, l'arbitre envoie aux moteurs concerné une dernière requête, nouvelle, pour indiquer que la partie est terminée, qui l'a gagné ainsi que le plateau de l'adversaire.
La demande visait à pouvoir enregistrer les plateaux de chaque partie pour générer des statistiques par adversaire.
Pour en savoir plus, voir le paramètre de query Status au sein du manuel technique.
Dites-moi ce que vous en pensez ...
Offres d'emploi IT
Data scientist senior H/F
Safran - Ile de France - Magny-les-Hameaux (Saclay)
Ingénieur analyste programmeur (H/F)
Safran - Auvergne - Montluçon (03100)
Architecte technique des systèmes d'information H/F
Safran - Ile de France - Évry (91090)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Développement Web : Xavier Lecomte -