Bonjour,
Je travaille actuellement sur la réalisation d'une application en Java sur le jeu d'awele dont les règles se trouvent ici :
http://fr.wikipedia.org/wiki/Aw%C3%A9l%C3%A9
J'ai quelques problèmes notamment pour sélectionner un trou.
Merci d'avance pour votre aide :wink:
Guillaume
projet jeu awele [presque résolu]
lun, 12/03/2007 - 21:53
#1
projet jeu awele [presque résolu]
Bonsoir,
Pour que quelqu'un puisse te répondre, je t'invite à préciser ton problème. Décris les erreurs que tu rencontre, présente les extraits de code concernés, n'hésite pas à être complet.
C'est un peu compliqué car il y a beaucoup de fichiers.
J'ai fait pour l'instant une application qui ressemble à ça :
Le plus simple serait que les personnes intéressées me laissent un MP avec un mail pour que je puisse ensuite envoyer une archive avec toutes les sources.
Voici la fonction qui pose problème :
// interface graphique pour un trou
public void paint(Graphics g)
{
String s ;
BufferedImage i=null ;
File temp_file;
if ( show_result == false )
{
//s = "C:/Documents and Settings/Guillaume COLOMBAT/Bureau/Awalejava/tp2/images/seeds" + nbseeds + ".gif" ;
// 4 graines dans un trou au depart
s = "C:/Documents and Settings/Guillaume COLOMBAT/Bureau/Awalejava/tp2/images/seeds4.gif" ;
temp_file = new File(s);
try
{
i = ImageIO.read(temp_file);}
catch(IOException e)
{System.err.println(e);}
}
else
{
s = "C:/Documents and Settings/Guillaume COLOMBAT/Bureau/Awalejava/tp2/images/result_move/seedsred" + nbseeds + ".gif" ;
temp_file = new File(s);
try
{
i = ImageIO.read(temp_file);}
catch(IOException e)
{System.err.println(e);}
}
g.drawImage(i,0,0,this);
Merci d'avance :wink:
Le principe d'un forum est que tout le monde puisse participer, t'aider, et voir la solution du problème ensuite. Le mieux est que tu expose tout ton problème sur le forum plutôt que par mail
Et quel est le problème en fait ?
Il me manque quelque chose pour sélectionner un trou et ajouter une graine à chaque trou suivant.
Il y a aussi cette fonction qui pose problème.
class HoleHandler extends MouseAdapter
{
public Awale ap ; // lien vers l'application
public Hole current_hole ; // lien pour la sélection d'un trou
// constructeur
public HoleHandler(Awale app,Hole c_hole)
{
ap = app ;
current_hole = c_hole ;
}
// clic de la souris sur le trou
public void mousePressed(MouseEvent evt)
{
ap.hole_selected(current_hole.number) ;
}
// entrée de la souris dans le trou
public void mouseEntered(MouseEvent evt)
{
ap.enter_hole(current_hole.number) ;
}
// sortie de la souris du trou
public void mouseExited(MouseEvent e)
{
ap.exit_hole() ;
}
}
Dans ce cas, il faut essayer d'isoler le code à problème te poster un extrait.
Dans le premier bout de code, ce n'est pas raisonnable de charger l'image sur disque à chaque fois que la fenêtre est painte. Tu devrais charger là ou les images au départ du programme.
Quant au deuxième bout de code.. il n'y a qu'à.. le compléter. Ce que toi seul peut faire puisque toi seul à l'ensemble du code.
Heu je ne veux pas dire que tu devrais poster tout ton code ici. Je ne pense pas que quelqu'un le complète.
Pose des questions précises. Je vois bienque tu as du mal à manipuler les événements en Java. Pose des questions à ce sujet, avec des bouts de code éventuellement indépendants de ton application et tu trouveras sans doute de l'aide.
Effectivement, il faut que je complète le programme mais un peu d'aide extérieure me serait vraiment utile.
Néanmoins, je ne sais pas précisément ce qu'il faut ajouter dans mon programme pour pouvoir sélectionner un trou.
Merci quand même pour tes précisions :wink:
Pour ajouter un trou comme tu dis, il faut déjà savoit que l'utilisateur a cliqué dessus.
Quant l'utilisateur clique, mousepressed va être appelé. Dans evt, tu vas avoir les coordonnées x,y du pointeur au moment du clic.
La tu dois analyser les valeurs pour savoir dans quel trou ça tombe. Et après tu dois agir en conséquence.
Evidemment cela suppose que le plateau de jeu est découpé en rectangles (imaginaires). Et à chaque rectangle correspond un trou. Donc tu dois voir si les x,y tombent dans un de ces rectangles.
A toi de jouer :)
C'est bon.
J'ai trouvé comment faire.
Merci pour ton aide. :wink:
Bonjour,
Peut tu m'envoyer les codes sources par mail je doit réalisé un projet qui ressemble un peu au jeu awele.
Je voudrais me basé sur ton jeu.
Envoi moi par mail : eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%7a%65%6e%62%6f%75%74%65%40%68%6f%74%6d%61%69%6c%2e%63%6f%6d%22%3e%7a%65%6e%62%6f%75%74%65%40%68%6f%74%6d%61%69%6c%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))
Merci beaucoup
J'ai presque terminé mon projet de jeu d'awale sauf que je dois faire une application de mise en réseau du jeu.
On m'a donné un programme mais je n'arrive pas à l'utiliser.
Est-ce qu'une âme charitable spécialiste de réseau en Java serait capable de m'aider?
Merci d'avance
De quel "programme" s'qgit-il ?
C'est un programme permettant de jouer en réseau au jeu que l'on m'a fourni, que je n'ai pas touché d'ailleurs, mais que je n'arrive pas à faire marcher.
Si tu veux m'aider, je t'en dirai un peu plus par MP. :wink:
Non pas en privé, je n'ai pas le temps.
Pour en revenir à ton jeu d'awale. Ce n'est pas difficile de le faire jouer en réseau.
1 tu dois savoir manipuler les sockets en Java ce qui ne présente aucune difficulé.
2 tu dois définir un protocole pour l'échange des informations. Par exemple si le joueur met une graine dans la case 2, tu constitue une chaîne comme "J-1-2" et tu envoies la chaîne au jeu à travaers le socket. Du côté du jeu, celui-ci reçoit donc "J-1-2", analyse la chaîne et déduit comment répercuter le coup du jeu sur le plateau de jeu.
Tout ça est en fait très simple sur le principe. Tu dois bien réfléchir à ce que doivent être les données à échanger dans tous le scas de figure, puis tu établis ton procole, puis tu le codes :)
Je ne suis pas vraiment un expert en réseau en Java.
C'est la première fois que je fais ce genre de chose.
J'ai fait quelque chose dessus aujourd'hui mais ça ne fonctionne toujours pas.
L'idéal serait que je t'envoie les sources par mail et que tu m'aides à résoudre ce problème. :wink:
Merci d'avance pour ton aide.
Non pas en privé.
(Non étant le contraire de oui n'est-ce pas ?)
Pas besoin d'être expert en Java ni en réseau pour ça pour ce que tu veux faire, loin de là.
Essaie d'exposer ici clairement, bouts de codes à l'appui, tes difficultés et sans doute tu auras de l'aide. Si ce n'est pas moi (car après tout pourquoi est-ce que ça ne devrait être que moi :) ) quelqu'un d'autre t'aidera probablement.
Voici ma fonction qui s'appelle NetAwale :
Et voici ce que j'ai mis dans mon programme principal (fonction main) pour appeler NetAwale :
Tu balances une montage de code, mais quel est le problème ?
Si tu crois que je vais tout lire, à la recherche de ce qui ne va éventuellement pas sans la moindre indication, tu te fourres le doigt dans l'oeil.
Ou alors faut que tu donnes une adresse où facturer :)
Mais peut être que quelqu'un d'autre sera tenté par l'exploration de ce beau code qui sait ?:)
Mais je pense quand même que si tu veux de l'aide, sur ce foruum ou sur n'importe quel forum, faut aussi que tu fasses un minimum d'effort sur tes questions tu ne crois pas ?
On m'a fourni la fonction NetAwale.
Mais lorsque je l'appelle, le réseau ne se fait pas et le programme se bloque.
Je ne sais pas ce qu'il faut modifier pour que ça fonctionne.
Ah....
La première chose à vérifier, avant de regarder dans le code, c'est qu'un pare-feu ne bloque pas le port du socket (ici 2222)
Ensuite qu'il autorise le traffic réseau en Intranet (classe d'adresse 192.168.x.x utilisée par le code)
Si le parefeu est de la partie (avec et sans jeu de mots) sur ta machine ou sur ton réseau Intranet, faut configurer le pare-feu avant toute autre chose..
Sinon, tu dois être conscient qu'avec une adresse en 192.168.x.x tu ne peux pas être en réseau sur Internet n'est-ce pas ?
Enfin.... (:lol:) je suppose que tu essaies d'abord en local sur ta machine. Quelle est donc l'adresse IP locale de ta bécane ? Est-ce bien 192.168.1.10 comme utilisé dans le code ? Parce que sans ça, ça va pas marcher tellement bien forcément :lol:
Tiens commences donc pas essayer de remplacer "192.168.1.10" par "localhost", si ça se trouve ça ira tout de suite mieux :lol:
Et essaie aussi d'acquérir quelque notions de base de réseau TCP/IP. De nos jours c'est indispensable en informatique.