Partage
  • Partager sur Facebook
  • Partager sur Twitter

Taquin

Déplacement boutons dans une case vide

25 avril 2019 à 17:22:22

Bonjour,

Je suis débutante en Visual Basic et il faudrait que je fasse un Taquin (4x4) en vb.net sur Visual Studio sauf que j'ai cherché un peu partout et je ne sais pas comment faire pour déplacer un bouton cliqué dans une case vide.

Pourriez-vous m'éclairer sur le sujet ?

Merci d'avance

-
Edité par JK.131LaWLiET 25 avril 2019 à 17:24:58

  • Partager sur Facebook
  • Partager sur Twitter
25 avril 2019 à 17:40:47

Montrez votre code.

Pas besoin de déplacer les bouton, changez juste l'image qu'ils affichent.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
25 avril 2019 à 17:41:08

hello,

Ya rien dans le manuel? Tu codes l'interface en xaml? (désolé je suis plutôt C# ou PHP, mais si je peux t'aiguiller vers une solution ^^)

  • Partager sur Facebook
  • Partager sur Twitter
25 avril 2019 à 18:08:06

Rebonjour,

Alors oui, je pensais à faire ça aussi mais quand un bouton est activé il reprend l'affichage du bouton qui est à proximité. Donc il faudrait créer un bouton visible et invisible de sorte que lorsqu'il est cliqué, le bouton activé devient invisible et le bouton invisible prend l'affichage du bouton activé ? (Aaah ça m'embrouille je fais de mon mieux pour vous expliquer).

J'ai juste fait ça pour le moment, je n'ai pas vraiment de code à fournir pour le moment

J'ai donc fait ça:

    Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
        Button10.Visible = False
        Button16.Visible = True
        Button16.Text = Button10.Text
    End Sub

Ca marche mais du coup pour un taquin (qui marche xD) il faudrait faire une boucle du genre:

Pour chaque bouton cliqué:

faire bouton d'avant.visible=true

et bouton cliqué.visible=false

boutond'avant.Text=boutoncliqué.Text

?

Raaah j'ai essayé de faire cette boucle mais en vain, je recherche sur la doc mais je ne comprends pas comment faire cette boucle.

    Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim bt As Button
        For Each bt As Button Do.... (comment selectionner le bouton cliqué précédemment et le suivant ?)
    End Sub

Et VinSls, je code en vb.net et je n'ai pas encore vu le codage en xaml x)

-
Edité par JK.131LaWLiET 25 avril 2019 à 18:47:50

  • Partager sur Facebook
  • Partager sur Twitter
26 avril 2019 à 10:43:28

> Donc il faudrait créer un bouton visible et invisible

Heu, non, faut juste rendre le bouton Invisible.

https://docs.microsoft.com/fr-fr/dotnet/api/system.windows.forms.control.visible?view=netframework-4.8

Vous avez donc "que" 16 boutons, que vous pouvez "cacher" à votre guise.

Préférez n'avoir qu'une méthode de callback sur le "click" des 16 boutons, au lieu dans avoir 16 différentes.

Vous pouvez savoir quel bouton a été cliqué avec la valeur du paramètre "sender".

Dans le constructeur de votre Form, après l'initialisation de l'interface, vous n'avez qu'à remplir un champ structure qui contiendra des références sur les 16 boutons dans un ordre précis.

Votre formulaire devra contenir aussi l'information sur "où" est le trou du taquin, et demander à la fin du constructeur au bouton correspondant à ce trou de se "cacher". Il est aussi préférable que le formulaire contienne l'indice de l'image que chaque bouton devra afficher dans un champ de type tableau ou tableau2D indépendant des boutons, et indiquer quelle image doit afficher telle bouton en fonction de ce champ aussi à la fin du constructeur.

Avec ces informations, votre fonction de callback sera facilement générique :

-Elle analyse le "sender" pour savoir où est graphiquement le bouton qui a été cliqué

-En déduire s'il est proche du trou ou pas

-Si oui, calculer le résultat avec le tableau contenant les indices des images => changement de position du trou et position des images.

-Demander aux boutons d'afficher les images correspondant au résultat de l'action. En oubliant pas de rendre invisible le bouton correspondant à la nouvelle position du trou.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
28 avril 2019 à 10:53:18

