{"id":117,"date":"2020-05-10T13:29:15","date_gmt":"2020-05-10T11:29:15","guid":{"rendered":"https:\/\/tutos.jusdeliens.com\/?p=117"},"modified":"2020-05-10T13:29:15","modified_gmt":"2020-05-10T11:29:15","slug":"piloter-votre-agent-pytactx-avec-une-manette-en-html","status":"publish","type":"post","link":"https:\/\/tutos.jusdeliens.com\/index.php\/2020\/05\/10\/piloter-votre-agent-pytactx-avec-une-manette-en-html\/","title":{"rendered":"Un drone en HTML\/CSS\/JS \ud83c\udfae"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Vous souhaitez acqu\u00e9rir des comp\u00e9tences en d\u00e9veloppement web ou comprendre comment un site web fonctionne ? Dans ce tutoriel, nous allons voir ensemble comment cr\u00e9er une manette de jeu pour piloter les actions de votre agent gladiateur dans une ar\u00e8ne de jeu TactX, le tout en utilisant les langages html, javascript et css !<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-background wp-block-paragraph\" style=\"background-color:#fdebb9\">\ud83d\ude80 <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#dca306\" class=\"has-inline-color\">Coming soon<\/mark><\/strong> <br>Ce tutoriel utilise l&#8217;ancien moteur PytactX qui est aujourd&#8217;hui d\u00e9pr\u00e9ci\u00e9. Une nouvelle version sera bient\u00f4t disponible pour vous permettre de cr\u00e9er votre agent sur <a href=\"https:\/\/play.jusdeliens.com\" target=\"_blank\" rel=\"noreferrer noopener\">play.jusdeliens.com<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u2699\ufe0f Pr\u00e9requis<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Un ordinateur sous Windows 10 <\/li><li>Un navigateur web :<ul><li>Google Chrome : t\u00e9l\u00e9chargeable <a href=\"https:\/\/www.google.com\/chrome\/\">en cliquant ici<\/a><\/li><li>ou Mozilla Firefox : t\u00e9l\u00e9chargeable <a href=\"https:\/\/www.mozilla.org\/fr\/firefox\/new\/\">en cliquant ici<\/a><\/li><\/ul><\/li><li>Un \u00e9diteur de texte : <ul><li>Bloc-notes : l&#8217;\u00e9diteur install\u00e9 par d\u00e9faut pour ceux qui ne souhaitent ou ne peuvent rien installer<\/li><li>ou Notepad ++ : un \u00e9diteur l\u00e9ger mais puissant, t\u00e9l\u00e9chargeable <a href=\"https:\/\/github.com\/notepad-plus-plus\/notepad-plus-plus\/releases\/download\/v7.8.6\/npp.7.8.6.Installer.exe\">en cliquant ici<\/a><\/li><\/ul><\/li><li>Quelques connaissances th\u00e9oriques sur le web<\/li><li>De la patience et une volont\u00e9 de fer pour vaincre vos ennemis !  <\/li><\/ul>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Voici quelques courtes vid\u00e9os de 5 minutes que nous vous recommandons pour comprendre :  <br><a href=\"https:\/\/ressources.numeres.net\/id-58\">Ce qu&#8217;est le web et comment il permet d&#8217;acc\u00e9der \u00e0 des sites web<\/a><br><a href=\"https:\/\/vimeo.com\/138623558\">Le mod\u00e8le client-serveur<\/a><br><a href=\"https:\/\/vimeo.com\/138623678\">Ce qu&#8217;il se passe quand vous tapez un url dans votre navigateur<\/a><br><a href=\"https:\/\/vimeo.com\/138623721\">Comment une page web est structur\u00e9e en html<\/a><br><a href=\"https:\/\/vimeo.com\/138623826\">Comment une page web est mise en forme en css<\/a><\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">N\u2019h\u00e9sitez pas \u00e0 nous contacter <a href=\"https:\/\/jusdeliens.com\/contact\/\">ici<\/a> pour toutes questions sur les notions de Web. A votre disposition si vous souhaitez aussi des formations ou cours particuliers adapt\u00e9s \u00e0 vos besoins \ud83d\ude09 <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udeaa R\u00e9cup\u00e9ration de vos identifiants de connexion \u00e0 une ar\u00e8ne de jeu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Si vous n&#8217;avez pas encore d&#8217;identifiants<\/strong>, pour jouer gratuitement rien de plus simple, rendez vous sur <a href=\"https:\/\/jusdeliens.com\/ideal-free\/\">jusdeliens.com\/ideal-free\/<\/a> et renseignez votre Pr\u00e9nom, Nom et Email. Vous recevrez vos identifiants gratuitement sous 48h. Une fois re\u00e7us par mail, \u00e0 vos claviers et neurones, on commence en cr\u00e9ant votre manette ! <\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">L&#8217;acc\u00e8s aux ar\u00e8nes publiques est enti\u00e8rement gratuit mais limit\u00e9. Elles sont ouvertes \u00e0 l&#8217;occasion d&#8217;affrontements ou de formations jusdeliens dont les dates vous seront communiqu\u00e9es via la newsletter (\ud83d\udc49<a rel=\"noreferrer noopener\" href=\"https:\/\/jusdeliens.com\/newsletter-challenges\/\" target=\"_blank\">par ici pour vous abonner<\/a>).  <br>Si vous souhaitez vous connecter \u00e0 une ar\u00e8ne priv\u00e9e, uniquement accessible \u00e0 ceux \u00e0 qui vous communiquerez son nom, vous pouvez <a href=\"https:\/\/jusdeliens.com\/ideal-tarifs\/\">cr\u00e9er votre propre ar\u00e8ne<\/a> ouverte 24h\/24, 7 jours sur 7 et accessible dans le monde entier avec IDEAL ARENA. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfae Cr\u00e9ation de votre manette de jeu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notre objectif est de cr\u00e9er une page web, sur laquelle nous pourrons visualiser l&#8217;ar\u00e8ne de jeu TactX et notre agent, ainsi qu&#8217;une manette de jeu pour le contr\u00f4ler.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une page web est avant tout compos\u00e9e d&#8217;\u00e9l\u00e9ments graphiques permettant \u00e0 un utilisateur d\u2019interagir avec. Il peut s&#8217;agir par exemple de boutons, de texte, d&#8217;images ou de liens cliquables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans un premier temps, nous allons placer ces \u00e9l\u00e9ments graphiques sur notre page web, en d\u00e9crivant leur placement dans un fichier que nous allons \u00e9diter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">R\u00e9cup\u00e9ration des fichiers sources de votre page<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/jusdeliens-T%C3%A9l%C3%A9chargementDuProjetManettePytactX.gif\" alt=\"\" class=\"wp-image-136\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Commen\u00e7ons par cr\u00e9er notre dossier de travail, constitu\u00e9 de tous les fichiers n\u00e9cessaires pour cr\u00e9er notre page web. Pour cela, r\u00e9cup\u00e9rer le dossier compress\u00e9 du projet en remplissant le formulaire ci-dessous, puis cliquer sur le bouton &#8220;T\u00e9l\u00e9charger&#8221; :<\/p>\n\n\n<p>[wpforms id=&#8221;131&#8243; title=&#8221;false&#8221; description=&#8221;false&#8221;]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois t\u00e9l\u00e9charg\u00e9, dans votre dossier &#8220;t\u00e9l\u00e9chargements&#8221;, faites un clic droit pour extraire les fichiers du dossier compress\u00e9, puis double clic dans le dossier jusqu&#8217;\u00e0 apercevoir les fichiers du projet : <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-6.png\" alt=\"\" class=\"wp-image-160\"\/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>index.html<\/strong> : d\u00e9finit les \u00e9l\u00e9ments graphiques de votre page web et leurs emplacements. <em>Par exemple, si on veut ajouter un bouton, c&#8217;est ici qu&#8217;on le fera.<\/em><\/li><li><strong>style.css<\/strong> : contient la description de la mise en forme des \u00e9l\u00e9ments de la page. <em>Par exemple, si un texte doit appara\u00eetre en rouge sur la page, c&#8217;est ici qu&#8217;on le d\u00e9finira.<\/em><\/li><li><strong>script.js<\/strong> : contient les variables et fonctions \u00e0 ex\u00e9cuter pour effectuer des actions dynamiques sur la page. <em>Par exemple, si on veut afficher un message quand on clique sur un bouton, c&#8217;est ici qu&#8217;on \u00e9crira le programme correspondant.<\/em><\/li><li><strong>pytactx.js<\/strong> : ce fichier contient les variables et les fonctions pour vous permettre de cr\u00e9er et d&#8217;interagir avec votre agent dans l&#8217;ar\u00e8ne de jeu TactX. Nous en aurons besoin pour relier votre manette au jeu.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que nous avons les fichiers, <strong>ouvrons le fichier index.html<\/strong> avec notre navigateur web en <strong>double cliquant dessus<\/strong>. La page suivante devrait s&#8217;afficher :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-1-1024x540.png\" alt=\"\" class=\"wp-image-148\"\/><figcaption> L&#8217;ouverture du fichier index.html dans un navigateur (ici Google Chrome) affiche la page suivante \u00e0 l&#8217;\u00e9cran. Les rectangles en couleur sont rajout\u00e9s ici pour bien distinguer les diff\u00e9rentes divisions de la page.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Nous voyons apparaitre 3 \u00e9l\u00e9ments principaux :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>En haut de l&#8217;\u00e9cran (encadr\u00e9 en bleu)<\/strong> : Il s&#8217;agit du titre de la page<\/li><li><strong>En rouge et vert <\/strong>: Il s&#8217;agit du corps de la page. Ce corps est divis\u00e9 en 2 parties. <ul><li><strong>A gauche (encadr\u00e9 en rouge) <\/strong>: c&#8217;est l&#8217;interface pour acc\u00e9der et voir l&#8217;ar\u00e8ne du jeu. <\/li><li><strong>A droite (encadr\u00e9 en vert) <\/strong>: cette partie est vide, c&#8217;est ici que nous rajouterons le code pour afficher notre manette de jeu.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ajout des boutons pour interagir<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9ditons maintenant le fichier index.html pour comprendre comment la page est structur\u00e9e en html, et comment pouvons-nous la modifier. Pour cela 2 possibilit\u00e9s :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Pour ouvrir avec Bloc-Notes : faites clic droit sur le fichier index.html puis s\u00e9lectionner &#8220;Ouvrir avec&#8221;, puis &#8220;Choisir une autre application&#8221;, &#8220;Autres applications&#8221;, et enfin s\u00e9lectionner Bloc-Notes dans la liste<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/jusdeliens-ProjetManettePytactX-Editer-blocnotes-1.gif\" alt=\"\" class=\"wp-image-231\"\/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>Si vous avez install\u00e9 notepad++ (voir pr\u00e9requis), faites clic droit sur le fichier index.html puis s\u00e9lectionner &#8220;Editer avec Notepad++&#8221;<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-16.png\" alt=\"\" class=\"wp-image-214\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Structure du fichier index.html<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Comme expliqu\u00e9 dans les vid\u00e9os en pr\u00e9requis,  l&#8217;html est un langage descriptif qui permet par du texte d\u00e9limit\u00e9 par des balises, de d\u00e9crire la structure graphique d&#8217;une page.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-2-1024x388.png\" alt=\"\" class=\"wp-image-153\"\/><figcaption>Contenu du fichier index.html ouvert avec notepad++<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Comme tout fichier html, le code du fichier index.html est compris entre une balise ouvrante &lt;html&gt; et son homologue fermante &lt;\/html&gt;. Entre celles-ci, nous retrouvons <strong>l&#8217;ent\u00eate<\/strong> de la page (&#8220;head&#8221; en anglais) entre les balises &lt;head&gt; et &lt;\/head&gt;, puis le <strong>corps <\/strong>de la page (&#8220;body&#8221; en anglais) entre les balises &lt;body&gt; et &lt;\/body&gt;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;ent\u00eate comprends classiquement plusieurs balises, g\u00e9n\u00e9ralement non visibles par l&#8217;internaute:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>title <\/strong>: d\u00e9finit le titre de la page visible dans la barre en haut dans le navigateur<\/li><li><strong>meta <\/strong>: permet d&#8217;ajouter diff\u00e9rentes informations, comme l&#8217;encodage des caract\u00e8res de la page pour permettre les accents et caract\u00e8res sp\u00e9ciaux, les mots cl\u00e9s pour permettre aux moteurs de recherche de classer votre page, etc &#8230;<\/li><li><strong>link <\/strong>: permet d&#8217;inclure d&#8217;autres d\u00e9pendances, comme des fichiers .css contenant la mise en page des \u00e9l\u00e9ments du fichier <\/li><li><strong>script <\/strong>: permet d&#8217;inclure des fichiers javascripts utilis\u00e9s dans la page<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Le body contient lui tous les \u00e9l\u00e9ments qui seront visibles par l&#8217;internaute dans son navigateur.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>A quoi servent les \u00e9l\u00e9ments en vert commen\u00e7ant par &lt;!&#8211; ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Ce sont des blocs de commentaires. Ils commencent par &lt;!&#8211; et se termine par &#8211;&gt;. Ces blocs ne sont pas affich\u00e9s par le navigateur mais permettent au d\u00e9veloppeur de placer des indications dans un fichier html.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/html5.png\" alt=\"\" class=\"wp-image-237\"\/><\/figure><\/div>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">L&#8217;html n&#8217;est pas \u00e0 proprement parl\u00e9 un langage de programmation car il ne permet pas d&#8217;impl\u00e9menter des instructions, ni de variables, ni conditions, ni boucles qui sont les ingr\u00e9dients de base d&#8217;un programme. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Ah bon ? Ce n&#8217;est pas possible de faire un programme sur une page web ? <\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Ce n&#8217;est effectivement pas possible en html seul. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Alors comment faire pour cr\u00e9er mon agent et le d\u00e9placer si j&#8217;appuie sur un bouton ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Pour cela nous avons besoin d&#8217;un autre langage, le javascript !<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.softfluent.fr\/wp-content\/uploads\/2019\/10\/javascript.png\" alt=\"Enregistrer du son via le Microphone en JavaScript | SoftFluent\" width=\"300\" height=\"158\"\/><\/figure><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Euh ok, mais comment on relie tous ces langages entres-eux ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Dans notre fichier index.html. Voyons cela sans plus attendre.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Placement du bouton sur la page en html<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le fichier index.html, ne devons d\u00e9crire en html o\u00f9 se placera un bouton &#8220;Cr\u00e9er agent&#8221; \u00e0 l&#8217;\u00e9cran. Pour faire cela, ajoutons une balise &#8220;button&#8221; pour d\u00e9crire le bouton. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comme nous voulons rajoutez les \u00e9l\u00e9ments de notre manette \u00e0 droite de l&#8217;\u00e9cran, ins\u00e9rons la ligne suivante dans la division &#8220;manette&#8221; (le rectangle en vert) de notre page, entre <em>&lt;div id=&#8221;manette&#8221;&gt;<\/em> et <em>&lt;\/div&gt;<\/em> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;button onclick=\"\"&gt;Cr\u00e9er agent&lt;\/button&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrons le fichier (avec le raccourci CTRL+S), puis rechargeons notre page dans le navigateur (raccourci CTRL+R).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-8-1024x546.png\" alt=\"\" class=\"wp-image-166\"\/><figcaption> Le bouton &#8220;Cr\u00e9er agent&#8221; appara\u00eet dans la partie de droite de la page, centr\u00e9 en hauteur et en largeur. <\/figcaption><\/figure><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Rien ne se passe quand je clique sur &#8220;Cr\u00e9er agent&#8221;, c&#8217;est normal ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Absolument ! La ligne que nous avons rajouter dans le html ne fait qu&#8217;afficher le bouton. Pour d\u00e9clencher une action au clic souris, il nous faut associer l&#8217;\u00e9v\u00e8nement clic (attribut onclick du bouton) \u00e0 un programme. Voyons comment faire.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Programmer l&#8217;action du bouton en javascript<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Si l&#8217;utilisateur appuie sur le bouton, alors nous devons ex\u00e9cuter des  instructions \u00e9crites dans un autre langage, le javascript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En html, une balise peut contenir de nombreux attributs selon son type.  Pour le bouton, l&#8217;attribut &#8220;onclick&#8221; permet d\u2019ex\u00e9cuter des instructions javascript quand le bouton est cliqu\u00e9. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons alors appeler des fonctions du fichier pytactx.js pour nous permettre de cr\u00e9er notre agent et le connecter \u00e0 l&#8217;ar\u00e8ne. Pour cela, modifions la balise button de la mani\u00e8re suivante :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;button onclick=\"pytactx_connecter()\"&gt;Cr\u00e9er agent&lt;\/button&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrez les modifications (CTRL+S) puis rechargez la page dans le navigateur (CTRL+R). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Connectez-vous \u00e0 l&#8217;ar\u00e8ne dans l&#8217;interface de gauche, puis cliquez sur le bouton &#8220;Cr\u00e9er agent&#8221;. Une fen\u00eatre appara\u00eet. Rentrez-y le nom souhait\u00e9 de votre agent, puis le nom de l&#8217;ar\u00e8ne, l&#8217;identifiant et le mot de passe pour y acc\u00e9der. Vous devriez voir votre agent appara\u00eetre dans l&#8217;interface de gauche !<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/jusdeliens-ProjetManettePytactX-Boutons.gif\" alt=\"\" class=\"wp-image-205\"\/><figcaption>Ouvre la page index.html avec votre navigateur. Connectez vous \u00e0 l&#8217;ar\u00e8ne dans l&#8217;interface de gauche, puis cliquez sur le bouton &#8220;Cr\u00e9er agent&#8221; et renseignez vos identifiants. il devrait appara\u00eetre dans l&#8217;ar\u00e8ne ! Les autres boutons sont \u00e0 rajouter !<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Pour donner plus de fonctionnalit\u00e9s \u00e0 votre manette, voici toutes les autres fonctions disponibles (accessibles dans le fichier pytactx.js)<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-13.png\" alt=\"\" class=\"wp-image-191\"\/><figcaption>  Les fonctions en javascript permettant de faire agir l&#8217;agent dans l&#8217;ar\u00e8ne  <\/figcaption><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>pytactx_deplacer(dx, dy)<\/strong> : pour d\u00e9placer l&#8217;agent. dx et dy repr\u00e9sente le nombre de case de d\u00e9placement \u00e0 remplacer par un nombre. Si dx &lt; 0, l&#8217;agent ira \u00e0 gauche, si dx &gt; 0 il ira \u00e0 droite. Si dy &lt; 0, l&#8217;agent ira en haut, si dy &gt; 0 il ira en bas. <br><em>Exemple : pytactx_deplacer(-1, 0) d\u00e9placera l&#8217;agent d&#8217;une case vers la gauche et de 0 case en vertical.<\/em><\/li><li><strong>pytactx_orienter(direction)<\/strong> : pour orienter l&#8217;agent dans la direction sp\u00e9cifi\u00e9e. Remplacer direction par 0 pour regarder \u00e0 droite, 1 pour regarder en haut, 2 pour regarder \u00e0 gauche, 3 pour regarder en bas.<br><em>Exemple : apr\u00e8s pytactx_orienter(3), l&#8217;agent regarder vers le bas de l&#8217;ar\u00e8ne.<\/em><\/li><li><strong>pytactx_tirer (activer)<\/strong> : pour activer ou d\u00e9sactiver le tir en rafale en rempla\u00e7ant activer par un bool\u00e9en (soit <strong>true<\/strong>, soit <strong>false<\/strong>). Si activer \u00e9gale <strong>false<\/strong>, l&#8217;agent arr\u00eatera de tirer, sinon, l&#8217;agent tirera en rafale.<br><em>Exemple : apr\u00e8s un pytactx_tirer(true), l&#8217;agent tira en rafale plusieurs fois par seconde jusqu&#8217;\u00e0 ne plus avoir de munition ou jusqu&#8217;\u00e0 un pytactx_tirer(false)  <\/em><\/li><\/ul>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Comme en Python, les fonctions en javascript sont des sous-programmes pouvant prendre des param\u00e8tres en entr\u00e9e et pouvant renvoyer des param\u00e8tres en sortie. Dans tous les cas, pour appeler une fonction, il faut toujours rajouter les parenth\u00e8ses ouvrantes et fermantes apr\u00e8s le nom de la fonction.<br><em>Exemple : pytactx_connecter() ne prends ici aucun param\u00e8tre, il n&#8217;y a aucune variable entre les parenth\u00e8ses<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il ne vous reste plus qu&#8217;\u00e0 rajouter d&#8217;autres boutons dans votre fichier html en appelant les fonctions d&#8217;actions correspondantes !<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>des <strong>boutons &#8220;Gauche&#8221;, &#8220;Droite&#8221;, &#8220;Haut&#8221;, &#8220;Bas&#8221;<\/strong> : pour d\u00e9placer votre agent. Chacun de ces boutons doit appeler la fonction pytactx_deplacer(dx,dy) avec les dx,dy correspondant au d\u00e9placements correspondants.<\/li><li>Un <strong>bouton &#8220;Tirer&#8221;<\/strong> : pour activer le tir en rafale. L&#8217;\u00e9v\u00e8nement &#8220;onclick&#8221; doit appeler la fonction &#8220;pytactx_tirer(true)&#8221;<\/li><li>Un<strong> bouton &#8220;Stop&#8221;<\/strong> : pour arr\u00eater de tirer, en appelant la fonction &#8220;pytactx_tirer(false)&#8221;<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Voici \u00e0 quoi devrait ressembler votre page une fois enregistr\u00e9e et recharg\u00e9e dans le navigateur :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/2020-05-11-1024x624.png\" alt=\"\" class=\"wp-image-202\"\/><figcaption>Les boutons ajouter dans la div s&#8217;affichent de haut en bas automatiquement<\/figcaption><\/figure><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Euh, comment je fais pour ajouter d&#8217;autres boutons ? <\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">La ligne que nous avons ajout\u00e9e dans index.html, nous a permis de cr\u00e9er notre bouton &#8220;Cr\u00e9er agent&#8221;. Pour cr\u00e9er d&#8217;autres boutons, il suffit d&#8217;ajouter d&#8217;autres lignes <em>&lt;button &#8230; &lt;\/button&gt;<\/em> en changeant le texte du bouton et son comportement onclick.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que nous avons vu comment d\u00e9placer notre agent avec notre manette web, voyons comment modifier notre page web quand notre agent change.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mettre \u00e0 jour des \u00e9l\u00e9ments html quand  l&#8217;\u00e9tat de l&#8217;agent change<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ajoutons un nouvel \u00e9l\u00e9ment dans le fichier index.html pour afficher l&#8217;orientation de l&#8217;agent. Comme l&#8217;orientation est une variable num\u00e9rique pouvant aller de 0 \u00e0 3, ajoutons un label dans notre manette avec la balise &#8220;label&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;label id=\"orientation\"&gt;Orientation = 0&lt;\/label&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le texte contenu entre la balise ouvrante &lt;label&gt; et fermante &lt;\/label&gt; sera le texte affich\u00e9 sur la page web par notre navigateur. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>A quoi sert id=&#8221;orientation&#8221; ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">L&#8217;attribut id va nous permettre d&#8217;identifier notre label pour pouvoir le modifier avec un code javascript. &#8220;orientation&#8221; c&#8217;est un peu la carte d&#8217;identit\u00e9 de notre label, il faut donc s\u2019assurer qu&#8217;il est unique dans la page sinon on risque de modifier malencontreusement plusieurs \u00e9l\u00e9ments.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Modifier le label orientation ? Pour faire quoi ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Quand l&#8217;utilisateur jouera avec la manette, l&#8217;agent se d\u00e9placera dans l&#8217;ar\u00e8ne, son orientation changera donc. L&#8217;id\u00e9e est d&#8217;actualiser le texte du label, d\u00e8s qu&#8217;il aura une nouvelle orientation, et \u00e7a, seul un langage de programmation peut le faire !<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Ok, et comment on fait \u00e7a ? En javascript ?<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Bingo ! Pour cela, rendez vous dans le fichier script.js. Un script est un programme que le navigateur ex\u00e9cutera ligne par ligne, instruction apr\u00e8s instruction.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Premi\u00e8re chose \u00e0 faire, cr\u00e9er un sous-programme qui sera appel\u00e9 quand l&#8217;\u00e9tat de votre agent change. Comme en Python et d&#8217;autres langages de programmation, d\u00e9finissons une fonction pour r\u00e9cup\u00e9rer l&#8217;\u00e9tat de l&#8217;agent quand il changera :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function quandEtatAgentChange(x,y,orientation,vie,distance,munitions)\n{\n    \/\/ On rajoutera entre ces accolades le code \u00e0 ex\u00e9cuter\n}<\/code><\/pre>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">En javascript, pour d\u00e9finir une fonction on utilise le mot cl\u00e9 <strong>function<\/strong>, (\u00e9quivalent au mot cl\u00e9 <strong>def <\/strong>en Python). Pour cela, la fonction doit est constitu\u00e9e de 2 blocs indissociables : <br>&#8211; <strong>son ent\u00eate<\/strong> (on dit aussi signature ou encore prototype), constitu\u00e9 du nom de la fonction, suivi obligatoirement par des parenth\u00e8ses ouvrantes et fermantes. Entre ses parenth\u00e8ses, la fonction peut aussi d\u00e9finir des variables d&#8217;entr\u00e9es (s\u00e9par\u00e9es par des virgules), qu&#8217;il faudra renseigner pour ex\u00e9cuter la fonction. Ici l&#8217;ent\u00eate de la fonction est :<br><em>quandEtatAgentChange(x,y,orientation,vie,distance,munitions)<\/em><br>Quand elle sera appel\u00e9e par le serveur du jeu, les variables x,y,orientation,vie,distance,munitions contiendront les nouvelles valeurs de l&#8217;\u00e9tat de l&#8217;agent.<br>&#8211; <strong>son corps<\/strong>, d\u00e9limit\u00e9 par des accolades ouvrantes et fermantes. C&#8217;est entre ces accolades que nous pouvons rajouter les instructions de notre sous-programme, ligne par ligne. En javascript (comme en langage C et C++), il est coutume de mettre un caract\u00e8re point-virgule \u00e0 la fin de chaque ligne d&#8217;instruction &#8216;;&#8217; <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Tu as dis le navigateur ex\u00e9cute ligne apr\u00e8s ligne le fichier script.js. Mais comment il fait \u00e7a ? Je dois ouvrir le fichier script.js avec le navigateur ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Que nenni ! Ouvrez uniquement le fichier index.html avec votre navigateur. Gr\u00e2ce \u00e0 la ligne 15 &lt;script src=&#8221;script.js&#8221;&gt;&lt;\/script&gt; de ce fichier, le navigateur ex\u00e9cutera tout seul les instructions de votre script ligne apr\u00e8s ligne.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Ok,  et quand est-ce que les lignes de ma fonction <em>quandEtatAgentChange<\/em> seront ex\u00e9cut\u00e9es ? Une seule fois quand j&#8217;ouvrerai la page ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Heureusement non ! Pour que les lignes entre les accolades de  <em>quandEtatAgentChange<\/em>  soient ex\u00e9cut\u00e9es, il faut appeler cette fonction. Pour le moment, nous avons uniquement d\u00e9fini la fonction, ce qui n\u2019ex\u00e9cute rien.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour indiquer au serveur de jeu d&#8217;appeler cette fonction quand l&#8217;agent changera au cours du jeu, rajoutons la ligne suivante \u00e0 la fin du fichier script.js :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pytactx_executerQuandEtatAgentChange(quandEtatAgentChange)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quand l&#8217;agent se d\u00e9placera, le serveur de jeu appellera la fonction <strong>quandEtatAgentChange <\/strong>en passant en param\u00e8tre les nouvelles valeurs des variables d&#8217;\u00e9tat de l&#8217;agent. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Je colle cette ligne entre les accolades ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Surtout pas ! On la rajoutera sur une nouvelle ligne \u00e0 la fin du script apr\u00e8s l&#8217;accolade fermante. De cette mani\u00e8re, quand le navigateur lira le fichier script.js de la premi\u00e8re ligne \u00e0 la derni\u00e8re ligne \u00e0 l&#8217;ouverture du fichier index.html, il fera dans l&#8217;ordre :<br><strong>1.<\/strong> D\u00e9finition de la fonction <em>quandEtatAgentChange<\/em> en m\u00e9moire sans l&#8217;ex\u00e9cuter<br><strong>2.<\/strong> Ex\u00e9cution de la fonction <em>pytactx_executerQuandEtatAgentChange<\/em> (d\u00e9finie dans le fichier pytactx.js) en passant en param\u00e8tre un lien vers la fonction <em>quandEtatAgentChange<\/em>. <br>Par la suite,<br><strong>3.<\/strong> Quand vous cliquerez sur le bouton &#8220;Cr\u00e9er agent&#8221;, la fonction <em>pytactx_connecter()<\/em> dans pytactx.js sera ex\u00e9cut\u00e9e et se connectera au serveur de jeu.<br><strong>4.<\/strong> Quand votre agent changera dans le jeu (ex: s&#8217;il se fait tirer dessus, ou si vous le d\u00e9placez), alors le serveur du jeu notifiera le script pytactx.js qui appelera votre fonction <em>quandEtatAgentChange<\/em> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour informations, voici \u00e0 quoi correspond les variables de l&#8217;agent :<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-12.png\" alt=\"\" class=\"wp-image-189\"\/><figcaption> Les variables de votre agent permettant de conna\u00eetre son \u00e9tat en javascript <\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">C&#8217;est donc dans cette fonction que nous devons rajouter le code javascript pour actualiser notre label &#8220;orientation&#8221; ! Pour cela, nous aurons besoin de la fonction <strong>document.getElementById(id)<\/strong> qui permet de r\u00e9cup\u00e9rer notre label pour modifier ses propri\u00e9t\u00e9s. <\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">La fonction <strong>document.getElementById(id)<\/strong> permet de r\u00e9cup\u00e9rer n&#8217;importe quel \u00e9l\u00e9ment HTML via son attribut id. <br>Par exemple, on peut modifier la couleur d&#8217;un bouton et rendre son fond bleu en faisant :<br><strong>document.getElementById(&#8220;idDuBouton&#8221;).style.background = &#8220;blue&#8221;;<\/strong><br>De mani\u00e8re g\u00e9n\u00e9ral, pour modifier une propri\u00e9t\u00e9 de la page dynamiquement, il faut simplement conna\u00eetre le l&#8217;id de l&#8217;\u00e9l\u00e9ment, puis le nom de sa propri\u00e9t\u00e9 \u00e0 modifier. Pour ce dernier point, Google est votre ami !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quand il s&#8217;agit d&#8217;un label, pour acc\u00e9der\/modifier son contenu (le texte qui s&#8217;affichera dans le navigateur), on peut rajouter <strong>.innerHTML<\/strong>, ce qui donnera en javascript :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>document.getElementById(\"IdDuLabelDansLeFichierHtml\").innerHTML<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans notre fonction, on souhaite modifier le contenu du label et y mettre la nouvelle valeur d&#8217;orientation de l&#8217;agent. Nous utiliserons donc l&#8217;op\u00e9rateur d&#8217;affectation (le signe &#8216;=&#8217;), pour mettre l&#8217;expression \u00e0 droite du &#8216;=&#8217; dans le contenu du label.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function quandEtatAgentChange(x,y,orientation,vie,distance,munitions)\n{\n    document.getElementById(\"orientation\").innerHTML = \"Orientation: \" + orientation;\n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>A quoi sert l&#8217;instruction &#8220;Orientation: &#8221; + orientation; ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">Elle sert \u00e0 concat\u00e9ner, c&#8217;est \u00e0 dire mettre dans le label HTML le texte &#8220;orientation: &#8221; suivi du nombre contenu dans la variable <strong>orientation <\/strong>de l&#8217;agent. Le point virgule &#8220;;&#8221; \u00e0 la fin indique la fin de l&#8217;instruction (pour ne pas concat\u00e9ner aussi la ligne suivante dans le programme).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour plus de clart\u00e9 pour l&#8217;utilisateur, vous pouvez \u00e0 la place d&#8217;un nombre orientation afficher un texte. Par exemple, si orientation \u00e9gale \u00e0 0 alors afficher &#8220;Orientation droite&#8221;, etc &#8230;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function quandEtatAgentChange(x,y,orientation,vie,distance,munitions)\n{\n    if ( orientation == 0 )\n        document.getElementById(\"orientation\").innerHTML = \"Orientation: droite\";\n    else if ( orientation == 1 )\n        document.getElementById(\"orientation\").innerHTML = \"Orientation: haut\";\n    else if ( orientation == 2 )\n        document.getElementById(\"orientation\").innerHTML = \"Orientation: gauche\";\n    else if ( orientation == 3 )\n        document.getElementById(\"orientation\").innerHTML = \"Orientation: bas\";\n}<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/jusdeliens-ProjetManettePytactX-Labels.gif\" alt=\"\" class=\"wp-image-208\"\/><figcaption>Une fois votre script.js enregistr\u00e9 et le navigateur actualis\u00e9, cr\u00e9ez votre agent et utilisez les boutons de d\u00e9placement. Vous devriez voir le label &#8220;orientation&#8221; se mettre \u00e0 jour ! Les autres labels sont \u00e0 rajouter !<\/figcaption><\/figure><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Tout \u00e7a pour afficher l&#8217;orientation ? Le joueur n&#8217;a qu&#8217;\u00e0 regarder son agent dans l&#8217;ar\u00e8ne ? <\/p><\/blockquote>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\">C&#8217;est vrai ce n&#8217;est pas la variable d&#8217;\u00e9tat la plus int\u00e9ressante de l&#8217;agent. Mais la d\u00e9marche est la m\u00eame si vous souhaitez afficher les vies restantes, les munitions, ou plus g\u00e9n\u00e9ralement modifier votre manette si une variable de l&#8217;agent change ! On pourrait imaginer faire vibrer virtuellement votre manette quand votre agent se fait tirer dessus et que sa vie diminue par exemple !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour vous amusez, vous pouvez rajouter d&#8217;autres labels pour afficher toutes les variables de l&#8217;agent. Et si vous voulez allez plus loin, Google est encore votre ami ! Tapez par exemple : &#8220;changer couleur bouton javascript&#8221; et voyez les r\u00e9sultats sur les forums !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe aussi de nombreux autres \u00e9l\u00e9ments pour interagir avec une page web : <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/meter\">l&#8217;\u00e9l\u00e9ment <\/a><strong><a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/meter\">meter<\/a> <\/strong>: pour afficher une jauge graphique. Id\u00e9al pour indiquer une ressource \u00e9puisable dans un jeu (comme la vie ou les munitions&#8230;)<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-14.png\" alt=\"\" class=\"wp-image-196\"\/><\/figure><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/canvas\">l&#8217;\u00e9l\u00e9ment <\/a><strong><a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/canvas\">canvas<\/a> <\/strong>: pour dessiner et animer n&#8217;importe quelles figures g\u00e9om\u00e9triques dans une zone rectangulaire. C&#8217;est l&#8217;\u00e9l\u00e9ment phare pour r\u00e9aliser un jeu vid\u00e9o en 2D.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/image-15.png\" alt=\"\" class=\"wp-image-197\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Et <a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/Guide\/HTML\/HTML5\/Liste_des_%C3%A9l%C3%A9ments_HTML5\">bien d&#8217;autres encore<\/a> &#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avez tous ces \u00e9l\u00e9ments, voici th\u00e9oriquement \u00e0 quoi pourrait ressembler votre manette ! A vos neurones et claviers pour la r\u00e9aliser !<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2020\/05\/PorjetManettePytactx-manette.png\" alt=\"\" class=\"wp-image-209\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf89 Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons vu comment le langage html permet de structurer l&#8217;affichage d&#8217;une page web. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour effectuer des actions dynamiques, comme communiquer avec le serveur de jeu PytactX pour faire agir un agent, nous avons utilis\u00e9 des fonctions en javascript reli\u00e9es aux \u00e9v\u00e8nements des boutons en html.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons aussi appris \u00e0 changer dynamiquement des \u00e9l\u00e9ments de la page web quand les variables d&#8217;\u00e9tat de notre agent changent, que ce soit changer le texte d&#8217;un label ou bien la couleur d&#8217;un bouton. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le prochain tutoriel, nous verrons comment personnaliser l&#8217;affichage des boutons pour donner un autre look \u00e0 notre manette en utilisant la magie du CSS !<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 Pour aller plus loin<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En attendant la seconde partie de ce tutoriel, si vous souhaitez approfondir vos connaissances pour am\u00e9liorer votre page web, je vous conseille l&#8217;excellent <a href=\"https:\/\/openclassrooms.com\/fr\/courses\/1603881-apprenez-a-creer-votre-site-web-avec-html5-et-css3\/1604361-creez-votre-premiere-page-web-en-html \">tuto de Mathieu Nebra sur openclassroom en cliquant ici<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udee3\ufe0f Et apr\u00e8s ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous avez aim\u00e9 ce tutoriel et vous en voulez d&#8217;autres ? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Faites le nous savoir en <strong>\ud83d\udc49<\/strong> <a href=\"https:\/\/g.page\/r\/CQoJnRiyLqsqEB0\/review\">donnant vos avis et vos envies<\/a> et nous nous empresserons de vous en r\u00e9digez d&#8217;autres \ud83d\ude09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C\u2019est fini pour ce tutoriel ! A vous de <a href=\"https:\/\/play.jusdeliens.com\" target=\"_blank\" rel=\"noreferrer noopener\">jouer<\/a> maintenant \ud83d\ude09<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/jusdeliens.com\/wp-content\/uploads\/2019\/01\/R2D2.gif\" alt=\"\" class=\"wp-image-355\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous souhaitez acqu\u00e9rir des comp\u00e9tences en d\u00e9veloppement web ou comprendre comment un site web fonctionne ? Dans ce tutoriel, nous allons voir ensemble comment cr\u00e9er une manette de jeu pour piloter les actions de votre agent gladiateur dans une ar\u00e8ne de jeu TactX, le tout en utilisant les langages html, javascript et css !<\/p>\n","protected":false},"author":1,"featured_media":547,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,7],"tags":[],"class_list":["post-117","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web","category-tactx"],"_links":{"self":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/posts\/117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/comments?post=117"}],"version-history":[{"count":0,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/posts\/117\/revisions"}],"wp:attachment":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/media?parent=117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/categories?post=117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/tags?post=117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}