JEU DE CARTE

Signaler
Messages postés
26
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006
-
Messages postés
26
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006
-
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;
}
}

si QQUN PEU M AIDER MERCI BCP

un mec de stras
A voir également:

8 réponses

Messages postés
20
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
13 décembre 2010

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
Messages postés
26
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006

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

un mec de stras
Messages postés
20
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
13 décembre 2010

- 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
Messages postés
111
Date d'inscription
mardi 8 janvier 2002
Statut
Membre
Dernière intervention
19 décembre 2006

juste une question pourquoi tu retournes 1 à chaque fois que tu ne tombes pas sur un as, un roi, une dame ou un valet ?

a mon avis tu devrais numéroter tes cartes de 2 à 14 avec le 14 pour l'as ainsi les controles seraient plus faciles car dans l'ordre numérique...

Lapin, lapin, ...
Messages postés
26
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006

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és
20
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
13 décembre 2010

Bonjour,

Oui , tu as le droit de faire :
int monINT = 12;
String maStr = "blabla";
String maStr2 = monINT + maStr + ".truc";

ed
Messages postés
111
Date d'inscription
mardi 8 janvier 2002
Statut
Membre
Dernière intervention
19 décembre 2006

tu peux aussi si tu as fait une classe Carte mettre dedans son nom lors de l'initialisation...

cela dit j'ai pas bien compris ton problème, essaye d'éviter le style SMS je ne brille pas dedans.

Lapin, lapin, ...
Messages postés
26
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
21 février 2006

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);
}

Toolkit toolkit = getToolkit();
String mot= "1 Pic.gif";
Image image = toolkit.getImage(mot);
Image image2 = toolkit.getImage(mot);



protected void processWindowEvent (WindowEvent e){
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
}

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


Toolkit toolkit = I1.getToolkit();
//recuperation de l'image
int monINT = tCarteJoueur1[i].valeur();
String maStr = tCarteJoueur1[i].lib;
String maStr2 = monINT + maStr + ".gif";

//recuperation de l'image
int monINT2 = tCarteJoueur2[i].valeur();
String maStr3 = tCarteJoueur2[i].lib;
String maStr4 = monINT2 + maStr3 + ".gif";


//Toolkit toolkit = I1.getToolkit();
Image image = toolkit.getImage(maStr2);
Image image2 = toolkit.getImage(maStr4);

//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

if (Som1 > Som2){
System.out.println("\n" +"Vous avez Gagné");
JOptionPane.showMessageDialog(null,"Vous avez Gagné");
}
else
if (Som1 < Som2){
System.out.println("\n" +"Vous avez Perdu ");
JOptionPane.showMessageDialog(null,"Vous avez Perdu");
}
else JOptionPane.showMessageDialog(null,"Vous êtes égalité");
}
}

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


un mec de stras