Ces 5 jeux Python vous apprennent plus rapidement que n'importe quel cours CompSci


Apprendre Python à partir de conférences et de manuels fonctionne pour certains, mais je sais à quel point il est difficile d'apprendre de cette façon. Lorsque vous pouvez réellement mettre vos connaissances à profit dans un jeu, il est beaucoup plus facile d’apprendre. La plupart des cours CS vous familiarisent avec la syntaxe et vous posent des problèmes comportant une réponse claire et une note attachée. Cependant, il est plus amusant d'accéder à des jeux Python qui vous mettent dans des situations où le code fonctionne ou visiblement ne fonctionne pas, et les commentaires arrivent assez rapidement pour que vous en appreniez réellement quelque chose.

Bannière de retour à l'école How-To Geek.

CodinGame vous montre comment fonctionne votre code en temps réel

Faire face à de vrais joueurs permet aux concepts de coller beaucoup plus rapidement

CodinGame montrant les défenses écrasant les ennemis Crédit : Jorge Aguilar / How-To Geek

CodinGame est une plate-forme basée sur un navigateur où les étudiants en informatique peuvent pratiquer du vrai code Python pour contrôler des personnages animés, naviguer dans des labyrinthes ou créer des robots IA qui affrontent les scripts d'autres joueurs. Au lieu d'exécuter des exercices de code isolés, la plateforme connecte votre programme à un moteur de jeu via des flux d'entrée/sortie standard.

Le jeu alimente votre script en fonction de l'état actuel du jeu, votre code détermine le prochain mouvement dans un délai serré et le résultat apparaît instantanément sous forme de mise à jour visuelle à l'écran. Cette boucle de rétroaction rapide est ce qui fait finalement cliquer les éléments abstraits.

Il faut réellement utiliser les concepts informatiques pour rester compétitif. Naviguer sur les cartes et déjouer les adversaires signifie que vous avez besoin de véritables algorithmes d’orientation au lieu d’une compréhension superficielle de ceux-ci. La traversée d'arbres cesse d'être un sujet de manuel lorsque vous l'utilisez pour connecter des ressources dispersées sur une carte de jeu ou pour planifier plusieurs mouvements dans un délai strict.

Les algorithmes de tri suivent le même schéma, puisque vous devez classer les cibles par distance ou par valeur de ressource au milieu d'un match, et vous arrêtez de les considérer comme quelque chose que vous avez mémorisé pour un examen. Évidemment, c'est une excellente idée d'affronter de vrais adversaires au lieu d'obtenir une note sur papier.

Obtenir un A ne signifie pas réellement que vous savez écrire du code, mais simplement que vous pouvez régurgiter des informations. Avec CodinGame, vous savez comment vous vous débrouillez contre les autres.

CheckiO utilise des îles flottantes et des puzzles pour vous apprendre

Vous apprenez beaucoup en regardant comment d’autres personnes ont résolu les problèmes

CheckiO demande son premier morceau de gameplay Crédit : Jorge Aguilar / How-To Geek

CheckiO est un site et un programme de codage basés sur des cartes. Il s’agit d’un océan numérique parsemé d’îles flottantes, chacune détenant un ensemble de missions de codage. Pour débloquer de nouvelles îles, vous devez résoudre des énigmes de plus en plus difficiles. J'ai déjà vu cela à l'école de mon fils ; c'est ainsi que de nombreux programmes d'apprentissage fonctionnent actuellement.

Il gère les problèmes de syntaxe de base jusqu'aux problèmes plus difficiles avec la manipulation matricielle, l'analyse et les algorithmes. Il s'agit de véritables fonctions Python qui s'exécutent dans un bac à sable basé sur un navigateur, et la plateforme les teste par rapport à une suite de cas de test pour s'assurer que votre solution fonctionne avant de vous laisser passer à autre chose.

