IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Taquin: déplacement de case


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 4
    Par défaut Taquin: déplacement de case
    Bonjour,
    je suis débutante en VB.NET et je dois créer un taquin (4x4). Du coup, pour faire déplacer mes boutons (les cases sont représentées en boutons) je voulais faire en sorte de rendre le bouton visible cliqué en invisible de sorte que le trou devient visible et affiche la valeur du bouton cliqué et le bouton cliqué en trou. Et je pensais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Button16_Click[...]
    Button16.Visible=false
    Button1.Text=Button16.Text
    Mais le faire pour chaque bouton (16) est laborieux. Saviez-vous comment faire pour déplacer les boutons ? Je pensais réaliser un tableau de structure et faire une méthode callback mais je ne sais pas si c'est la bonne solution.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    ---> Pour appréhender idéalement le déplacement des pièces il faut d'abord établir le fonctionnement du jeu le taquin :

    - Une grille avec 16 cases : 4x4
    - il y a 15 pièces numérotées + 1 pièce vide
    - on déplace chaque pièce : haut, bas, droite, gauche
    - il y a toujours une case vide = pièce vide

    ---> Avec ces éléments on peut en déduire que :

    - la pièce cliquée se déplace uniquement la ou il y a la case vide (pièce vide)
    - lors du déplacement de chaque pièce on mets à jour son positionnement par rapport à la grille
    - on pourrait prévoir une fonction type Swap entre la pièce cliquée et la pièce vide
    - chaque pièce doit être identifiée par rapport à son positionnement sur la grille pour déterminer dès le départ la solution du jeu


    ---> Que peut-on utiliser comme contrôles :

    - Personnellement j'utiliserai un UserControl qui possède par défaut un numero
    - Puis pour la grille j'utiliserai un contrôle TableLayoutPanel

    A+

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 4
    Par défaut
    Okay d'accord mais en fait je ne comprends pas comment faire la grille de sorte à faire une mise à jour des positionnement des pièces. Et comment faire un UserControl sur des boutons ?

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Oui je comprends que tu veuilles utiliser des boutons après tout il n'y aura à chaque fois qu'un seul déplacement possible....

    La création d'un UserControl te permettra de savoir ou il est positionné dans le tableayoutpanel.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 4
    Par défaut
    En fait, l'utilisation des boutons fait partie de la consigne et je suis obligée d'en utiliser... D'accord je vais tenter ça

  6. #6
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Tu peux passer par un tableau intermédiaire 4x4 contenant des 1 ou le nom des boutons pour les cases occupées et le zéro pour la case vide.
    dans tous les cas, il ne peux y avoir qu'un seul mouvement.
    Tu stockes les positions physiques dans un deuxième tableau 4x4
    (ou mieux un tableau 3d, avec la 3eme dimension gérant soit la position physique, soit l'occupation)

    Pour savoir où se trouve le bouton, utilise la propriété tag : tu stockes sa position dans le tableau par x,y

    crée une procédure qui va tester en fonction du bouton que tu cliques, sa position et si une des cases adjacentes est la case vide et dans ce cas modifie la position du bouton et met à jour le tableau : la case précédemment vide devient pleine et la case anciennement pleine devient vide.

    Affecte cette procédure sur chaque bouton avec un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button3.Click, Button4.Click ...
      Dim ClickedButton As Button
      ClickedButton = CType(sender, Button) 'ici tu obtiens le nom du bouton cliqué
       call ma_procedure(ClickedButton) ' a partir du moment que tu as le nom, tu peux tout faire avec...
    End Sub
    La procédure :
    • Récupère le tag du bouton cliqué et l’interprète en position x et y (compris entre 0 et 3)
    • Vérifie si une case adjacente est libre (tu peux passer par une procédure intermédiaire pour vérifier cela)
    • Si oui change la position physique du bouton et met à jour le tableau d'occupation et le tag du bouton
    • Sinon, il se passe rien

Discussions similaires

  1. Identification case blanche jeu Taquin
    Par anthonynguyen0 dans le forum Android
    Réponses: 4
    Dernier message: 13/03/2017, 15h55
  2. [LibreOffice][Tableur] Déplacement de cases
    Par lvignaud dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 11/05/2015, 16h07
  3. déplacement cases colorées
    Par devhafid dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 01/06/2013, 22h48
  4. [TP] Recherche d'un code source taquin à 9 cases
    Par dericthebeast dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 03/08/2005, 18h34
  5. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/11/2002, 23h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo