Solitaire en mode console [Résolu]

aichadiak - 9 nov. 2012 à 15:30 - Dernière réponse : cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention
- 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 !!!!!!!!!!!!!
Afficher la suite 

10 réponses

Répondre au sujet
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 9 nov. 2012 à 16:04
+3
Utile
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);
}
}

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 13 nov. 2012 à 11:15
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 9 nov. 2012 à 16:04
+1
Utile
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);
}

}
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 9 nov. 2012 à 15:50
0
Utile
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.
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 9 nov. 2012 à 16:05
0
Utile
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
Commenter la réponse de cs_Julien39
0
Utile
c'est cool
merci julien39, je vais retravailler mon code avec
je devrai obtenir quelquechose de plus potable que le premier programme
merci
Commenter la réponse de aichadiak
aichadiak - 13 nov. 2012 à 20:38
0
Utile
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
Commenter la réponse de aichadiak
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 14 nov. 2012 à 08:54
0
Utile
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.
Commenter la réponse de cs_Julien39
aichadiak - 14 nov. 2012 à 16:33
0
Utile
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
Commenter la réponse de aichadiak
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 15 nov. 2012 à 08:47
0
Utile
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.
Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.