La partie la plus intéressante entre en jeu juste après avoir résolu quelque chose. Lorsque vous êtes déterminé à avoir raison, CheckiO vous montre comment tout le monde a résolu le même défi. Vous pouvez parcourir de vraies solutions proposées par d'autres développeurs, y compris une section « choix de l'éditeur » qui met en évidence des approches particulièrement claires ou intelligentes.

Vous pouvez filtrer par différentes catégories, suivre les développeurs dont vous aimez le style et ajouter aux favoris les solutions que vous souhaitez revisiter. Un travail solitaire à travers des exercices de codage finit par ressembler davantage à une révision de code communautaire. C'est dans cette révision post-résolution que CheckiO fait quelque chose que la plupart des cours CS ne font pas, car si votre code fonctionne sur un cours régulier, vous n'obtenez généralement aucune révision à ce sujet.

Elevator Saga vous permet de gérer la planification en temps réel

Regarder les statistiques en direct vous aide à corriger votre logique à la volée

Elevator Saga montrant le code Crédit : Jorge Aguilar / How-To Geek

La saga des ascenseurs est un jeu de réflexion sur navigateur qui convient étonnamment bien aux étudiants en informatique qui tentent de se familiariser avec l'ingénierie des systèmes et la planification en temps réel. Vous écrivez du code qui contrôle un ensemble d’ascenseurs dans un bâtiment et votre travail consiste à déplacer les passagers aussi efficacement que possible.

Vous devez réduire les temps d’attente, vous assurer que personne ne soit bloqué et maintenir l’ensemble du système en mouvement. Au lieu d'obtenir un score, le jeu vous affiche des statistiques en direct pendant l'exécution de la simulation. Vous pouvez voir des éléments tels que la fréquence à laquelle les ascenseurs restent inactifs, le nombre de passagers qui passent et combien de temps les gens attendent. Ainsi, vous pouvez réellement regarder votre logique se dérouler en temps réel.

Le jeu s'exécute nativement en JavaScript dans le navigateur, mais les principaux problèmes qu'il vous pose sont assez indépendants du langage. Vous pouvez également utiliser des frameworks open source comme ascenseur-py pour écrire votre logique de contrôle en Python à la place. Cette configuration exécute un backend Python local qui communique avec la simulation via des ports de bouclage, vous résolvez donc les mêmes problèmes, uniquement avec la syntaxe Python.

La simulation s'exécute sur une boucle asynchrone à thread unique et votre code ne fait quoi que ce soit lorsque des événements se déclenchent. Cela inclut des événements tels qu'un ascenseur qui tourne au ralenti, un passager appuyant sur un bouton d'étage à l'intérieur de la voiture ou l'ascenseur s'approchant d'un étage auquel il pourrait vouloir s'arrêter. Vous devez également gérer des événements au niveau de l'étage, comme un passager appuyant sur le bouton haut ou bas pour appeler un ascenseur. Si vous essayez de faire quelque chose comme exécuter une boucle while infinie, vous bloquerez le thread du navigateur et planterez toute la simulation.

CodeCombat transforme la saisie standard en un robot d'exploration de donjon

Vous apprenez des concepts orientés objet tout en préparant votre héros

CodeCombat choisit un héros Crédit : Jorge Aguilar / How-To Geek

CodeCombat est conçu pour les étudiants qui franchissent le pas des outils de codage par glisser-déposer, comme Gratterpour taper du vrai code. Au lieu de déplacer des blocs, vous écrivez Python directement dans un éditeur basé sur un navigateur, et ce code contrôle votre héros dans un donjon fantastique.

Si vous voulez que votre personnage se déplace vers la droite, évite les pointes ou attaque un ennemi, vous devez écrire la commande. Si votre code fonctionne, votre héros fait exactement ce que vous lui avez demandé. Si quelque chose ne va pas, le jeu s'arrête, votre personnage se fige et vous recevez un message d'erreur qui vous aide à comprendre ce qui ne va pas. Cela ressemble plus à résoudre un casse-tête qu’à étudier.

Le jeu commence simple et semble enfantin, mais ne vous laissez pas tromper. Au début, vous écrivez des instructions de base comme hero.moveRight() et définir des variables simples. Mais à mesure que vous terminez le premier donjon et que vous avancez vers les mondes ultérieurs, les roues d'entraînement se détachent.

