Solitaire en mode console

Résolu
aichadiak - 9 nov. 2012 à 15:30
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 15 nov. 2012 à 08:47
bonjour à tous,
je suis débutante en java et je suis en plein codage d'un solitaire, en mode console (console éclipse).
les déplacements s'effectuent en remplissant à chaque fois les lignes et colonnes de départ et d'arrivé, ce qui rend le jeux moins amusant.
je voudrais donc savoir s'il existe un moyen de se déplacer dans la console avec les flèches du clavier ou autre chose.
merci d'avance pour toutes les réponses !!!!!!!!!!!!!

10 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 nov. 2012 à 16:04
Et j'oubliais

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.BorderFactory;
import javax.swing.JLabel;


public class Boule extends JLabel {

private static final long serialVersionUID = -3228466367846096427L;

private boolean plein;

public Boule(){
plein=true;
addMouseListener(new MouseListener() {

@Override
public void mouseReleased(MouseEvent e) {
plein=false;
}

@Override
public void mousePressed(MouseEvent e) {}

@Override
public void mouseExited(MouseEvent e) {
setBorder(null);
}

@Override
public void mouseEntered(MouseEvent e) {
setBorder(BorderFactory.createEtchedBorder());				
}

@Override
public void mouseClicked(MouseEvent e) {}
});
}
@Override
public void paintComponent(Graphics g){
if(plein){
g.setColor(Color.BLACK);
g.fillOval(2, 2, getWidth()-4, getHeight()-4);
}
else {
g.drawOval(2, 2, getWidth()-4, getHeight()-4);
}
}

}
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 nov. 2012 à 11:15
Salut,

Etant donné que j'ai créé l'ihm, il ne me restait pas grand chose à faire pour avoir le jeu complet, donc, je viens juste de déposer ce code : http://www.javafr.com/codes/JEU-SOLITAIRE_54740.aspx
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 nov. 2012 à 16:04
Allez, un petit cadeau pour fêter le week end :
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class SolitaireView extends JPanel {

private static final long serialVersionUID = 8061497872023919982L;

public SolitaireView(){
setLayout(new GridLayout(7, 7));
remplir(2, 3);
remplir(2, 3);
remplir(0, 7);
remplir(0, 7);
remplir(0, 7);
remplir(2, 3);
remplir(2, 3);
}

private void remplir(int nbPanel, int nbBoules){
for(int i=0; i<nbPanel; i++){
add(new JPanel());
}
for(int i=0; i<nbBoules; i++){
add(new Boule());
}
for(int i=0; i<nbPanel; i++){
add(new JPanel());
}
}

public static void main(String[] args){
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 400);
f.setLocationRelativeTo(null);
f.add(new SolitaireView());
f.setVisible(true);
}

}
1
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 nov. 2012 à 15:50
Salut,

Non, impossible... Enfin possible mais les fonctions n'existent pas et pour le faire, il va falloir que tu fasses un énorme travail, le principe est de redessiner à chaque fois le plateau de jeu et de sélectionner une case différente en fonction de la touche clavier qui a été cliquée.

Mais créer une interface pour ce jeu n'est pas si compliqué ce ca. Je pense qu'il est même plus simple de créer une interface que de tout gérer dans la console.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 nov. 2012 à 16:05
Graphiquement, tout est là, par contre au niveau fonctionnalité, tout reste à faire, mais étant donné que tu l'as sans doute fais en mode console, tu ne devrais pas avoir de problème.

Bon courage
0
c'est cool
merci julien39, je vais retravailler mon code avec
je devrai obtenir quelquechose de plus potable que le premier programme
merci
0
salut
j'avais aussi commencer un code mais là je mouline vraiment.
d'abord j'ai creer une classe Case avec pointeur vers les boules
public class Case
{
int ligne;
int colonne;
Boule b ;
private boolean pion = false;
private boolean interdit;

public Case(int i, int j, boolean pion)
{
ligne = i;
colonne = j;
interdit = false;
this.setPion(pion);
}


public void setInterdit()
{ 
interdit = true;
}

public boolean setPion(boolean pion)
{
if (interdit)
return false;
this.pion = pion;
return true;
}

public int SetVide()
{
return 0;
}

}

puis je l'ai rajouter à la class boule
public class Boule extends JLabel 
{

private static final long serialVersionUID = -3228466367846096427L;

private Case pion;
boolean plein;

public Boule(int lign, int col)
{
pion = new Case(lign,col,true);
plein = true;
addMouseListener(new MouseListener()
{

@Override
public void mouseReleased(MouseEvent e) 
{
plein = false;
}

@Override
public void mousePressed(MouseEvent e)
{

}

@Override
public void mouseExited(MouseEvent e) 
{
setBorder(null);
}

@Override
public void mouseEntered(MouseEvent e)
{
setBorder(BorderFactory.createEtchedBorder());				
}

@Override
public void mouseClicked(MouseEvent e) 
{

}
});
}
@Override
public void paintComponent(Graphics g)
{
if(plein)
{
g.setColor(Color.GREEN);
g.fillOval(2, 2, getWidth()-4, getHeight()-4);
}
else 
{
g.drawOval(2, 2, getWidth()-4, getHeight()-4);
}
}

}


à part ça je n'arrive plus vraiment à avancer .
merci de ton aide
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
14 nov. 2012 à 08:54
Tu as regardé le code que j'ai posté ?

Tout est là.

Il faudrait utiliser la classe qui te permet de définir le plateau et modifier le contenu des listeners.

A vrai dire, tu n'as pas vraiment besoin de la classe Case.
0
si si je l'ai regardé
je comprend à peu près tous, le problème c'est qu'on doit utiliser des tableaux pour le faire ?
je me demandais si c'était faisable, car ne maitrisant pas bien les List les transformer en tableau c'est un véritable tour de main pour moi .

merci encore de ton aide
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
15 nov. 2012 à 08:47
Franchement, c'est très très simple : dès que tu vois List ou ArrayList, tu remplaces par Boule[] et il faut que tu initialises la taille du tableau.

et get(k), tu remplaces par tableau[k] et c'est réglé.

Mais si c'est un sujet de TP, il faudrait que tu le bosses correctement, je ne te dis pas de ne pas réutiliser ce code, mais, il faudrait te le réapproprier.
0
Rejoignez-nous