« Draw it » pour Android

Et voila ma nouvelle petite application pour Android.
Comme la version PC, celle-ci permet de piocher des valeurs aléatoires parmis des listes arbitraires.

Lien vers l’application sur le Google Play Store : Draw it

Si vous préférez, voici directement les fichiers apk (signés) hébergés par mes soins : https://www.jumbef.net/dl/drawit/

Une liste par défaut est fournie et tire des valeurs parmis :

  • Vrai/Faux
  • Un nombre de 1 à 6
  • Une des sept couleurs de l’arc-en-ciel

Pour créer vos propres listes, éditez un fichier texte suivant le modèle ci dessous :

<?xml version="1.0" encoding="utf-8"?>
<lists>
  <list name="Your list name here">
    <item name="Your item name here"/>
    <item name="Your item name here"/>
    <item name="Your item name here"/>
    <item name="Your item name here"/>
  </list>
  <list name="Your list name here">
    <item name="Your item name here"/>
    <item name="Your item name here"/>
  </list>
  <list name="Your list name here">
    <item name="Your item name here"/>
    <item name="Your item name here"/>
    <item name="Your item name here"/>
  </list>
</lists>

Vérifiez bien l’encodage (aussi appelé format de caractères) au moment d’enregistrer le fichier.

Vous pouvez utiliser n’importe quel nom et extension pour ce fichier mais le contenu étant en XML je vous conseil de choisir l’extension .xml

Si vous souhaitez participer aux futurs tests lors d’ajout de nouvelles fonctionnalités, voici le lien pour vous déclarer comme testeur :
https://play.google.com/apps/testing/net.jumbef.drawit

Draw It !

Besoin d’un petit programme pour tirer des valeurs au hasard parmis des listes arbitraires ?

Pas de soucis, « Draw It ! » est là pour vous.

Initialement créé pour des idées de dessins, il est fourni avec un fichier INI rempli en conséquence. Libre à vous de le modifier à votre guise.

N’hésitez pas à utiliser les commentaire de cet articles si vous avez besoin d’aide.

Mise à jour : Maintenant disponible : « Draw it » pour Android

BitFlow : Mon premier jeu pour Android

Depuis quelques temps déjà, l’idée de créer un jeu pour Android me trottine dans la tête. Plus histoire d’apprivoiser la bête que dans le but de produire le prochain succès instantanément culte.

Je me suis donc lancé dans le portage d’un jeu que j’avais réalisé il y a quelques années : BitFlow

Pour les détails de l’époque : Voir cet article.

Après quelques heures passées à comprendre les entrailles du graphisme sous Android (ne voulant pas toucher au moteur d’origine du jeu déjà en JAVA), je me suis confronté à la détection des mouvements et des actions tactiles.

A ce moment je me suis dit que suivre quelques didacticiels avant aurait été une meilleure idée que de me lancer dans l’aventure avec juste l’IDE, la doc et mon clavier. Mais bon, je m’en suis sorti et voila le résultat.

Screenshot_2015-08-18-18-35-20

Le jeu est disponible sur le Google Play Store et n’hésitez pas à être francs sur vos retours.

J’ai été Charlie

JB-2010-NB-192x192-Charlie

En ce Dimanche 11 Janvier, j’ai participé au rassemblement de Quimper.
Un événement en l’honneur de la liberté, en mémoire des morts de ces derniers jours ou revendiquant diverses positions face à plusieurs forme de terrorisme. Sa raison d’être est floue car chaque participant y était pour ses propres raisons.

Pour ma part, j’avais juste besoin de faire un geste, égoïste peut-être, pour ne pas garder en moi mes émotions.
J’ai écouté un discours, marché quelques temps parmi la foule une feuille à la main avec quelques lignes que j’avais twittées dans la semaine ;

Agression de la plume par l’épée, contre l’esprit par lâcheté.
Même sur les tâches de sang, indélébile l’encre de la liberté.

Je n’ai même pas suivi le cortège tout du long, mais plutôt erré dans des rues parallèles rejoignant la masse quelques temps avant de partir. Cela m’a fait du bien de voir tant de personnes de bonne humeur.

Je n’ai pas pris cela comme une manifestation classique, car pour moi nous n’étions pas là pour protester mais pour soutenir. En rentrant j’ai vu cette vidéo où les policiers sont félicités par la foule, ce que m’a conforté dans cette idée.

