Apprendre le développement avec CodinGame

Apprendre le développement avec CodinGame

Écrit le 13-09-2023

par Damien Brebion

C’est quoi CodinGame ?

CodinGame est une plateforme gratuite qui vous permet de jouer à une multitude de jeux dans le but de vous améliorer avec la programmation, la performance et la création d’algorithme en vous motivant avec un système de compétition.

Ce site possède une très grande communauté de développeurs qui participent activement à la création de contenu, comme des jeux ou des tutoriels.

Je dirais que la plus grande force de CodinGame est son aspect compétitif. En plus d’avoir un classement sur base de vos codes réalisés qui sera continuellement mis en revue par d’autres développeurs, votre profil vous permet de consulter votre niveau, défis et succès réalisés. Chaque jeu possède des défis personnalisés qui seront plus ou moins difficiles et vous rapportera de l’expérience. Concernant les succès, ceux-ci témoignent de vos efforts et vous permettent d’obtenir des certifications !

Les types de jeux

Actuellement, il existe 6 types de jeux qui ont tous un but bien précis.

Solo > Puzzles

Résolvez des énigmes complexes sur base d’un contexte et des données fournies. Vous devrez par exemple crypter des données, afficher un style de texte bien précis, optimiser vos déplacements dans un jeu, trouver la sortie d’un labyrinthe, …

Il existe 4 catégories de puzzles : Facile, Moyen, Difficile, Très difficile.

Certaines de ses puzzles vous permettront de sortir de votre zone de confort en apprenant de nouveaux algorithmes et réfléchir à l’optimisation de votre code.

Solo > Taille de code

Ce jeu reprend le concept des puzzles, mais en ajoutant la difficulté qu’il faut avoir le code le plus court possible.

Solo > Optimisation

Ce jeu reprend le concept des puzzles, mais votre but est d’optimiser un maximum votre code, en fonction de votre résultat, vous monterez dans le classement général.

Multi > Clash Of Code

Clash Of Code est un mode de jeu multijoueur très prisé par la communauté CodinGame. Celui-ci proposera un même puzzle à tous les joueurs en cours et vous devrez le résoudre le plus rapidement possible. À la fin, vous pourrez également regarder le code des autres joueurs pour vous améliorer.

Multi > Combat de bots

Combat de bots est un jeu ou le but est de développer un algorithme qui va automatiser les actions d’un bot. Votre bot sera ensuite mis à l’épreuve par un autre bot et s’il gagne le combat, il se battra automatiquement contre les bots des autres joueurs. Votre classement évoluera en fonction de votre résultat.

Utiliser ce jeu pour apprendre les réseaux de neurones et l’amélioration d’algorithme !

Multi > Coding Escape

Coding Escape est le dernier jeu développé par CodinGame. Celui-ci reprend le concept d’Escape Game. Il est recommandé de faire ce mode de jeu avec des amis. De plus, d’après eux, ce jeu peu être réalisé par des développeurs, mais aussi des personnes qui n’ont aucune connaissance dans le développement. Ce jeu vous permettra de progresser en équipe sur la programmation, la créativité et la résolution d’énigme.

Exemple

Voici un exemple d’un des premiers puzzles recommandé qui se nomme Power of Thor.

Contexte

Votre programme doit permettre à Thor de rejoindre l'éclair de puissance.

Thor évolue sur une carte de 40 cases de large et 18 cases de hauteur. Notez que les coordonnées (X et Y) commencent en partant du haut ! Ainsi la case la plus en haut à gauche a pour coordonnées "X=0,Y=0" et celle située le plus en bas à droite a pour coordonnées "X=39,Y=17".

Vous avez ensuite des exemples de données en entrées et ce qu’elles représentes.

Code de base

    class Player
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            int lightX = int.Parse(inputs[0]); // the X position of the light of power
            int lightY = int.Parse(inputs[1]); // the Y position of the light of power
            int initialTx = int.Parse(inputs[2]); // Thor's starting X position
            int initialTy = int.Parse(inputs[3]); // Thor's starting Y position

            // game loop
            while (true)
            {
                int remainingTurns = int.Parse(Console.ReadLine()); // The remaining amount of turns Thor can move. Do not remove this line.

                // Write an action using Console.WriteLine()
                // To debug: Console.Error.WriteLine("Debug messages...");

                // A single line providing the move to be made: N NE E SE S SW W or NW
                Console.WriteLine("S");
            }
        }
    }

Résultat final

    class Player
    {
        static void Main(string[] args)
        {
            string[] inputs = Console.ReadLine().Split(' ');
            int lightX = int.Parse(inputs[0]); // the X position of the light of power
            int lightY = int.Parse(inputs[1]); // the Y position of the light of power
            int initialTx = int.Parse(inputs[2]); // Thor's starting X position
            int initialTy = int.Parse(inputs[3]); // Thor's starting Y position

            int thorX = initialTx;
            int thorY = initialTy;

            // game loop
            while (true)
            {
                int remainingTurns = int.Parse(Console.ReadLine()); // The remaining amount of turns Thor can move. Do not remove this line.

                // Write an action using Console.WriteLine()
                // To debug: Console.Error.WriteLine("Debug messages...");
                var xDist = lightX - thorX;
                var yDist = lightY - thorY;

                Console.Error.WriteLine("X Dist " + xDist);
                Console.Error.WriteLine("Y Dist " + yDist);

                var xIndex = CheckNumberDirection(xDist);
                var yIndex = CheckNumberDirection(yDist);
                var xPos = new string[] { "W", "", "E" };
                var yPos = new string[] { "N", "", "S" };
                thorX += xIndex;
                thorY += yIndex;

                // A single line providing the move to be made: N NE E SE S SW W or NW
                Console.WriteLine(yPos[yIndex + 1] + xPos[xIndex + 1]);
            }
        }

        private static int CheckNumberDirection(int number)
        {
            if (number < 0)
            {
                return -1;
            }
            else if (number == 0)
            {
                return 0;
            }
            
            return 1;
        }
    }

Conclusion

Pour conclure, je dirais que CodinGame est très intéressant et addictif. Après quelques jours d’utilisation, j’ai déjà appris certaines optimisations de code et comment traiter des informations binaires plus facilement.

Ils proposent également des outils pour partager vos connaissances ou encore de permettre aux entreprises de réaliser des entretiens sur leur application. De mon point de vue, CodinGame pourrait être comparé à une boîte à outils ou vous pourrez trouver un peu de tout pour vous améliorer ou juste apprendre la programmation en s’amusant !

N’hésitez pas à essayer ce site en créant un compte avec mon lien de parrainage.