Salut à tous,
Dans le cadre d'un cours d'informatique que je suis dans le cadre de mes études, je dois réaliser un jeu de blackjack. ayant commencé le java, il y a moins d'un mois, je galère, mais je m'en sors pas trop mal, ça va!! Comme logiciel, j'utilise Netbeans.
Pour ce jeu de blackjack, j'ai déjà un ficheir JPaneForm nommé blackjack.java mais ce fichier ne me sert à rien pour l'instant!! j'ai ensuite créé une class card dans un fichier card.java dont voici le code :
public class card { int colorcard; int valuecard; //***************************************** // Constructor //***************************************** public card(int color, int value) { valuecard = value; colorcard = color; } public int getColor() { // Return the int that codes for this card's suit. return colorcard; } public int getValue() { // Return the int that codes for this card's value. return valuecard; } }Code :
Ensuite, j'ai créé une class deck : (deck signifie jeu de carte en anglais!!)
public class deck { card[] carddeck= new card[52]; public deck() { int color=0; int value=0; int cardcreated=0; for(color=0;color<4;color++) for(value=1;value<13;value++) { //if (value > 10) // value = 10; // For a Jack, Queen, or King. carddeck[cardcreated]=new card(value,color); cardcreated++; //System.out.println(carddeck[cardcreated]); //JOptionPane.showMessageDialog(null, carddeck[cardcreated]); } } }
Mon probleme maintenant, et il y en a plusieurs!! j'ai besoin d'aide pour afficher mon jeu de carte mais j'ai essayé plusieurs méthodes mais aucune ne marche!
J'aimerais maintenant créé une méthode dans ma classe deck afin de pouvoir choisir une carte au hasard mais ne jamais tomber sur la même carte 2 fois!!
mon souci, c'est que je ne sais pas par où commencé!!si quelqu'un pouvait juste me donner quelques pistes pour me guider, ce serait vraiment super sympa!
merci d'avance à tous ceux qui voudront bien me filer un coup de main!!!!!
Bonjour,
Si au lieu de mettre tes cartes dans un tableau tu les mets dans un vector, il te suffit à chaque fois de tirer le premier élément. Comme en vrai lorsque la première carte du sabot est tirée.
Une fois la carte tirée, tu la supprimes du vector. C'est tout simple. Le vector se vide au fur et à mesure et tu ne peux pas tirer deux fois la même carte.
Je crois que la plus grosse difficulté est de mélanger le jeu de cartes. Tu sais comment faire ?
En fait, mélanger le jeu de cartes est super facile mais je n'arrive vraiment pas à ne pas tirer 2 fois la même carte puisque je veux pouvoir accès à la valeur de la carte, il faut je pense qe mes cartes soient stocké quelque part mais je suis vraiment largués!!
VOici ma fonction pour mélanger :
***************************
//cardchoisis.add(list.get(i)); mais cette ligne ne marche pas du tout!!
Ou alors une autre solution mais que je sais pas non plus comment la réaliser c'est de ne stocker que ka valeur de la carte dans un tableau mais c'est nulle comme idées puisque 2 cartes peuvent avoir la même valeur
merci de votre aide parce que là, j'ai vraiment chercher et le seul truc que j'arrive à faire c'est prendre 3 cartes de mon jeu et afficher leur valeur dans la console!!
J'ai aussi une question comment se fait -t-il que dans mon fichier principal ou j'ai le design pour appeler une fonction il faut que j'écrive : new Deck().dealCard(3); et non pas avec une variable de type Deck???
Merci!!!!! :D
Bonjour,
Ta classe Deck me parait un peu compliquée pour ce qu'il y a à faire....
Je ne connais pas le blackJack, mais si ta classe Deck contient juste
une liste de cartes à mettre à jour, cela devrait suffire.
Si tu veux représenter les cartes en main des joueurs, il faudra après faire
une classe player avec la liste des cartes qu'ils ont tirés.
Je te propose une classe Deck mise à jour :
Ainsi que sa classe de test :
La classe Card n'est pas modifiée à part la suppression de :
dans la méthode toString() qui est inutile puisque Java alloue
automatiquement la taille qu'il faut à ton buffer. De plus sous
la sortie console Eclipse il affiche des caractères bizarres
puisque ta chaine ne fait pas 20 caractères.
J'ai par contre modifié les noms des packages.
Bonne chance,
Niroken
Au black jack, les joueurs n'ont pas de "cartes en main" comme à la belote. C'est à dire que les cartes ne sont pas distribuées aux joueurs au début d'un tour. Les cartes sont tirées une à une d'un sabot pour être exposées sur le tapis.d'où ma proposition du sabot sous forme de vector se vidant de ses éléments un à un
Hello,
Hmmm vi tu as raison, mais on peut encore faire mieux à utiliser l'objet Stack qui étend Vector:)
Niroken
En effet :)
bonjour,
Moi, j'avais du programmer un casse brique...
@+
Alexis
ok, merci beaucoup pour votre aide!!!! mon blakcjack marche presque mais j'ai une erreur quand je veux faire l'affichage des cartes, le seul problème c'est que l'erreur je ne l'ai aps tout le temps et je ne comprends pas ce que c'est, d'où elle vient et donc je ne sais pas trop comment faire pour la corriger!!!
Voici mon code :
l'erreur se trouve à cette ligne là :
BufferedImage im = ImageIO.read(getClass().getResource(source));
Voici mon fichier entier pour l'affichage des cartes :
Voici l'erreur :
Exception occurred during event dispatching:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1362)
at graphics.computergraphicsPanel.draw(computergraphicsPanel.java:72)
at graphics.computergraphicsPanel.paintComponent(computergraphicsPanel.java:40)
Merci de votre aide pour corriger cette erreur, où juste me dire ce qu'il faut que je fasse ce serait super gentil:!!!merci beaucoup par avance!!!
Hello,
Quand tu fais un "getClass.getRessource(...)", ca implique que ta ressource en question se trouve dans ton classpath. On va suppposer que dans ton cas ce n'est pas le cas.
Comme tu n'as pas de temps et pour minimiser les erreurs je te propose de faire :
Bon evidemment mettre le chemin en dur comme ca c'est moyen alors, on pourrait utiliser un chemin relatif du style "./img/UneCarte.jpg", ou le dossier img se trouverait dans le même dossier que ta mainclass.
Bonne chance,
Niroken