Okay d'accord, je visualise comment faire. Mais mon manque de connaissance me bloque du coup j'ai quelques points sombres:

>Votre formulaire devra contenir aussi l'information sur "où" est le trou du taquin, et demander à la fin du constructeur au bouton correspondant à ce trou de se "cacher".

Comment affecter le bouton à cacher au trou ? Ici dans mon taquin, c'est le bouton 16 qui représente le trou du taquin donc je devrais faire :

Dim trou As Button
If Button16 = trou '(?, Les boutons peuvent pas s'affecter à quelque chose donc comment faire pour lui indiquer le trou ?)

Then Button16.Visible=false

End if

>Il est aussi préférable que le formulaire contienne l'indice de l'image que chaque bouton devra afficher dans un champ de type tableau ou tableau2D indépendant des boutons, et indiquer quelle image doit afficher telle bouton en fonction de ce champ aussi à la fin du constructeur.

Du coup, il va s'agir d'un tableau de structure ? Pour les références j'ai fait ça:

  Structure Boutons
        Dim Bt1 As Button
        Dim Bt2 As Button
        Dim Bt3 As Button
        Dim Bt4 As Button
        Dim Bt5 As Button
        Dim Bt6 As Button
        Dim Bt7 As Button
        Dim Bt8 As Button
        Dim Bt9 As Button
        Dim Bt10 As Button
        Dim Bt11 As Button
        Dim Bt12 As Button
        Dim Bt13 As Button
        Dim Bt14 As Button
        Dim Bt15 As Button
        Dim Bt16 As Button
End Structure


 Dim Bts() As Boutons Bts().Bt1 = 1 Bts().Bt2 = 2 Bts().Bt3 = 3 Bts().Bt4 = 4 Bts().Bt5 = 5 Bts().Bt6 = 6 Bts().Bt7 = 7 Bts().Bt8 = 8 Bts().Bt9 = 9 Bts().Bt10 = 10 Bts().Bt11= 11 Bts().Bt12 = 12 Bts().Bt13= 13 Bts().Bt14 = 14 Bts().Bt15= 15 Bts().Bt16= 16

Et j'ai fait ça en fonction de la doc, mais du coup comment initier la taille du tableau ? Et c'est comme ça qu'il faut instancier un tableau de structure pour un taquin ?

Je suis vraiment pas douée en Vb, je m'excuse pour ces questions de débutants.

  • Partager sur Facebook
  • Partager sur Twitter
29 avril 2019 à 15:49:02

>Je suis vraiment pas douée en Vb, je m'excuse pour ces questions de débutants.

On a tous été débutant. ;)

L'idée principale, mais la plus compliquée à comprendre, c'est de séparer la partie affichage : les boutons dans une grille, de la partie "game play" : qui détecte si le taquin est résolu, si un mouvement est autorisé, etc...

