un_mec_de_stras
Messages postés26Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention21 février 2006
-
15 févr. 2006 à 20:58
un_mec_de_stras
Messages postés26Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention21 février 2006
-
21 févr. 2006 à 20:12
salut a tous
je veut créer un jeu de carte (bataille) et dans mon code il ya une partie (qui va comptabilisé les point de chaque joueur ne marche pas)
int Som1 = 0;
int Som2 = 0;
for (int i=0; i<26; i++){
if (tCarteJoueur1[i].valeur() > tCarteJoueur2[i].valeur())
Som1 = Som1 + val;
Som2 = Som2 + 0;
else if (tCarteJoueur1[i].valeur() < tCarteJoueur2[i].valeur())
Som1 = Som1 + 0;
Som2 = Som2 + val;
else Som1 = Som1+ 0;
Som2=Som2+0;
deja de une les ELSE ne marche pas (c'est a dire que le jeu ne se lance pa a cause de cela) et la seconde chose c'est que mon VALEUR ne fonctionne pa
voici ma classe carte
public class Carte {
int code;
String lib;
public Carte (int wCode, String wLib){
code = wCode;
lib = wLib;
}
public void AfficherCarte(){
System.out.println(code + " "+ lib);
}
public void valeur(int val){
code = val;
if (code==1)
val =10;
else if (code==13)
val = 8;
else if (code==12)
val = 6;
else if (code==11)
val = 4;
else val=1;
}
}
eddyger
Messages postés20Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention13 décembre 2010 15 févr. 2006 à 21:51
Bonsoir,
qques remarques :
1) "void" devant une méthode signifie qu'elle ne retourne rien.
2) si tu as plusieurs instruction dans un for, un if , un else,...... n'oublie pas les paires accolade ouvrante/fermante
3) dans certains cas un switch est plus lisible que plusieurs if imbriqués ou successifs.
A)la classe "corrigée" :
public class Carte {
int code;
String lib;
public Carte (int wCode, String wLib){
code = wCode;
lib = wLib;
}
public void AfficherCarte(){
System.out.println(code + " "+ lib);
}
public int valeur(){
switch (code){
case 1 : return 10 ;
case 13 : return 8;
case 12 : return 6;
case 11 : return 4;
default : return 1;
}
}
}
B) ta boucle "corrigée":
int Som1 = 0;
int Som2 = 0;
for (int i=0; i<26; i++){
if (tCarteJoueur1[i].valeur() > tCarteJoueur2[i].valeur()){
Som1 = Som1 + val; // qui est val : tCarteJoueur1[i].valeur() OU tCarteJoueur2[i].valeur() ? <strike>Som2 = Som2 + 0;</strike> //1+0= 1 , n+0=n non ?
}
else
if (tCarteJoueur1[i].valeur() < tCarteJoueur2[i].valeur())
<strike> Som1 = Som1 + 0;</strike>
Som2 = Som2 + val; // qui est val : tCarteJoueur1[i].valeur() OU tCarteJoueur2[i].valeur() OU ...? <strike>else Som1 = Som1+ 0;
Som2=Som2+0;</strike>
}
ed
un_mec_de_stras
Messages postés26Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention21 février 2006 15 févr. 2006 à 22:43
merci
les lignes baré je ne doi pa les rajouté c ca?
et le val je doi le remplacer par koi (j'ai mi tCarteJoueur1[i].valeur() par exemple mai des que je le rajoute ca me le souligne en rouge ca veut dire ke l action est impossible)
commen doi-je proceder?
merci encore ed
eddyger
Messages postés20Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention13 décembre 2010 15 févr. 2006 à 23:06
- oui les lignes barrées sont à supprimer (selon moi!)
- sinon si ta méthode valeur() de Carte renvoit un entier, tu as le droit de faire :
int monINT = 0;
monINT = monINT + carte.valeur();
envois ton code modifié.
je me reconnecte demain matin, si tu n'as aucune réponse de personne d'ici là, promis j'essaierais de te répondre
Bon courage.
PS: la prog s'est pas évident, cependant avant de se lancer tête baissée sur son clavier, il faut faire une analyse du problème posé.
Si tu sais jouer à la bataille, écris d'abord un scénario type de jeu (imagine que tu joues avec un pote) ou base toi sur les règles du jeu. Suite à cette première approche, traduis les règles du jeu (ou les cas de figure identifiés par tes soins) en pseudo-code. Puis dernière phase traduis tout en java.
Moi je ne sais jouer qu'à la belote alors qui mieux que toi peut répondre à "le val je doi le remplacer par koi ?"
je vais faire dodo car ma femme m'engueule quand je fais trop de net !
ed
un_mec_de_stras
Messages postés26Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention21 février 2006 16 févr. 2006 à 16:33
merci ed ca fonctionne comme je le voulais
g commencer a faire mon interface graphique et c là reprob,
je voulai savoir si c'été possible de pouvoir prendre mon "code et lib" de ma carte, de les mettres en un string, pui l associé avec l image de ma carte
explication: prenon par exemple l'as de coeur, dan mon programme il va s'afficher comme suit: "1"(int) et "Coeur"(String)
mon image s'appelle "1 Coeur.gif"
je voulai savoir si c'été possible de le concaténé en une chaine string pour le comparer a mon image et l'y associé
(l interface graphique c'est vraimen dure !!!)
si vou comprené mon prob et que vous trouver une autre alternative (une solution) merci !!
un_mec_de_stras
Messages postés26Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention21 février 2006 21 févr. 2006 à 20:12
voila, j'ai crée une classe Interface qui affiche un fond vert avec deux cartes au centre et un bouton en bas
le probleme et que j'ai mis en relation ma class Jeu et ma class Interface mais impossible de recupérer les valeurs d'un tableau de ma class Interface (explication: je voulais dans une boucle for introduire mon interface pour qu'il recupere les valeurs d'un tableau mais la je n'arrive pas)(j'ai mis en gras les partis qui me semble fausses et que je n'arrive pas a resoudre)
INTERFACE:
public class Interface extends JFrame {
ImageIcon frameImageIcon = new ImageIcon("Allah.gif");
Image frameImage = frameImageIcon.getImage();
public static void main(String[] args) {
new Interface();
}
public Interface(){
Button bouton = new Button("Carte suivantes");
add (bouton, "South");
initGUI();
}
public void initGUI() {
this.setResizable(false);
this.setIconImage(frameImage);
this.setTitle("Jeu de cartes - BATAILLE");
this.getContentPane().setBackground(Color.GREEN);
this.setSize(new Dimension(500,500));
this.setVisible(true);
}
public void paint (Graphics g){
this.setBackground(Color.green);
g.drawImage(image,25,70,150,247,this);
g.drawImage(image2,300,70,150,247,this);
}
JEU
int Som1 = 0;
int Som2 = 0;
//on crée deux variables Som1 et Som2
//ces variables vont servir à stocker la somme (le score) que le joueur et que l'ordi aura
for (int i=0; i<26; i++){
if (tCarteJoueur1[i].valeur() > tCarteJoueur2[i].valeur()){
Som1 = Som1 + tCarteJoueur1[i].valeur();
//si la valeur (code) de tCarteJoueur1 est supérieur à la valeur de tCarteJoueur2
//Som1 (du joueur) sera ajouter avec la valeur de la carte qui est definit dans la class CARTE
//public void paint(Graphics g){
//this.setBackground(Color.green);
//g.drawImage(image,25,70,150,247,this);
//g.drawImage(image2,300,70,150,247,this);
//}
}
else
if (tCarteJoueur1[i].valeur() < tCarteJoueur2[i].valeur())
Som1 = Som1 + 0;
Som2 = Som2 + tCarteJoueur2[i].valeur();
//si la valeur (code) de tCarteJoueur1 est supérieur à la valeur de tCarteJoueur2
//Som1 (du joueur) sera ajouter avec la valeur de la carte qui est definit dans la class CARTE
}
System.out.println("\n" + "Joueur 1 :" + Som1);
System.out.println("Ordinateur :" + Som2);
//affichage des valeurs du joueur et de l'ordinateur
Mon but et de pouvoir afficher la premiere carte de tCarteJoueur1 et de tCarteJoueur2 et lorsque je clique dans mon bouton il passe a la carte suivante (j'espere que vous avez saisi)
MERCI de bien vouloir m'aider