La méthode dans le class Program soulignée en rouge

Fermé
Utilisateur anonyme - Modifié le 30 juil. 2022 à 18:14
 Utilisateur anonyme - 2 août 2022 à 07:38

Bonjour,

j'ai fait un méthode BOOL  portant un nom "ValidateAndMove"avec un parametre qui contient 3 type de données . 

L'erreur ne s'affiche pas dans le methode mais il s'affiche dans le console.  c'est à dire quand je tape Console.WiteLine (ValidateAndMove(playerPositions[0],1," ")); le resultat est souligné en rouge

Que faire??

code : 

static bool ValidateAndMove(int[] playerPositions, int currentPlayer, string input){
input = Console.ReadLine();
playerPositions = new  int[]{1,2,3};
bool valid = false;
switch (input) {
case "1":
currentPlayer = playerPositions[0];
break;
case "2":
currentPlayer = playerPositions[1];
break;
case "3":
currentPlayer = playerPositions[2];
break;              
case "":
case "quit":
valid = true;
break;
default:
Console.WriteLine("\nERROR:  Enter a value from 1-3. "  + "Push ENTER to quit");
break;
}
 Console.WriteLine(input);
return valid;

}

 static void Main(string[] args) {

ValidateAndMove(playerPositions[0],1," "); //error

}

Windows / Edge 103.0.1264.77

10 réponses

Utilisateur anonyme
30 juil. 2022 à 18:30

Bonjour 

pour tes prochains messages, merci de lire ceci https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Parmi les avantages, il y a l'indentation, et dans ton cas, j'ai tenté de corriger ton message mais l'indentation s'est perdue en route. A moins que tu l'aies supprimée toi-même...

Cela rend ton code plus difficile à lire et donc diminue tes chances d'obtenir une aide efficace.

Pour ton problème à proprement parlé, avec la ligne soulignée en rouge, il doit y avoir au moins un message d'erreur.

L'as tu lu? Si oui qu'en as tu compris? Si pas assez pour corriger toi-même cette erreur peux tu le copier coller ici pour qu'on en parle.


0
Utilisateur anonyme
30 juil. 2022 à 19:17
static void Main(string[] args){
ValidateAndMove(playerPositions[0],1,""); //erreur
}

static bool ValidateAndMove(int[] playerPositions, int currentPlayer, string input){
input = Console.ReadLine();
playerPositions = new  int[]{1,2,3};
bool valid = false;
switch (input){
case "1":
currentPlayer = playerPositions[0];
break;
case "2":
currentPlayer = playerPositions[1];
break;
case "3":
 currentPlayer = playerPositions[2];
break;              
case "":
case "quit":
valid = true;
break;
default:
System.Console.WriteLine("\nERROR:  Enter a value from 1-3. "+ "Push ENTER to quit");
break;
}
return valid;
}
0

je doute que le tableau "int [ ] PlayerPositions" a fait un obstacle.
Il est possible de le remplacer par un type de donné "int"


 

0
Utilisateur anonyme
31 juil. 2022 à 11:47

Tu proposes de remplacer un tableau de int par un int.

Mais pourquoi faire?

Que comptais tu faire avec ce tableau, que tu pourrais aussi faire avec un "simple" int ?


0

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

Posez votre question
Utilisateur anonyme
Modifié le 1 août 2022 à 21:51

J'ai essayé de changer le tableau int en int simple mais ca pas marché. int simple pour assigner une valeur aux deux variables "CurrentPlayer = PlayerPositions[0]" mais ça pas marché. à mon avis, j'ai mis le tableau int entre les accolades. Le parametre du méthode Boolean contient deux arguments.

dans le resultat , tapez  de 1 à 3 pour voir la position et la disponibilite du joueur. Puis une autre entrée s'affiche une autre fois, tapez n'importe quel bouton pour quitter.

Le code :

 class Program{
static void Main(string[] args){
bool a = true;
while (a == ValidateAndMove(0, "")){ }
}
static bool ValidateAndMove(int currentPlayer, string input) {
Console.WriteLine("enter a number : from 1 to 3 , press on any button to leave ");
int[] playerPositions = new int[3] { 1, 2, 3 };
input = Console.ReadLine();
bool valid = !false;
switch (input){
case "1":
currentPlayer = 1;
Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[0], currentPlayer);
break;
case "2":
currentPlayer = 2;
Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[1], currentPlayer);
break;
case "3":
currentPlayer = 3;
playerPositions[2] = currentPlayer;
Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[2], currentPlayer);
break;
default:
valid = false;
break;
}
return valid;
            }
        }
    } 