Le programme s'oriente vers la programmation orientée objet. Votre héros devient un objet avec ses propres statistiques et propriétés, et les armes, armures et animaux de compagnie que vous achetez avec la monnaie du jeu ajoutent chacun de nouvelles méthodes auxquelles vous pouvez faire appel. Pour passer les niveaux les plus difficiles, vous devez commencer à écrire du code qui vérifie votre environnement, comme enemy = hero.findNearestEnemy()et transmet des arguments spécifiques aux méthodes.

Ce qui ressemble à un jeu vidéo regroupe de nombreux concepts, et c'est pourquoi cela fonctionne si bien.

Screeps continue d'exécuter votre code 24 heures sur 24

De petits bugs peuvent rapidement détruire toute votre base

Screeps : Monde est un jeu dans lequel toute votre colonie fonctionne avec du code que vous écrivez vous-même. Celui-ci est le seul qui coûte de l’argent au démarrage, mais il en vaut la peine.

Vous êtes censé écrire des scripts qui s'exécutent en continu, 24 heures sur 24, dans un monde en ligne persistant partagé avec des milliers d'autres joueurs faisant la même chose. Votre colonie doit récolter des ressources, construire des structures, gérer la logistique, commercer sur un marché mondial et se défendre, le tout sans que vous lui donniez commandement après commandement.

Bien que Screeps utilise JavaScript de manière native (comme indiqué dans l'extrait de code ci-dessous), vous pouvez également compiler Python en JavaScript à l'aide d'outils comme Transcrypt si vous souhaitez l'utiliser pour générer votre premier moissonneur :

Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, MOVE], 'Harvester1');

Utilisez-le pour amener votre travailleur à faire le travail. Assurez-vous de remplacer « Spawn1 » et « Harvester1 » par le nom que vous avez donné à votre Spawn et Harvester. J'ai juste utilisé les noms par défaut dans ces exemples :

module.exports.loop = function () {
    let creep = Game.creeps['Harvester1'];

    if (creep) {
        if (creep.store.getFreeCapacity() > 0) site else blog
    }
};

Le jeu continue d'avancer, que vous soyez à votre bureau, endormi ou en promenade. Étant donné que votre code ne s'arrête jamais, vous ne pouvez pas compter sur des solutions rapides ou des raccourcis qui ne fonctionnent que lorsque quelqu'un vous regarde. Un cas de pointe manqué dans votre logique d'orientation ou une fuite de mémoire que vous n'avez pas détectée gèlera vos unités en milieu de partie et laissera toute votre base ouverte à l'effondrement des ressources ou à une attaque d'un voisin qui a écrit un meilleur code que vous.

Le jeu donne à chaque joueur un budget CPU par tick de jeu, mesuré en millisecondes. Parcourez-le et votre script est immédiatement interrompu. Donc, tout ce qui n'a pas encore été exécuté, y compris vos défenses ou vos commandes d'apparition, ne se produit pas pendant ce cycle.

En plus de cela, rien ne se transmet d'un tick à l'autre, vous devez donc apprendre à sérialiser et stocker manuellement l'état de votre empire. Le jeu vous offre un plafond d'objets mémoire, qui vous pousse à écrire une gestion JSON stricte ou à lancer votre propre sérialisation binaire si vous souhaitez éviter de brûler le processeur simplement en enregistrant des données.


Essayez ces jeux

Aucun de ces éléments ne remplace un solide programme d'informatique, et ce n'est pas ce qu'ils essaient de faire. Quelques-uns d'entre eux ont des aspérités, et Screeps en particulier sera frustrant avant de vous apprendre quoi que ce soit. Néanmoins, cela vaut la peine de jouer avec, car ils vous permettent de tester vos compétences en logique et en codage avant que quoi que ce soit ne se produise réellement.



Vous pouvez lire l’article original (en Angais) sur le {site|blog}www.howtogeek.com