titusblinus
Messages postés3Date d'inscriptionjeudi 8 mai 2008StatutMembreDernière intervention 4 juin 2008
-
8 mai 2008 à 11:40
khlifit2020
Messages postés1Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention16 juillet 2009
-
16 juil. 2009 à 20:53
Bonjour à tous.
Je suis pire que débutant car je ne connais rien à JAVA.
Malgré tout, intéressé pour avoir une applet java qui permette de visualiser nos parties (Je fais parti d'un club), j'ai trouvé l'applet de Michael Keating : www.mychess.com (Sur ce site, vous pourrez trouver les sources, dont ChessBoard.Java afin de comprendre les explications de mon problème plus loin)... et j'essaie de la franciser.
Avec les informations de ci de là que j'ai trouvé sur le net, j'ai modifié ChessBoard.Java pour en faire un ChessBoardFR.java.
Entre autres modifications, j'ai ajouté des lignes :
pgnMove = pgnMove.replace('Q', 'D');
pgnMove = pgnMove.replace('R', 'T');
pgnMove = pgnMove.replace('N', 'C');
pgnMove = pgnMove.replace('B', 'F');
pgnMove = pgnMove.replace('K', 'R');
afin de franciser la feuille des résultats.
J'ai réussi à modifier aussi les boutons et le texte (il suffit de traduire du texte... mais pour moi qui ne connaît absolument pas Java, ça se fait facile )
Par contre, lors de variante de coups, je ne sais pas modifier la première lettre d'un élément d'une liste.
Dans le code de Michael Keating, cela se situe ici :
//--------------------------------------------------------------
// add this move's variations
Vector vRAVS = scoreKeeper.getVariationsAt(intMoveIndex);
for (int i = 0; i < vRAVS.size(); ++i)
{
RAVList.add((String)vRAVS.elementAt(i)); // addItem is deprecated
}
RAVList.setVisible(true);
//---------------------------------------------------------------
En fait, je voudrais accéder à la première lettre de chaque élément de la liste de vRAVS et voir comment faire pour remplacer 'Q' par 'D'; 'R' par 'T', 'K' par 'R', 'B' par 'F' et 'N' par 'C' ?
ça doit paraître simple pour des gens qui programment en Java mais pas pour l'apprenti sorcier que je tente d'être.
Quelqu'un aurait-il une idée?
Pour information, je fais les modifications sous NotePad.
Et je compile en ligne en utilisant ce site : http://www.innovation.ch/java/java_compile.html car je n'ai vraiment rien pour faire du Java (Normal car je n'y connais rien)
titusblinus
Messages postés3Date d'inscriptionjeudi 8 mai 2008StatutMembreDernière intervention 4 juin 2008 16 mai 2008 à 11:32
Rebonjour les rois du Java.
Au fil de mes pérégrinations sur le net, j'ai encore pensé essayer une chose.
L'utilisation de substring.
Donc, mon code devient :
-----------------------------------------------------------------------
Vector vRAVS = scoreKeeper.getVariationsAt(intMoveIndex);
for (int i = 0; i < vRAVS.size(); ++i)
{
if (vRAVS.elementAt(0).substring(0, 1) =='B')
vRAVS.elementAt(0).substring(0, 1)='F';
RAVList.add((String)vRAVS.elementAt(i)); // addItem is deprecated
MAIS cette fois-ci, le problème se pose à la compilation :
****************************************************
Standard Output from javac:
/tmp/8361/ChessBoardFR.java:2841: cannot resolve symbol
symbol : method substring (int,int)
location: class java.lang.Object
if (vRAVS.elementAt(0).substring(0, 1) =='B')
^
/tmp/8361/ChessBoardFR.java:2842: cannot resolve symbol
symbol : method substring (int,int)
location: class java.lang.Object
vRAVS.elementAt(0).substring(0, 1)='F';
^
2 errors
Ma question est aussi simple que la première fois.
Est-ce que l'idée de l'utilisation de substring est débile ou pas ?
Et si ce n'est pas débile, qu'est-ce que je fais de complètement faux pour avoir un tel message lors de la compilation ?
Merci aux spécialistes pour leur aide.
Désolé pour mon "néophysme"
titusblinus
Messages postés3Date d'inscriptionjeudi 8 mai 2008StatutMembreDernière intervention 4 juin 2008 4 juin 2008 à 09:55
J'ai eu une partie d'aide d'un pote, je cite :
-----------------------
Ton raisonnement est bon sauf que, lorsque tu fais ta comparaison, tu oublies
deux choses :
- la méthode substring renvoi un objet String => on
compare les objets avec la méthode equals() et non avec l'opérateur ==
-
Lorsque tu parcours ton Vecteur, celui-ci renvoie un objet de type Object, tu
dois le transtyper en String...
Ce qui donnerait :
for (int i = 0;
i < vRAVS.size(); ++i)
{
String str =
(String)vRAVS.elementAt(0);
if (str.substring(0,
1).equals('B'))
vRAVS.elementAt(0) = 'F' +
str.substring(1, str.length());
RAVList.add((String)vRAVS.elementAt(i)); // addItem is
deprecated
}
-------------------------------
Mais cette fois-ci j'obtiens un message d'erreur :
Standard Output from javac:
/tmp/21771/ChessBoardFR.java:2833:
Je comprends bien que
le programme attend une variable et reçoit une valeur mais je ne sais pas
comment résoudre le problème (Désolé de mon ignorance mais comme indiqué, je ne
prétends VRAIMENT PAS connaître Java)
Parmi vous, les spécialistes. une idée pour ce problème (Que je pensais très simple au départ, mais vu le nombre de réponses, j'ai l'impression qu'il est plus dur que prévu !!!)