Donc, certes rien n’est fini, les sentiments de ces derniers jours doivent perdurer mais la vie de tous les jours doit aussi reprendre son cours. C’est pourquoi « J’ai été Charlie », je l’ai été et je m’en souviendrai mais je me doit de ne plus l’être à la place d’être moi-même. J’imagine que « Charlie » ne l’aurais pas voulu.

Retrogaming et scène-indé à Concarneau !!!

Fan de retrogaming, amateur de jeu indé ?

Venez retrouver les habitués du magasin et tout la communauté Ouest Coast Gaming sur http://www.breizhgames.net/

Vous pourrez également y suivre le développement de mon premier jeu à vocation sérieuse (pas de simple démo technique cette fois). Un RPG old-school (type Dragon Quest III en gros) qui sera distribué par épisodes en version boite dédicacée en magasin et diffusé ici même.
Les dons seront les bienvenus si vous trouvez le résultat digne de votre soutien.

Affaire à suivre !!!

Le moteur est presque prêt !

Et voila, une petite semaine de boulot épisodique et la base du moteur du jeu est prête. Principalement constitué d’interfaces et de classes abstraites, ce moteur n’est pas du tout dédié à un type de jeu et sera facilement utilisable par la suite pour d’autres projets.

Il sera bien sûr libre mais les sources ne seront diffusées qu’une fois nettoyées et commentées.

Voici donc le rendu actuel, utilisez les flèches du clavier pour tester un peu le comportement de l’engin.
Jumbef’s HnS.jar (A lancer avec JAVA)

A bientôt pour la suite !

Ecoute du clavier en JAVA

J’ai longtemps été confronté à un soucis en programmation de jeux en JAVA.

En effet, lorsque vous écoutez le clavier avec une implémentation de l’interface java.awt.event.KeyListener, vous obtenez des déclenchement par de système des évènements keyPressed keyTyped et keyReleased dont les noms sont suffisamment explicites pour la plupart des usages (KeyTyped n’étant pas vraiment utile en fait, juste un petit raccourcis).

Le problème se pose lorsque vous maintenez une touche enfoncée, vous vous attendez à n’avoir que l’événement keyPressed de déclenché et pensez que le keyReleased sera déclenché au moment ou vous relâcherez la touche.
C’est sans compter sur la répétition automatique de frappe qui est gérée par votre système et non pas par la machine virtuelle JAVA.

Sous Windows et MAC (et surement d’autres) vous obtenez une répétition des évènements keyPressed et keyTyped tant que la touche est enfoncée puis un unique keyReleased au moment du relachement.

Sous Linux (au moins avec Xorg) l’évènement keyReleased est lui aussi répété tant que la touche est enfoncée. Ce qui pose un problème tout particulier dans le cas de développement de jeux-vidéos dans lesquels le maintient de touche est monnaie courante.

J’ai longtemps cherché à contourné ce problème en vain, mes recherche me menaient à chaque fois vers un « Impossible à contourné en JAVA, le problème est au niveau natif ».

Et pourtant, découverte aujourd’hui un peu par hasard, un petit détail tout bête.
Le moment ou les évènements keyReleased superflus sont déclenchés ont une particularité que JAVA peut exploiter : Ils sont simultanés par rapport aux keyPressed.

En comparant les valeurs retournées par e.getWhen() on peut facilement distinguer un relâchement simulé par la répétition de frappe du système d’un réél relâchement de la touche.

J’ai honte, j’ai publié cette information un peu trop vite, dans l’euphorie du moment. Il est effet plus compliqué que je ne le pensais car ils ne sont pas toujours déclenchés dans le même ordre. Ce qui pose un gros problème lorsque l’évènement que l’on veut vérifié est déclenché avant celui qui devrait servir de référence.

Pour contourner le problème, voici donc une class abstraite dont vous devrez implémenter les méthodes :

public abstract void keyPressedOrRepeated(java.awt.event.KeyEvent e);
public abstract void keyReleasedOrRepeated(java.awt.event.KeyEvent e);
public abstract void keyReleasedReally(java.awt.event.KeyEvent e);

AbstractKeyAdapterAntiRepeat.java.tar
(Mis à jour le 28 juillet 2012 pour supprimer le bug en cas de relâchement simultané de plusieurs touches)

Son seul défaut connu est qu’elle peut introduire une latence pouvant aller jusqu’à trois millisecondes entre le relâchement réel d’une touche et le déclenchement de l’évènement.

Avis aux testeurs, merci d’avance pour les retours sur différentes plateformes.