0
Utilisateur anonyme
1 août 2022 à 21:29

Je veux bien essayer de t'aider mais 

  • tu ne réponds pas à mes questions 
  • je ne comprends rien à ce que tu racontes

  • comme tu ne fais aucun effort avec l'indentation, je n'arrive pas bien à lire ton code.

Bref tu ne me donnes rien pour que je puisse tenter de t'aider...

Merci donc, d'expliquer le plus clairement possible ce que ton code est sensé faire et de l'indenter correctement (si tu utilises Visual Studio, il suffit de supprimer la toute dernière accolade fermante et de la retaper)


0
Utilisateur anonyme
Modifié le 1 août 2022 à 22:36

j'ai déja repondu à ta question et j'ai dit que je veux essayer d'utiliser tableau int comme étant la position du joueur  et puis le int simple en tant que joueur  disponible. j'ai assigné une  valeure au int simple "Current Player" dans les 3 cases puis je l'ai affiché sur la console

dans le resultat , tapez  de 1 à 3 pour voir la position et la disponibilite du joueur. Puis une autre entrée s'affiche une autre fois, tapez n'importe quel bouton pour quitter.

 class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            while (a == ValidateAndMove(0, ""))
            {

            }
        }
            static bool ValidateAndMove(int currentPlayer, string input) {
                Console.WriteLine("enter a number : 1 --- 3 / press on any button to leave ");
                int[] playerPositions = new int[3] { 1, 2, 3 };
                input = Console.ReadLine();
                bool valid = !false;
                switch (input)
                {
                    case "1":
                        currentPlayer = 1;
                        Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[0], currentPlayer);
                        break;
                    case "2":
                        currentPlayer = 2;
                        Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[1], currentPlayer);
                        break;
                    case "3":
                        currentPlayer = 3;                        
                       Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[2], currentPlayer);
                        break;
                    default:
                        valid = false;
                        break;
                }
                return valid;
            }
        }
    
0
Utilisateur anonyme
Modifié le 1 août 2022 à 22:46

Merci pour l'indentation, en prime pourras tu sélectionner C++ à la place de C#. La coloration C# ne marche pas bien pour l'instant.

je ne comprends toujours pas ce que tu veux dire par

j'ai dit que je veux essayer d'utiliser tableau int comme étant la position du joueur  et puis le int simple en tant que joueur  disponible

La position du joueur par rapport à quoi?

Un joueur disponible c'est quoi ? Un remplaçant ?

C'est quoi le but de ce code ? Et quand je te demande son but c'est pas la solution technique que tu crois devoirs mettre en œuvre, mais plus ou moins la règle du jeu (ou la partie de règle) que doit gérer ce code.

Et enfin, c'est un programme console, il n'y a pas de bouton dans ce mode, c'est les environnements fenêtrés qui peuvent proposer des boutons. Donc qu'appelles tu un bouton?


0
Utilisateur anonyme
Modifié le 1 août 2022 à 23:26

La position du joueur par rapport au classement. Un joueur disponible c'est le numero du joueur inscrit dans le jeu. C'est pourquoi quand j'écris 1 directement le classment du joueur s'affiche avec le numero du joueur inscrit. :)

Le but c'est de vérifier le numéro du joueur avec le classement

 class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            while (a == ValidateAndMove(0, ""))
            {

            }
        }
            static bool ValidateAndMove(int currentPlayer, string input) {
                Console.WriteLine("enter a number : 1 --- 3 / press on any button to leave");
                int[] playerPositions = new int[3] { 1, 2, 3 };
                input = Console.ReadLine();
                bool valid = !false;
                switch (input)
                {
                    case "1":
                        currentPlayer = 1;
                        Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[0], currentPlayer);
                        break;
                    case "2":
                        currentPlayer = 2;
                        Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[1], currentPlayer);
                        break;
                    case "3":
                        currentPlayer = 3;
                        
                        Console.WriteLine("player position : {0} \t current player : {0}", playerPositions[2], currentPlayer);
                        break;
                    default:
                        valid = false;
                        break;
                }
                return valid;
            }
        }
0
Utilisateur anonyme
2 août 2022 à 07:38

Il faut vraiment que tu prennes en compte que ce qui est évident pour toi, parce que tu connais tout le contexte de ton projet, ne l'est pas pour moi car je ne connais que ce que je lis.

Et je ne vois aucun rapport entre le code que tu postes et la description de ce que c'est sensé faire.

Donc pour la dernière fois (après j'abandonne) peux tu décrire clairement et exhaustivement ce que doit faire ton code.


0