Normalement, c'est des ensembles d'objet totalement différent mais pour un début on va juste séparer les boutons et le gameplay mais en mettant tout dans le formulaire (dans une approche plus avancée, le gameplay sera à l'extérieur du formulaire.).

Si on découpe bien la partie affichage du reste, on n'a 16 boutons dans une grille positionnées avec soins dans le Designer graphique de Formulaire. Ils devraient être tous des champs du formulaire avec des noms à coucher dehors comme "Button1" "Button2" etc...

On place des références à ces 16 boutons dans un champ du formulaire, dans le code suivant ce champ se nomme "buttons" :

...
Imports System.Collections.Generic


Public Class Form1

    Dim buttons As New List(Of Button)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        buttons.Add(Button1)
        buttons.Add(Button2)
...


Après cette action, il est facile de faire une correspondance entre un bouton et la partie du taquin qu'il affiche, via son index dans cette liste.

Comme les boutons ne bougent pas mais c'est juste les valeurs qu'ils affichent qui changent, votre routine de traitement du Click sur les boutons qui est commune à tous ces bouton n'aura qu'à trouver le "sender" dans cette liste pour savoir où l'utilisateur a cliqué sur la grille "logique/gameplay".

Pour la partie gameplay, vous pouvez vous contentez d'une liste de 16 entier de 0 à 15, correspondant à ce que doit afficher Button1, Button2 etc...

Les actions de déplacement ne se font que sur cette liste d'entier et pas sur la liste des boutons.

"0" correspond au trou. "1", c'est la partie 1 etc...

Quand le Xième élément de cette liste d'entier est 0, vous cachez (Visible = False) pour le bouton correspondant à l'indice X.

Si le "0ème" élément de cette liste d'entier est 0, Button1 sera caché, sinon, on lui demandera d'afficher la valeur du 0ème élément.

Si le "1ier" élément de cette liste d'entier est 0, Button2 sera caché, sinon, on lui demandera d'afficher la valeur du "1ier" élément.

etc...

Lors d'un clique, vous détecté le sender, vous vérifiez qu'une action est possible, vous calculez le résultat final par changement dans la liste des entiers, puis, vous itérez sur cette liste et la liste des boutons pour demander à chaque bouton de se cacher ou pas et ce qu'il soit afficher.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
29 avril 2019 à 21:39:02

D'accord !!

>Quand le Xième élément de cette liste d'entier est 0, vous cachez (Visible = False) pour le bouton correspondant à l'indice X.

        If buttons.Button1 = buttons(0) Then 'Ici il me dit que Button1 n'est pas compris dans buttons alors que j'ai bien fait la liste, pourquoi ?
            Button1.Visible = False
        Else
            Button1 = buttons(0) 'Je ne suis pas sûr s'il faut faire ainsi pour la récupération de l'affichage du premier élément
        End If



Est-ce ça qu'il faut faire dans ce cas-là (Juste pour le button1)?  Ou dois-je l'englober dans une boucle for ?

  • Partager sur Facebook
  • Partager sur Twitter
30 avril 2019 à 14:33:52

C'est quoi "buttons.Button1" ???

"Form1.Button1" a été sauvegardé en premier dans "buttons", donc "buttons(0)" sera toujours égale à "Form1.Button1", car les boutons ne change jamais de place dans "buttons".

"buttons" sert surtout pour faire des boucles et ne pas avoir à tester un par un "Form1.Button1", "Form1.Button2" etc...

Pour savoir quelle case logique (numéro entre 0 et 15 pour votre grille 4X4) a été cliquée :

For i = 0 To 15
    If sender = buttons(i)
        Return i
    End If
Next


Si j'appelle "gamePlayGrid" la liste des entiers le code qui mettra tout l'affichage à jour ce résumera à cette boucle :

For i = 0 To 15

    If gamePlayGrid(i) = 0 Then
        buttons(i).Visible = False
    Else
        buttons(i).Visible = True
    End If

    buttons(i).Text = gamePlayGrid(i)
Next


Le plus compliqué reste à faire bouger les entier dans "gamePlayGrid" pour qu'ils correspondant à la nouvelle disposition du taquin.

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
1 mai 2019 à 14:22:50

Comment doit réagir la liste des entiers ? Parce que j'ai essayé de faire ça:

        For i = 0 To 15
            If sender = buttons(i) And gameplaygrid(i + 1) = 0 Or gameplaygrid(i - 1) = 0 Then
                buttons(i).Text = 0
                If gameplaygrid(i) = 0 Then
                    gameplaygrid(i) = buttons(i).Text
                End If

            End If
        Next

Et il prendra en compte seulement les cases à sa droite ou à sa gauche, comment gérer la liste des entiers pour qu'il identifie également les cases du haut et du bas ? D'ailleurs, en faisant gameplaygrid(i+1), je me demande si j'incremente l'entier ou si j'avance dans la liste...

-
Edité par JK.131LaWLiET 3 mai 2019 à 11:30:49

  • Partager sur Facebook
  • Partager sur Twitter
2 mai 2019 à 13:57:49

Ok, je pensais ne pas être clair, mais vous avez bien compris une bonne de mon message embrouillé.

Votre manière de faire le lien entre "sender" et le bouton est nickel.

Là, maintenant, vous êtes devant un choix de conception.

Soit vous considérez que les mécanismes sont assez simples pour les gérer directement dans votre formulaire (comme vous le faite actuellement) soit cela devient suffisamment complexe pour mériter des classes dédiées (une couche business).

J'ai l'habitude de toujours séparer la partie graphique du reste du projet, pour facilement changer de bibliothèque graphique, si nécessaire.

Donc, moi, je fais toujours le choix d'avoir des classes dédiées au gameplay/métier.

Mais si vous ne voulez pas de classes supplémentaires, vous devez gérer le gameplay directement dans le formulaire.

Plutôt que de s'embêter avec un tableau à 2 dimensions, relou pour les boucles, je vous ai proposé un tableau 1D.

Ce choix de tableau 1D complexifie l'implémentation des règles mais et bien plus souple.

Pour implémenter les règles, vous devez connaitre la largeur de la grille en nombre de case, ici 4.

Faites en un champ de votre formulaire pour facilement étendre votre formulaire à un nombre arbitraire de lignes et de colonnes.

Pour avoir la case supérieure, vous n'avez qu'à retrancher 4 à i, pour la case inférieure vous ajoutez 4.

Attention avec des décalages à ne pas sortir de la grille, aussi bien aux extrémités de la grille (0 et 15) mais aussi de la ligne.

Donc la case à (i-1) doit rester sur la même ligne. Le "modulo 4 = 0" donne un début de ligne.

etc...

Dans votre code, vous utilisez "buttons(i).Text" comme source de données, il ne faut pas, c'est gamePlayGrid qui doit être la source.

Soit i la case cliquée, j la case du "trou" :

For i = 0 To 15
    If sender = buttons(i)
        If ...
            'swap dans gameplaygrid
            Dim tmp = gameplaygrid(i);
            gameplaygrid(i) = gameplaygrid(y)
            gameplaygrid(y) = tmp
        End If 
    End If
Next
...
For i = 0 To 15
    If gamePlayGrid(i) = 0 Then
        buttons(i).Visible = False
    Else
        buttons(i).Visible = True
    End If
    buttons(i).Text = gamePlayGrid(i)
Next



  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
3 mai 2019 à 11:21:17

>Ok, je pensais ne pas être clair, mais vous avez bien compris une bonne de mon message embrouillé.     

C'était très bien expliqué !

>Soit i la case cliquée, j la case du "trou"

Par "j" vous voulez dire "y" ?

>Donc la case à (i-1) doit rester sur la même ligne. Le "modulo 4 = 0" donne un début de ligne.

Faudrait faire un test ? Si le bouton cliqué à un (i-1) null alors gameplaygrid (i-1) = gameplaygrid(i) Idem pour (i+1) mais il m'indique erreur, je suppose que ce n'est pas "null" qu'il faut employer... (j'ai également fait la différence entre la liste d'entiers au tableau mais même problème)

Du coup, si je récapitule ça donne ça:

  Dim tab(3) As Button
Dim ligne As Integer = 4
For i = 0 To 3
tab(i) = buttons(i)
ReDim tab(ligne)

Next For i = 0 To 15 If sender = buttons(i) Then If gameplaygrid(i + 1) = 0 Or gameplaygrid(i - 1) = 0 Or gameplaygrid(i + 4) = 0 Or gameplaygrid(i - 4) = 0 Then Dim tmp = gameplaygrid(i) Dim y = gameplaygrid(0) ' Normalement j'aurais dit y=(gameplaygrid(i) =0) mais je suis pas sure de la bonne formulation gameplaygrid(i) = gameplaygrid(y) gameplaygrid(y) = tmp End If End If Next




  • Partager sur Facebook
  • Partager sur Twitter
3 mai 2019 à 13:31:07

>Par "j" vous voulez dire "y" ?

Oui, notation OSEF et rédaction non continue.

Faudrait plus "src" et "dst", mais bon.

>Faudrait faire un test ?

Plusieurs, un pour chaque cas limite (tableau et lignes).

>Si le bouton cliqué à un (i-1) null

C'est vrai que si "i = 0" ou que "i>15" et vous n'avez donc pas à voir dans le tableau "buttons", l'indice suffit.

A l'arrache :

Const width As Integer = 4
Const height As Integer = 4
...

      Dim dst As Integer = -1

      For i = 0 To 15
          If sender = buttons(i) Then
              If (i Mod width <> width - 1 And gameplaygrid(i + 1) = 0)
                  dst = i + 1
              Else If (i Mod width <> 0  And gameplaygrid(i - 1) = 0)
                  dst = i - 1
              Else If ((i / width) < height -1) And gameplaygrid(i + width) = 0)
                  dst = i + width
              Else If ( i>=width  And gameplaygrid(i - width) = 0 Then
                  dst = i - width
              End If

              If dst <> -1
                  Dim tmp = gameplaygrid(dst)
                  gameplaygrid(dst) = gameplaygrid(i)
                  gameplaygrid(i) = tmp
              End If

              Break

          End If
      Next



-
Edité par bacelar 3 mai 2019 à 14:06:21

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
5 mai 2019 à 14:46:51

Un grand merci à vous encore ! En effet, ça me parait plus pertinent :D

Alors j'ai rassemblé tous les codes réalisés et il n'arrivait pas à comprendre le "sender = buttons(i)" alors je l'ai changé en "sender Is buttons(i)", ça me semblait mieux mais lorsque j'ai compilé, le taquin s'affiche mais ne marche pas: le trou n'est pas invisible et échange de l'affichage impossible. Je me demande si ça ne serait pas à cause des mauvais emplacements des boucles ou faut-il inserer les boucles dans une méthode ou je les laisse dans le form_load ?

Voici le code dans l'ensemble:

Imports System.Collections.Generic

Public Class Form1
    Dim buttons As New List(Of Button) 'Liste physique de boutons 
    Dim gameplaygrid As List(Of Integer) 'Liste des entiers 
    Const Wth As Integer = 4 ' Largeur
    Const Hht As Integer = 4 'hauteur
    Dim vlt As Integer = -1   'valeur pour passer à une case droite/gauche ou haut/bas (en ajoutant les cases et en soustrayant le bouton cliqué


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

        ' Ajout des boutons dans la liste
        buttons.Add(Button1)
        buttons.Add(Button2)
        buttons.Add(Button3)
        buttons.Add(Button4)
        buttons.Add(Button5)
        buttons.Add(Button6)
        buttons.Add(Button7)
        buttons.Add(Button8)
        buttons.Add(Button9)
        buttons.Add(Button10)
        buttons.Add(Button11)
        buttons.Add(Button12)
        buttons.Add(Button13)
        buttons.Add(Button14)
        buttons.Add(Button15)
        buttons.Add(Button16)

        For i = 0 To 15
            If sender Is buttons(i) Then

                If (i Mod Wth <> Wth - 1 And gameplaygrid(i + 1) = 0) Then
                    vlt = i + 1 'case droite
                ElseIf (i Mod Wth <> 0 And gameplaygrid(i - 1) = 0) Then
                    vlt = i - 1 'case gauche
                ElseIf ((i / Wth) < Hht - 1) And gameplaygrid(i + Wth) = 0 Then
                    vlt = i + Wth 'case inférieure
                ElseIf (i >= Wth And gameplaygrid(i - Wth) = 0) Then
                    vlt = i - Wth 'case supérieure
                End If

                If vlt <> -1 Then
                    Dim tmp = gameplaygrid(vlt)
                    gameplaygrid(vlt) = gameplaygrid(i)
                    gameplaygrid(i) = tmp
                End If
            End If
        Next

        For i = 0 To 15
            If sender Is buttons(i) Then

                If gameplaygrid(i) = 0 Then
                    buttons(i).Visible = False
                Else
                    buttons(i).Visible = True
                End If
            End If
        Next

    End Sub

Je l'ai fait en une boucle ou encore déplacer les End If, mais j'ai plus l'impression que l'erreur réside dans le "sender Is button(i)" que je trouve pas cohérent. Parce que j'ai l'impression qu'il a du mal à rentrer dans la boucle...

PS: En y passant, j'ai changé quelques notations parce que j'avais du mal à comprendre :'( désolé (et les Width et Height voulaient pas être reconnu...)

-
Edité par JK.131LaWLiET 5 mai 2019 à 14:47:08

  • Partager sur Facebook
  • Partager sur Twitter
6 mai 2019 à 10:09:29

Salut,

Tu devrais de te réapproprier le code et te poser quelques questions.

Par exemple, à quel moment est exécuté Form1_Load ? Donc quand le code des boucles est-il exécuté ? Quand devrait-il être exécuté ?

Du coup ça t'aidera aussi à régler ton problème de "=" ou "Is", quel est le type de "sender" dans Form1_Load (hors Object) ? Qu'est-ce qu'il devrait être si tu veux savoir si c'est un des boutons de la liste ?

  • Partager sur Facebook
  • Partager sur Twitter
9 mai 2019 à 13:39:26

@Stormweaker, je trouve que t'es un peu dur avec @JK.131LaWLiET, qui a plus que copier-coller mon code (et plutôt malheureusement car cela a introduit des erreurs supplémentaires).

(Je sais, venant de l'énervé de ce forum, c'est un peu l'hôpital qui se fout de la charité. :-° )

Mais les questions que pose @Stormweaker sont très pertinentes.

> il n'arrivait pas à comprendre le "sender = buttons(i)" alors je l'ai changé en "sender Is buttons(i)"

Ce n'est pas parce que le compilateur ne t'engueule plus que le code est correct. Il faut comprendre les messages du compilateur, qui est ton ami, pas ton ennemi.

"Is", c'est pour comparer des types de variables, pas les variables elles-mêmes. C'est donc une très mauvaise idée.

Le plus probable avec le code initial (avec le "="), c'est que le compilateur indiquait que "sender" est de type "Object" et que "button(i)" est de type "Button". Il faut juste indiquer au compilateur de convertir le "sender" en "Button" via l'opérateur "TryCast".

https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/operators/trycast-operator

Après conversion, vous pourrez faire la comparaison avec "=".

>ça ne serait pas à cause des mauvais emplacements des boucles

Oui, un peu beaucoup. ;)

cf. les questions de @Stormweake.

>j'ai changé quelques notations parce que j'avais du mal à comprendre

Pas de problème, c'est encore mieux de s'approprier le code.

>et les Width et Height voulaient pas être reconnu

Peut-être des effets de bord avec le fait que votre Form1 doit dériver de "Form", ce qui peut poser des problèmes, donc vos noms sont au moins aussi bien que les miens.

Remarques rapides sur votre code :

"vlt" n'a pas à être un champ de votre classe "Form1", c'est une variable LOCALE au traitement des clics sur les boutons, donc en faire un champ est une grosse erreur (jusqu'à preuve du contraire :-°).

Votre première boucle n'a rien à faire dans le "Form_Load" car elle sert pour le traitement des clics sur les boutons.

C'est donc dans une méthode type "Private Sub Buttons_Click(sender As Object, e As EventArgs) ..." que doit intervenir la première boucle.

Le "Break" dans la boucle n'est pas facultatif ni seulement une histoire de performance.

Pour "Form_Load", pensez à initialiser le contenu de "gameplaygrid".

Pour la seconde boucle, vous pouvez la laisser dans le "Private Sub Buttons_Click(sender As Object, e As EventArgs) ..." de la première boucle, mais il n'y a pas à faire un test sur la valeur de "sender" car c'est tous les boutons qu'il faut mettre à jour et affecter systématiquement  la valeur de gameplaygrid(i) à la propriété "Text" de "button(i)".

Vous pouvez, pour un gain de performance hypothétique mettre la seconde boucle dans un "If" sur "vlt<>-1" car l'affichage ne change qu'en cas de changement dans "gameplaygrid".

  • Partager sur Facebook
  • Partager sur Twitter
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
13 mai 2019 à 11:27:30

>@Stormweaker, je trouve que t'es un peu dur avec @JK.131LaWLiET, qui a plus que copier-coller mon code (et plutôt malheureusement car cela a introduit des erreurs supplémentaires).

Ha oui en effet en relisant le ton est sec désolé, mais c'est pas ce que je voulais dire, j'avais justement envie d'aider OP comme on voit qu'il travaille.

Ce que je voulais dire était plus dans le sens de prendre du recul sur le problème et guider dans la bonne direction.

Comme disait mon prof de maths, il faut retirer le nez du tableau pour trouver la solution :)

  • Partager sur Facebook
  • Partager sur Twitter