<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Archives des Tutoriels Programmation - Custom Protocol</title>
	<atom:link href="https://www.customprotocol.com/categories/tutos/tutos-programmation/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.customprotocol.com/categories/tutos/tutos-programmation/</link>
	<description>Site d&#039;hack-tualité et de tutoriels sur la customisation de consoles et appareils (homebrews, plugins, émulation...)</description>
	<lastBuildDate>Thu, 18 May 2017 08:47:11 +0000</lastBuildDate>
	<language>fr-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</title>
		<link>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/</link>
					<comments>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/#respond</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Thu, 18 May 2017 08:47:11 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Cosmos]]></category>
		<category><![CDATA[Cosmos (C# Open Source Managed Operating System)]]></category>
		<category><![CDATA[CosmosOS]]></category>
		<category><![CDATA[FileSystem]]></category>
		<category><![CDATA[OSDev]]></category>
		<category><![CDATA[système de fichiers]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=12963</guid>
					<description><![CDATA[<p>Suite du premier tutoriel sur Cosmos, le système d'exploitation écrit en C#. Vous allez ici apprendre à utiliser un système de fichiers&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/">[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Voici une suite au <a href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">premier tutoriel</a> (mis à jour à la suite de cette deuxième partie, n'hésitez pas à y faire un tour au cas où&nbsp;:P) sur comment créer et lancer sur une machine virtuelle son premier système d'exploitation. Sous forme de console pour l'instant, le système n'est pas pourvu d'un système de fichiers (créer des dossiers/fichiers, se déplacer dans les dossiers, etc.). Nous allons donc ici voir comment faire cela. Faites place au tutoriel&#8239;!</p>
<figure id="attachment_12292" aria-describedby="caption-attachment-12292" style="width: 700px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmos.png"><img fetchpriority="high" decoding="async" class="wp-image-12292 size-full" src="https://www.customprotocol.com/medias/2017/01/cosmos.png" width="700" height="448" srcset="https://www.customprotocol.com/medias/2017/01/cosmos.png 700w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos-370x237.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos-270x173.png 270w, https://www.customprotocol.com/medias/2017/01/cosmos-470x300.png 470w, https://www.customprotocol.com/medias/2017/01/cosmos-570x365.png 570w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192@2x.png 600w" sizes="(max-width: 700px) 100vw, 700px" /></a><figcaption id="caption-attachment-12292" class="wp-caption-text">Logo de <strong>Cosmos</strong></figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Utilisation du système de fichiers</strong></span></h4>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">A. Présentation du VFS</span><br /></strong></h5>
<p style="text-align: justify;">Comme défini plus haut, un système de fichiers va vous permettre de créer des fichiers et dossiers depuis votre système d'exploitation et vous déplacer, ouvrir, supprimer ces fichiers, dossiers, etc. Comme pour l'instant l'utilisation de <strong>Cosmos</strong> ne se fait essentiellement que sur machine virtuelle et non sur un support physique, nous allons utiliser ce qu'on appelle un système de fichiers virtuel (VFS) ou comme Wikipédia le définit&nbsp;: "Une couche d'abstraction au-dessus d'un système de fichiers plus concret".</p>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">B. Utilisation du VFS</span><br /></strong></h5>
<p style="text-align: justify;">Lancez <em>Visual Studio</em>, créez un projet ou ouvrez votre projet <em>Cosmos C#</em>. Rendez-vous maintenant dans le fichier <em>Kernel.cs</em>.</p>
<h6 style="text-align: justify;">Initialisation<strong><br /></strong></h6>
<p style="text-align: justify;">Avant d'utiliser le système de fichiers virtuel, il va falloir l'initialiser depuis la boucle <em>BeforeRun()</em> de votre projet (<a href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">voir le premier tutoriel</a> à la partie 2B pour plus d'informations). Voici le code à utiliser&nbsp;:</p>
<pre class="lang:c# decode:true">FS&nbsp;=&nbsp;new Sys.FileSystem.CosmosVFS();
Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);</pre>
<p style="text-align: justify;">Il est bon de savoir que le système de fichiers utilisé par <strong>Cosmos</strong> ressemble à celui de <em>Windows</em>, chaque lecteur a sa propre lettre et le répertoire par défaut est "0:\" comme "C:\" sur <em>Windows</em>.</p>
<p style="text-align: justify;">La variable <em>dossier_actuel</em> sera par défaut définie par&nbsp;:</p>
<pre class="lang:c# decode:true">string dossier_actuel&nbsp;=&nbsp;"0:\\";</pre>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Il faut impérativement utiliser une double barre oblique ("\\") inversée pour écrire une simple "\".</div>
<h6 style="text-align: justify;"><strong>Commande pour créer un fichier<br /></strong></h6>
<pre class="lang:c# decode:true">var f&nbsp;=&nbsp;File.Create(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt"); //Créer un fichier pour chemin dossier_actuel\fichier.txt
f.Close();</pre>
<h6 style="text-align: justify;"><strong>Commande pour lire un fichier<br /></strong></h6>
<pre class="lang:c# decode:true">string texte&nbsp;=&nbsp;File.ReadAllText(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt"); //La variable 'texte' contiendra le texte contenu dans le fichier</pre>
<h6 style="text-align: justify;"><strong>Commande pour supprimer un fichier<br /></strong></h6>
<pre class="lang:c# decode:true ">File.Delete(dossier_actuel&nbsp;+&nbsp;"\\fichier.txt");</pre>
<h6 style="text-align: justify;"><strong>Commande pour créer un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;"\\nomdudossier");</pre>
<h6 style="text-align: justify;"><strong>Commande pour supprimer un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">Directory.Delete(dossier_actuel&nbsp;+&nbsp;"\\dossier", true); // 'true' signifie que le contenu du dossier va être également supprimé</pre>
<h6 style="text-align: justify;"><strong>Commande pour se déplacer vers un dossier<br /></strong></h6>
<pre class="lang:c# decode:true">if (input.StartsWith("cd ")) //L'utilisateur entre 'cd nomdudossier'
            {
                var newdir&nbsp;=&nbsp;input.Remove(0, 3); //On extrait le nom du dossier
                if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;newdir))
                //On vérifie si le dossier existe.
                {
                    Directory.SetCurrentDirectory(dossier_actuel);
                    dossier_actuel&nbsp;=&nbsp;dossier_actuel&nbsp;+&nbsp;newdir&nbsp;+&nbsp;"\\";
                }
                else
                {
                    Console.WriteLine("Ce dossier n'existe pas&#8239;!");
                }
            }</pre>
<h6 style="text-align: justify;"><strong>Commande pour se déplacer vers un dossier parent (retour)<br /></strong></h6>
<pre class="lang:default decode:true">var dir&nbsp;=&nbsp;FS.GetDirectory(dossier_actuel);
dossier_actuel&nbsp;=&nbsp;dir.mParent.mFullPath;</pre>
<h6 style="text-align: justify;"><strong>Commande pour lister les dossiers et fichiers du dossier ouvert<br /></strong></h6>
<pre class="lang:c# decode:true">Console.WriteLine("Type\t     Nom");
                foreach (var dir in Directory.GetDirectories(dossier_actuel))
                {
                    Console.WriteLine("&lt;Dossier&gt;\t"&nbsp;+&nbsp;dir);
                }
                foreach (var file in Directory.GetFiles(dossier_actuel))
                {
                    Console.WriteLine("&lt;Fichier&gt;\t"&nbsp;+&nbsp;file);
                }</pre>
<h6 style="text-align: justify;"><strong>Commande pour lister les lecteurs disponibles<br /></strong></h6>
<pre class="lang:c# decode:true ">var vols&nbsp;=&nbsp;FS.GetVolumes();
                Console.WriteLine("Nom\tTaille\tParent");
                foreach (var vol in vols)
                {
                    Console.WriteLine(vol.mName&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;vol.mSize&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;vol.mParent);
                }</pre>
<p style="text-align: justify;">Voilà voilà, vous avez pu voir une liste de différentes commandes utiles à la création d'un système d'exploitation, si vous voulez voir l'application réelle de ces commandes, vous pouvez aller voir la méthode <a href="https://github.com/valentinbreiz/Ode-OS/blob/master/Ode%20OS/Kernel.cs#L505">I<em>nterpredCMD</em></a> d'un petit système d'exploitation réalisé par mes soins, où ces commandes y sont inscrites (Ctrl&nbsp;+&nbsp;F pour rechercher dans la page&#8239;;) ).</p>
<h5 style="text-align: justify;"><strong><span style="text-decoration: underline;">C. Exemple d'implémentation du système de fichiers</span><br /></strong></h5>
<p style="text-align: justify;">Maintenant, depuis votre console, vous pouvez implémenter différentes commandes. Voici un algorithme basique qui va pouvoir interpréter les commandes transmises depuis l'utilisateur (comme depuis le CMD sur <em>Windows</em>) et permettre la création et suppression d'un dossier. Ensuite, à vous d'implémenter vos propres commandes&#8239;!</p>
<pre class="lang:c# decode:true">using System;
using Sys&nbsp;=&nbsp;Cosmos.System;
using System.IO;
using Cosmos.System.FileSystem;
// Ceci permet d'importer des références.
namespace Custom_Protocol
{
    public class Kernel&nbsp;: Sys.Kernel
    {
        string dossier_actuel&nbsp;=&nbsp;"0:\\";
        public CosmosVFS FS { get; private set; }
        protected override void BeforeRun()
        //Ceci est le code exécuté avant l'exécution du programme.
        {
            Console.Clear();
            //Permet de nettoyer la console des logs de démarrage.
            //On met le clavier en français
            Sys.KeyboardManager.SetKeyLayout(new Sys.ScanMaps.FR_Standard());
            //Initialisation du système de fichier.
            FS&nbsp;=&nbsp;new Sys.FileSystem.CosmosVFS();
            Sys.FileSystem.VFS.VFSManager.RegisterVFS(FS);
            //Fin de l'initialisation
            Console.WriteLine("Tutoriel de customprotocol.com");
            Console.WriteLine("Cosmos a demarre avec succes.");
            //Ceci permet d'écrire une ligne.
        }
        protected override void Run()
        //Ceci est le code exécuté pendant l'exécution du programme, il se répétera indéfiniment.
        {
            Console.Write("commande&gt; ");
            //Ceci permet d'écrire une ligne ou l'on peut écrire sur la même ligne.
            var input&nbsp;=&nbsp;Console.ReadLine();
            //Ceci est une variable qui permet de lire le texte écrit par l'utilisateur.
            InterpretCMD(input);
            //Ceci permet de lancer la méthode qui va interpréter la commande (input)
        }
        private void InterpretCMD(string input)
        //Ceci est la méthode qui interprète la commande envoyée (d'où le "string input") 
        {
            if (input.StartsWith("dir -c ")) //Si la commande commence par dir -c
            {
                string dir&nbsp;=&nbsp;input.Remove(0, 7); //On extrait la commande
                if (!Directory.Exists(dossier_actuel&nbsp;+&nbsp;dir)) //Si le dossier n'existe pas (! symbole de négation)
                {
                    FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;dir); //On créer le dossier
                    Console.WriteLine("Dossier cree&#8239;!");
                }
                else if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;dir)) //Sinon si le dossier existe alors
                {
                    Console.WriteLine("Le dossier existe deja&#8239;!");
                    Console.WriteLine("Dossier cree&#8239;!");
                    FS.CreateDirectory(dossier_actuel&nbsp;+&nbsp;dir&nbsp;+&nbsp;"-1"); //On créer tout de même un dossier avec comme nom 'nomdudossier-1'
                }
            }
            else if (input.StartsWith("dir -r ")) //Si la commande commence par dir -r alors
            {
                string dirr&nbsp;=&nbsp;input.Remove(0, 7); //On extrait le nom du dossier de la commande
                if (Directory.Exists(dossier_actuel&nbsp;+&nbsp;dirr)) //Si le dossier existe alors
                {
                    Directory.Delete(dossier_actuel&nbsp;+&nbsp;dirr, true); //On le supprime
                    Console.WriteLine("Le dossier '"&nbsp;+&nbsp;dirr&nbsp;+&nbsp;"' a ete supprime&#8239;!");
                }
                else //Si il n'existe pas
                {
                    Console.WriteLine("Le dossier '"&nbsp;+&nbsp;dirr&nbsp;+&nbsp;"' n'existe pas&#8239;!");
                }
            }
            else if (input == "dir -l") //Si la commande est égale à dir -l
            {
                Console.WriteLine("Type\t     Nom");
                foreach (var dir in Directory.GetDirectories(dossier_actuel)) //On récupere tous les dossiers
                {
                    Console.WriteLine("&lt;Dossier&gt;\t"&nbsp;+&nbsp;dir); //On affiche tous les dossiers
                }
            }
            else if (input == "hello")
            { //Si la commande est égale à hello alors
                Console.WriteLine("Bonjour!"); //Afficher "Bonjour!".
            }
            else if (input == "bye")
            { //Sinon si la commande est égale à bye
                Sys.Power.Shutdown(); //Éteindre le système.
            }
            else
            { //Sinon (si la commande n'est ni hello ni bye)
                Console.WriteLine("Erreur&nbsp;: Commande inconnue"); //Afficher la commande est inconnue.
            }
        }
    }
}</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Conclusion</strong></span></h4>
<p style="text-align: justify;">À travers ce tutoriel, vous avez pu voir comment utiliser un système de fichiers dans votre projet <strong>Cosmos</strong>. Amusez-vous, développez et partagez votre projet&#8239;! Si vous manquez d'inspiration, voici même une page comprenant plusieurs projets sous <strong>Cosmos</strong>&nbsp;: <em><a href="https://github.com/CosmosOS/Cosmos/wiki/Cosmos-Projects">Cosmos Projects</a></em>.</p>
<p style="text-align: justify;">D'autres tutoriels à propos de <strong>Cosmos</strong> arriveront sur <strong>Custom Protocol</strong> bientôt, si vous avez besoin de quoi que ce soit vous pouvez poser une question en commentaire ou sur la <a href="https://gitter.im/CosmosOS/Cosmos">conversation Gitter</a> du projet <strong>Cosmos</strong>&#8239;!&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/">[Windows] TUTO &#8211; [Partie 2] Utilisation du système de fichiers sous Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/windows-utilisation-systeme-de-fichiers-cosmos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</title>
		<link>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/</link>
					<comments>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/#comments</comments>
		
		<dc:creator><![CDATA[valentinbreiz]]></dc:creator>
		<pubDate>Sun, 08 Jan 2017 14:01:46 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Cosmos]]></category>
		<category><![CDATA[Cosmos (C# Open Source Managed Operating System)]]></category>
		<category><![CDATA[CosmosOS]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=12233</guid>
					<description><![CDATA[<p>Dans ce premier tutoriel vous allez apprendre à créer votre premier système d'exploitation avec le projet Cosmos&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><div align="center" class="alert alert-success ">Ce tutoriel fut mise à jour le 18/05/2017, avec une autre méthode d'installation <em>dev-kit</em> bien plus pratique et efficace&#8239;! N'hésitez pas à re-suivre cette procédure au cas où&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>À travers ce tutoriel et une future suite de tutoriels, nous allons apprendre à créer notre propre <em>OS</em>, ou plutôt <strong>le vôtre</strong> ! Nous n'allons évidemment pas surpasser<em> Windows</em> ou <em>Ubuntu</em>, ce sera un petit OS fait maison <strong>pour les passionnés et débutants en programmation</strong>&#8239;! Nous n'allons pas utiliser de langage assembleur, ne créerons un noyau, nous le programmerons simplement en <em>C#</em> avec l'aide du projet <strong>Cosmos</strong>, magnifique non&#8239;?</p>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/medias/2017/01/cosmos.png"><img decoding="async" class="aligncenter size-full wp-image-12292" src="https://www.customprotocol.com/medias/2017/01/cosmos.png" alt="cosmos" width="700" height="448" srcset="https://www.customprotocol.com/medias/2017/01/cosmos.png 700w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos-370x237.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos-270x173.png 270w, https://www.customprotocol.com/medias/2017/01/cosmos-470x300.png 470w, https://www.customprotocol.com/medias/2017/01/cosmos-570x365.png 570w, https://www.customprotocol.com/medias/2017/01/cosmos-300x192@2x.png 600w" sizes="(max-width: 700px) 100vw, 700px" /></a></p>
<hr />
<p style="text-align: justify;">Une petite présentation de notre support s'impose, comme ce tutoriel est ciblé aux débutants et que je ne suis pas expert en programmation, je vais m'appuyer sur le super, que dis-je, le magnifique <a href="https://github.com/CosmosOS/Cosmos">projet <strong>Cosmos</strong></a>.</p>
<p style="text-align: justify;"><strong>Cosmos</strong> est un système d'exploitation, ou plutôt un "kit de construction", basé sur <em>SysLinux</em> autour du compilateur <em>IL2CPU</em> (créé par les mêmes développeurs que <strong>CosmosOS</strong>). <em>COSMOS</em> signifie d'ailleurs <em>C# Open Source Managed Operating System</em>.</p>
<p style="text-align: justify;">Bref,<strong> Cosmos</strong> n'est donc pas un système d'exploitation à proprement parler, mais plutôt un «&nbsp;kit de création de système d'exploitation&nbsp;». <strong>Cosmos</strong> va vous permettre de créer des systèmes d'exploitation sur <em>Visual Studio</em> et en <em>C#</em> (ou <em>Visual Basic</em>). Le véritable point fort de <em>Cosmos</em> réside dans le fait qu'il est intégré à <em>Visual Studio</em>, ce qui va permettre un développement sous <em>Windows</em> accompagné d'éléments essentiels. En effet, <em>Visual Studio</em> (avec <strong>Cosmos</strong>) va débugger et générer votre <em>OS</em> avant de l'envoyer à une machine virtuelle.</p>
<figure id="attachment_12273" aria-describedby="caption-attachment-12273" style="width: 488px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png"><img decoding="async" class="wp-image-12273 size-full" title="cosmos" src="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png" alt="Logo CosmosOS" width="488" height="100" srcset="https://www.customprotocol.com/medias/2017/01/cosmos_logo.png 488w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-300x61.png 300w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-370x76.png 370w, https://www.customprotocol.com/medias/2017/01/cosmos_logo-270x55.png 270w" sizes="(max-width: 488px) 100vw, 488px" /></a><figcaption id="caption-attachment-12273" class="wp-caption-text">Logo officiel de <b>Cosmos</b></figcaption></figure>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>1) Installation de Cosmos (dev-kit)<br /></strong></span></h4>
<p>La dernière version officielle du projet <strong>Cosmos</strong> étant parue il y a déjà plusieurs années, il va falloir mettre à jour celle que vous avez déjà installée et si ce n'est pas déjà fait, l'installer. Car depuis, il y a eu plusieurs corrections de <em>bugs</em>, d'ajouts, qui améliorent fortement l'expérience utilisateur.</p>
<p>Il existe deux kits pour <strong>Cosmos</strong>, l'<em>user-kit</em> et le <em>dev-kit</em>. C'est ce dernier que nous allons compiler pour pouvoir profiter des mises à jour (dont beaucoup sur le système de fichiers que nous verrons un peu plus tard&nbsp;:P).</p>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>A. Pré-requis</strong></span></h5>
<ul>
<li style="text-align: justify;">Un minimum de connaissances en algorithmique (C# ou VB par exemple)&#8239;;</li>
<li style="text-align: justify;">Être sous <em>Windows 7</em> au minimum&#8239;;</li>
<li style="text-align: justify;"><em>Visual Studio Community 2015</em> (à <a href="http://www.01net.com/telecharger/windows/Programmation/creation/fiches/134695.html">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;">.<em>NET Framework 4.5</em> (à <a href="https://www.microsoft.com/fr-FR/download/details.aspx?id=30653">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;"><em>VMWare Player</em> (version gratuite) (à <a href="https://my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0">télécharger ici</a>)&#8239;;</li>
<li style="text-align: justify;"><em>.NET Framework 3.5 SP1</em>, quelques composants requérant cette version (à <a href="https://www.microsoft.com/fr-FR/download/details.aspx?id=22">télécharger ici</a>).<strong><br /></strong></li>
</ul>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>B. Installation de Cosmos</strong></span></h5>
<p style="text-align: justify;">Premièrement, commencez par télécharger <a href="https://github.com/CTPBenchmark/Cosmos">ce répertoire</a> (cliquez sur le bouton vert '<em>Clone or Download</em>' puis '<em>Download ZIP</em>') que je vous ai moi-même concocté, comprenant de nombreux correctifs et quelques ajouts. Décompressez ensuite l'archive ZIP sur votre bureau par exemple ou dans un dossier dédié (parce que c'est plus propre).</p>
<p style="text-align: justify;"><div align="center" class="alert alert-warning ">Assurez-vous que ni <em>Visual Studio 2015</em> ni <em>VMWare</em> ne sont en cours d’utilisation&#8239;!</p>
<p style="text-align: justify;">Et assurez-vous que vous n’êtes pas en train de faire des mises à jour <em>Windows</em>, ce qui pourrait éteindre votre ordinateur, ou quelque chose d’autre de stupide.&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
<p style="text-align: justify;">Lancez maintenant le fichier "<span class="css-truncate css-truncate-target">install-VS2015.bat</span>".</p>
<p style="text-align: justify;"><div align="center" class="alert alert-info ">Si <strong>Cosmos</strong> est déjà installé sur votre machine, il n'y a rien à faire&#8239;! La compilation du <em>dev-kit</em> va automatiquement supprimer les anciennes versions.</div>
<figure id="attachment_13117" aria-describedby="caption-attachment-13117" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/05/installation-cosmos.png"><img decoding="async" class="wp-image-13117 size-medium" src="https://www.customprotocol.com/medias/2017/05/installation-cosmos-500x261.png" width="500" height="261" /></a><figcaption id="caption-attachment-13117" class="wp-caption-text">Console d'installation de <strong>Cosmos</strong> made in <strong>CTP</strong>&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></figcaption></figure>
<p>Une fois le programme d'installation lancé, il va tout effectuer tout seul et vous pourrez voir les résultats dans cette fenêtre&nbsp;:</p>
<figure id="attachment_13084" aria-describedby="caption-attachment-13084" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/05/cosmos-devkit-installer.png"><img decoding="async" class="wp-image-13084 size-medium" src="https://www.customprotocol.com/medias/2017/05/cosmos-devkit-installer-500x353.png" width="500" height="353" /></a><figcaption id="caption-attachment-13084" class="wp-caption-text">La compilation de <strong>Cosmos</strong> a réussie, on passe à l'installation (<em>Running Setup</em>)&#8239;!</figcaption></figure>
<p style="text-align: justify;">L'installation n'a normalement pas dû prendre de temps et si tout s'est bien passé, <em>Visual Studio</em> s'est lancé en ouvrant la solution "Cosmos" (où vous pouvez éditer ou voir le code source si vous êtes curieux) et le programme d'installation affiche alors en vert&nbsp;: <em>Build Complete!</em></p>
<p>&nbsp;</p>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;">2) Créer son premier OS</span></h4>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>A. Création du projet</strong></span></h5>
<p style="text-align: justify;">Lancez <em>Visual Studio</em>, appuyez sur "Nouveau projet...", cette fenêtre se lance alors&nbsp;:</p>
<figure id="attachment_12253" aria-describedby="caption-attachment-12253" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/cosmosprojet.png"><img decoding="async" class="wp-image-12253 size-medium" src="https://www.customprotocol.com/medias/2017/01/cosmosprojet-500x310.png" alt="Fenêtre créer un nouveau projet" width="500" height="310" /></a><figcaption id="caption-attachment-12253" class="wp-caption-text">Fenêtre "créer un nouveau projet"</figcaption></figure>
<p style="text-align: justify;">Créez un nouveau projet comme n'importe quel projet <em>C#</em>, mais sélectionnez <strong>Cosmos</strong> comme type de projet. Vous pouvez ensuite choisir de programmer votre <em>OS</em> en<em> C#</em> ou en <em>Visual Basic</em> (je conseille le <em>C#</em> mais <em>Visual Basic</em> est tout aussi bien).</p>
<p style="text-align: justify;">Renseignez ensuite le nom de votre projet, ici "Custom Protocol". Appuyez ensuite sur "OK".</p>
<p style="text-align: justify;">Oh, diable, du code&#8239;! Ne vous inquiétez&nbsp;: tout va être expliqué.</p>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>B. Le code</strong></span></h5>
<p style="text-align: justify;">Tout d'abord, on peut remarquer que votre nouveau projet ressemble beaucoup à une application console <em>C #</em> standard.</p>
<p><a href="https://www.customprotocol.com/medias/2017/01/explorateur.png"><img decoding="async" class="alignleft wp-image-12256 size-full" src="https://www.customprotocol.com/medias/2017/01/explorateur.png" alt="explorateur" width="240" height="136" /></a></p>
<p style="text-align: justify;">Pour l'instant, il faudra rester dans <em>"C# Custom Protocol"</em> et non dans "Custom ProtocolBoot".</p>
<p style="text-align: justify;">Le fichier <em>Kernel.cs</em> contient le code d'amorçage et d'exécution de votre OS.</p>
<p style="text-align: justify;">Quant au fichier <em>AssemblyInfos.cs</em>, il contient des informations relatives à votre programme.</p>
<p style="text-align: justify;"> </p>
<hr />
<p style="text-align: justify;">Voici le<em> code source</em> de votre OS, j'ai traduit le texte pour plus de compréhension (vous pouvez copier coller celui-là)&nbsp;:</p>
<pre class="lang:c# decode:true">using System;
using System.Collections.Generic;
using System.Text;
using Sys&nbsp;=&nbsp;Cosmos.System;
// Ceci permet d'importer des références.
namespace Custom_Protocol
{
    public class Kernel&nbsp;: Sys.Kernel
    {
        protected override void BeforeRun() 
        //Ceci est le code exécuté avant l'exécution du programme
        {
            Console.Clear();
            //Permet de nettoyer la console des logs de démarrage
            Console.WriteLine("Tutoriel de customprotocol.com");
            Console.WriteLine("Cosmos a démarré avec succès. Tapez une ligne de texte pour la faire revenir."); 
            //Ceci permet d'écrire une ligne
        }
        protected override void Run() 
        //Ceci est le code exécuté pendant l'exécution du programme, il se répétera indéfiniment.
        {
            Console.Write("Votre texte: "); 
            //Ceci permet d'écrire une ligne ou l'on peut écrire sur la même ligne.
            var texteutilisateur&nbsp;=&nbsp;Console.ReadLine(); 
            //Ceci est une variable qui permet de lire le texte écrit par l'utilisateur
            Console.Write("Texte ecrit: ");
            //Ceci écrit une ligne
            Console.WriteLine(texteutilisateur); 
            //Ceci écrit le texte que l'utilisateur a écrit.
        }
    }
}
</pre>
<figure id="attachment_12261" aria-describedby="caption-attachment-12261" style="width: 279px" class="wp-caption alignright"><img decoding="async" class="wp-image-12261 size-full" src="https://www.customprotocol.com/medias/2017/01/demarrer.png" alt="demarrer" width="279" height="32" srcset="https://www.customprotocol.com/medias/2017/01/demarrer.png 279w, https://www.customprotocol.com/medias/2017/01/demarrer-270x31.png 270w" sizes="(max-width: 279px) 100vw, 279px" /><figcaption id="caption-attachment-12261" class="wp-caption-text">Lets' go&#8239;!</figcaption></figure>
<h5 style="text-align: justify;"><span style="text-decoration: underline;"><strong>C. Votre premier boot&#8239;!</strong></span></h5>
<p style="text-align: justify;">Vous pouvez maintenant appuyer sur le petit bouton vert "Démarrer", il se situe sur la barre du haut de <em>Visual Studio</em>.</p>
<p style="text-align: justify;">Si votre code n'a pas d'erreurs, et si <em>VMWare</em> est bien installé, la génération va commencer. Voici une <a href="https://www.youtube.com/watch?v=zfY5ZYq6haw">petite vidéo</a> d'exemple de génération. </p>
<p style="text-align: justify;">Après que <em>VMWare</em> se soit lancé, vous devriez normalement voir du texte défiler (il correspond à <em>l'initialisation</em> de l'<em>ISO</em> dans <em>VMWare</em>). Et après tout ceci, si vous avez correctement copié-collé le code plus haut, vous devriez obtenir ceci&nbsp;:</p>
<figure id="attachment_12270" aria-describedby="caption-attachment-12270" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2017/01/ctpos.png"><img decoding="async" class="wp-image-12270 size-medium" src="https://www.customprotocol.com/medias/2017/01/ctpos-500x323.png" alt="Voici le CTPOS&#8239;! XD" width="500" height="323" /></a><figcaption id="caption-attachment-12270" class="wp-caption-text">Voici le <em>CustomProtcolOS</em>&#8239;! XD</figcaption></figure>
<p style="text-align: justify;">Voilà, vous venez de créer la première version de votre premier <em>OS </em>en<em> 32 bit</em>s, bravo&#8239;! Vous pouvez évidemment continuer à le développer, avec l'aide de plusieurs tutoriels qui vont arriver très bientôt ou de la <a href="https://github.com/CosmosOS/Cosmos/wiki">documentation officielle</a> du projet <strong>Cosmos</strong>.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/">[Windows] TUTO &#8211; [Partie 1] [MàJ le 18/05/2017] Créer son système d&#8217;exploitation avec Cosmos</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/windows-creer-son-systeme-exploitation-os-avec-cosmos/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>[PSV] [PSTV] [PC] TUTO&#160;-&#160;Installer et utiliser le VitaSDK</title>
		<link>https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/</link>
					<comments>https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/#comments</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Wed, 21 Sep 2016 10:40:13 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Tutoriels Underground]]></category>
		<category><![CDATA[Underground]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[VitaSDK]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=11595</guid>
					<description><![CDATA[<p>Après avoir lu ce tutoriel, vous pourrez compiler facilement toutes vos belles créations (et VitaRW)&#8239;!&#160;:D</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/">[PSV] [PSTV] [PC] TUTO&nbsp;-&nbsp;Installer et utiliser le VitaSDK</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">Vous avez envie de compiler votre propre application ou simplement un programme déjà existant pour votre PS Vita&#8239;? Alors vous êtes au bon endroit pour apprendre à le faire&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Le <strong>VitaSDK</strong> est le "successeur" du <em><a href="https://www.customprotocol.com/programmation/psv-pstv-pc-installer-utiliser-compiler-psp2sdk/">PSP2SDK</a></em>, apportant beaucoup plus de stabilité par rapport à son prédécesseur. Mais son principal avantage est sans conteste sa compatibilité avec <strong>HENKaku</strong>. Il est également régulièrement mis à jour, entre autres, par les membres de la <em>Team Molecule</em>. Ainsi, il dispose de toute les dernières nouveautés incorporés par l'équipe de <em>hackers</em>.</p>
<figure id="attachment_5052" aria-describedby="caption-attachment-5052" style="width: 764px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release.png"><img decoding="async" class="wp-image-5052 size-large" src="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-1024x488.png" alt="Le PSP2SDK est un kit de développement crée par 173210 et sa bande" width="764" height="364" srcset="https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-1024x488.png 1024w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-300x143.png 300w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-768x366.png 768w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-370x176.png 370w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-270x129.png 270w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-570x272.png 570w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-740x353.png 740w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release.png 1280w, https://www.customprotocol.com/medias/2015/06/PSP2SDK-programmes-publies-173210-telecharger-release-300x143@2x.png 600w" sizes="(max-width: 764px) 100vw, 764px" /></a><figcaption id="caption-attachment-5052" class="wp-caption-text">Développer des applications pour PS Vita, c'est cool&#8239;!</figcaption></figure>
<hr />
<h4><span style="text-decoration: underline;"><strong>0) Pré-requis</strong></span></h4>
<ul>
<li>Une PS Vita en 3.60 <a href="https://www.customprotocol.com/underground/vita-tuto-installer-henkaku/">avec <em>HENkaku</em> installé</a>&#8239;;</li>
<li>Un PC (<em>Windows</em> de préférence, c’est l’OS que nous utiliserons pour ce tutoriel)&#8239;;</li>
<li>Le gestionnaire d’archives <em><a href="http://www.spiroo.be/7zip/" target="_blank" rel="noopener noreferrer">7zip</a></em> ou <em>WinRar</em>&#8239;;</li>
<li>Le fichier d'installation de <a href="https://sourceforge.net/projects/devkitpro/"><em>devkitPro</em></a>&#8239;;</li>
<li>La dernière version du <a href="https://bintray.com/package/files/vitasdk/vitasdk/toolchain?order=desc&amp;sort=fileLastModified&amp;basePath=&amp;tab=files"><em>VitaSDK</em></a> selon votre OS&#8239;;</li>
<li>L'archive de <em><a href="https://github.com/xerpi/vitahelloworld/archive/master.zip">vitahelloworld</a></em>&#8239;;</li>
<li>Des compétences en C (pour programmer votre <em>homebrew</em>, c’est pas nécessaire pour simplement compiler).</li>
</ul>
<p style="text-align: justify;">Ce tutoriel sera mis à jour si des personnes souhaitent savoir comment l'installer sur Mac OS ou Linux.</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>Partie I&nbsp;-&nbsp;Installation des fichiers nécessaires</strong></span></h3>
<p style="text-align: justify;">Commencez par télécharger les fichiers nécessaires. Pour les fichiers du <strong>VitaSDK</strong>, prenez la version la plus récente correspondant à votre système d'exploitation.</p>
<figure id="attachment_11445" aria-describedby="caption-attachment-11445" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/vitasdk-version-la-plus-recente.png"><img decoding="async" class="wp-image-11445 size-medium" src="https://www.customprotocol.com/medias/2016/09/vitasdk-version-la-plus-recente-500x126.png" alt="VitaSDK version la plus récente" width="500" height="126" /></a><figcaption id="caption-attachment-11445" class="wp-caption-text">À la date où ce tutoriel a été rédigé, c'est la derniè<i>re version disponible</i></figcaption></figure>
<p>N'oubliez pas de télécharger le fichier d'installation de <em>devkitPro</em>.</p>
<h4><strong><span style="text-decoration: underline;">1) Installation de devkitPro</span></strong></h4>
<p>Commencer par lancer <em>devkitProUpdater-1.6.0.exe</em> et suivez les étapes d'installations.</p>
<figure id="attachment_11450" aria-describedby="caption-attachment-11450" style="width: 499px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/devkitpro-1.png"><img decoding="async" class="wp-image-11450 size-full" src="https://www.customprotocol.com/medias/2016/09/devkitpro-1.png" alt="devkitPro 1" width="499" height="388" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-1.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-1-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a><figcaption id="caption-attachment-11450" class="wp-caption-text">C'est partie pour l'installation du <em>devkitPro</em>&#8239;!</figcaption></figure>
<p style="text-align: justify;">Laissez cochées toutes les cases à la première étape, mais pour la deuxième étape, cochez l'option pour supprimer les fichiers téléchargés.</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/devkitpro-2.png'><img decoding="async" width="499" height="388" src="https://www.customprotocol.com/medias/2016/09/devkitpro-2.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-2.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-2-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/devkitpro-3.png'><img decoding="async" width="499" height="388" src="https://www.customprotocol.com/medias/2016/09/devkitpro-3.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-3.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-3-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a>
<p style="text-align: justify;">Il nous faudra seulement le <em>Minimal System</em> et le <em>devkitARM</em> pour faire fonctionner le <strong>VitaSDK</strong>.</p>
<figure id="attachment_11453" aria-describedby="caption-attachment-11453" style="width: 499px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/devkitpro-4.png"><img decoding="async" class="wp-image-11453 size-full" src="https://www.customprotocol.com/medias/2016/09/devkitpro-4.png" alt="devkitPro 4" width="499" height="388" srcset="https://www.customprotocol.com/medias/2016/09/devkitpro-4.png 499w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-300x233.png 300w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-370x288.png 370w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-385x300.png 385w, https://www.customprotocol.com/medias/2016/09/devkitpro-4-270x210.png 270w" sizes="(max-width: 499px) 100vw, 499px" /></a><figcaption id="caption-attachment-11453" class="wp-caption-text">On prend le minimum syndical</figcaption></figure>
<p style="text-align: justify;">Laissez le chemin d'installation par défaut et cliquez sur "Install"<em>.</em></p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png'><img decoding="async" width="740" height="395" src="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png 740w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160.png 300w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-768x410.png 768w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-370x198.png 370w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-270x144.png 270w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-570x304.png 570w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png 824w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png'><img decoding="async" width="740" height="387" src="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png 740w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157.png 300w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-768x402.png 768w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-370x194.png 370w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-270x141.png 270w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-570x298.png 570w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png 979w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<p style="text-align: justify;">Patientez pendant que le logiciel télécharge et installe les fichiers pour vous. Dès que l’installation est terminée, cliquez sur «&nbsp;Next&nbsp;» puis «&nbsp;Finish&nbsp;». Si l'installation s'est bien effectuée, vous devriez avoir à la racine de votre disque dur un dossier «&nbsp;devkitPro&nbsp;».</p>
<h4><strong><span style="text-decoration: underline;">2) Installation du VitaSDK</span></strong></h4>
<p style="text-align: justify;">Maintenant que cela est fait, décompressez l'archive du <strong>VitaSDK</strong>. À l'intérieur, vous devriez retrouver ces 4 dossiers (voir image ci-dessous).</p>
<figure id="attachment_11456" aria-describedby="caption-attachment-11456" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/contenu-vitasdk.png"><img decoding="async" class="wp-image-11456 size-medium" src="https://www.customprotocol.com/medias/2016/09/contenu-vitasdk-500x340.png" alt="contenu vitasdk" width="500" height="340" /></a><figcaption id="caption-attachment-11456" class="wp-caption-text">Le contenu de l'archive du VitaSDK</figcaption></figure>
<p style="text-align: justify;">Déplacez les 4 dossiers dans "C:\devkitPro\devkitARM" et acceptez de «&nbsp;Remplacer les fichiers dans la destination&nbsp;».</p>
<p><a href="https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier.png"><img decoding="async" class="aligncenter wp-image-11457 size-full" src="https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier.png" alt="vitasdk remplacement fichier" width="449" height="306" srcset="https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier.png 449w, https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier-300x204.png 300w, https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier-370x252.png 370w, https://www.customprotocol.com/medias/2016/09/vitasdk-remplacement-fichier-270x184.png 270w" sizes="(max-width: 449px) 100vw, 449px" /></a></p>
<p style="text-align: justify;">Maintenant que cela est fait, ne pensez pas que c'est déjà fini. Il nous reste un dernier petit quelque chose.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>3) Configuration du système</strong></span></h4>
<p style="text-align: justify;">Cliquez droit sur «&nbsp;Ordinateur&nbsp;» et sélectionnez l’option «&nbsp;Propriétés&nbsp;». Si vous ne le trouvez vraiment pas, allez dans «&nbsp;Panneau de configuration -&gt; Système et sécurité -&gt; Système&nbsp;».</p>
<div id="attachment_6112" class="wp-caption aligncenter"><figure id="attachment_6112" aria-describedby="caption-attachment-6112" style="width: 310px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png"><img decoding="async" class="wp-image-6112 size-full" src="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png" sizes="(max-width: 310px) 100vw, 310px" srcset="https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows.png 310w, https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows-186x135.png 186w, https://www.customprotocol.com/medias/2015/08/proprietes-ordinateur-windows-180x131.png 180w" alt="Vous devriez pouvoir accéder aux propriétés de votre ordinateur via les raccourcis à gauche de l'explorateur de fichiers Windows" width="310" height="225" /></a><figcaption id="caption-attachment-6112" class="wp-caption-text">Vous devriez pouvoir accéder aux propriétés de votre ordinateur via les raccourcis à gauche de l’explorateur de fichiers <em>Windows</em></figcaption></figure>
<p>Sur la nouvelle fenêtre qui s’ouvre, choisissez à gauche l’option «&nbsp;Paramètres système avancés&nbsp;».</p>
</div>
<div id="attachment_6113" class="wp-caption aligncenter"><figure id="attachment_6113" aria-describedby="caption-attachment-6113" style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows.png"><img decoding="async" class="wp-image-6113 size-medium" src="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-500x356.png" sizes="(max-width: 500px) 100vw, 500px" srcset="https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-500x356.png 500w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-190x135.png 190w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-764x543.png 764w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-600x427.png 600w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-180x128.png 180w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows-360x256.png 360w, https://www.customprotocol.com/medias/2015/08/parametres-systeme-avances-windows.png 786w" alt="Attention, on va paramétrer&#8239;!" width="500" height="356" /></a><figcaption id="caption-attachment-6113" class="wp-caption-text">Attention, on va paramétrer&#8239;!</figcaption></figure></div>
<p>Sur la nouvelle fenêtre (encore) qui s’ouvre, cliquez sur le bouton tout en bas «&nbsp;Variables d’environnement&nbsp;».</p>
<div id="attachment_6114" class="wp-caption aligncenter"><figure id="attachment_6114" aria-describedby="caption-attachment-6114" style="width: 416px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png"><img decoding="async" class="wp-image-6114 size-full" src="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png" sizes="(max-width: 416px) 100vw, 416px" srcset="https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows.png 416w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-117x135.png 117w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-180x207.png 180w, https://www.customprotocol.com/medias/2015/08/variables-environnement-parametres-avances-windows-360x415.png 360w" alt="Vous voyez le bouton j'espère&#8239;?&nbsp;:p" width="416" height="479" /></a><figcaption id="caption-attachment-6114" class="wp-caption-text">Vous voyez le bouton j’espère&#8239;?&nbsp;:p</figcaption></figure></div>
<p style="text-align: justify;">Une troisième fenêtre (eh beh purée, qu’est-ce qu’il fait chier lui) va être ouverte. Sur celle-ci, 2 listes s’afficheront à vous&nbsp;: «&nbsp;Variables utilisateur pour X&nbsp;» et «&nbsp;Variables système&nbsp;». Dans cette liste-ci, trouvez la variable «&nbsp;Path&nbsp;» (et non «&nbsp;PATHTEXT&nbsp;»&#8239;! D’ailleurs c’est rigolo, quand on le prononce, ça sonne presque «&nbsp;pastèque&nbsp;». Lol, qu’est-ce qu’on s’marre ici).</p>
<div id="attachment_6116" class="wp-caption aligncenter"><figure id="attachment_6116" aria-describedby="caption-attachment-6116" style="width: 384px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/variables-system-path.png"><img decoding="async" class="wp-image-6116 size-full" src="https://www.customprotocol.com/medias/2015/08/variables-system-path.png" sizes="(max-width: 384px) 100vw, 384px" srcset="https://www.customprotocol.com/medias/2015/08/variables-system-path.png 384w, https://www.customprotocol.com/medias/2015/08/variables-system-path-123x135.png 123w, https://www.customprotocol.com/medias/2015/08/variables-system-path-180x198.png 180w, https://www.customprotocol.com/medias/2015/08/variables-system-path-360x397.png 360w" alt="Hop, il est juste là le coquin&#8239;!" width="384" height="423" /></a><figcaption id="caption-attachment-6116" class="wp-caption-text">Hop, il est juste là le coquin&#8239;!</figcaption></figure></div>
<p style="text-align: justify;">Cliquez une fois dessus pour le sélectionner (il sera mis en surbrillance/surligné). Cliquez ensuite sur le bouton «&nbsp;Modifier&nbsp;» juste en bas. Une quatrième fenêtre va être appelée (y en a encore 5 autres, accrochez-vous&#8239;! Non j’déconne, c’est la dernière, promis).</p>
<div id="attachment_6117" class="wp-caption aligncenter"><figure id="attachment_6117" aria-describedby="caption-attachment-6117" style="width: 387px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png"><img decoding="async" class="wp-image-6117 size-full" src="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png" sizes="(max-width: 387px) 100vw, 387px" srcset="https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path.png 387w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-235x85.png 235w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-180x65.png 180w, https://www.customprotocol.com/medias/2015/08/modification-variable-systeme-path-360x130.png 360w" alt="modification variable systeme path" width="387" height="140" /></a><figcaption id="caption-attachment-6117" class="wp-caption-text">Bon, no comment…</figcaption></figure></div>
<p>Copiez, après le dernier «&nbsp;bin;&nbsp;», ceci (n’oubliez pas le point-virgule à la fin&#8239;!)&nbsp;:</p>
<div class="crayon-plain-wrap">
<pre class="lang:default decode:true">C:\devkitPro\devkitARM\bin;C:\devkitPro\arm-vita-eabi\bin;
</pre>
</div>
<p style="text-align: justify;">N’oubliez surtout pas d’enregistrer en cliquant sur «&nbsp;OK&nbsp;», puis fermez toutes les fenêtres des propriétés <em>Windows</em> (ouf, enfin). Voilà, le <strong>VitaSDK</strong> est enfin installé&#8239;! Bon maintenant faut tester&#8239;!</p>
<h3 style="text-align: center;"><span style="text-decoration: underline;"><strong>Partie II&nbsp;-&nbsp;Utiliser le VitaSDK</strong></span></h3>
<h4><span style="text-decoration: underline;">1) Compilation d'un homebrew</span></h4>
<p style="text-align: justify;">Cette partie va vous surprendre par sa durée. Téléchargez le <em>vitahelloworld</em> (voir dans les Pré-requis) de <em>xerpi</em> et décompressez l'archive. Ouvrez le dossier <strong>vitahelloworld-master</strong> et cliquez sur "Fichier" puis "Ouvrir l'invite de commandes". Tapez simplement «&nbsp;make&nbsp;» et ça compilera tout seul&#8239;!</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png'><img decoding="async" width="740" height="395" src="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-740x395.png 740w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160.png 300w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-768x410.png 768w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-370x198.png 370w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-270x144.png 270w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-570x304.png 570w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld.png 824w, https://www.customprotocol.com/medias/2016/09/cmd-make-vitahelloworld-300x160@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png'><img decoding="async" width="740" height="387" src="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-740x387.png 740w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157.png 300w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-768x402.png 768w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-370x194.png 370w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-270x141.png 270w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-570x298.png 570w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation.png 979w, https://www.customprotocol.com/medias/2016/09/vitahelloworld-henkaku-compilation-300x157@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<p style="text-align: justify;">Vous pouvez installer le ".VPK" créé et lancer le <em>homebrew</em> que vous avez compilé sur votre console&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<figure style="width: 500px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-xerpi-screenshot-500x283.png"><img decoding="async" src="https://www.customprotocol.com/medias/2015/08/vitahelloworld-master-xerpi-screenshot-500x283.png" width="500" height="283" /></a><figcaption class="wp-caption-text">Que c'est joli&#8239;!</figcaption></figure>
<p style="text-align: justify;">Vous pourriez vous arrêtez là mais si vous souhaitez créer vos propres applications, il vous faudra installer des librairies supplémentaires.</p>
<h4><strong><span style="text-decoration: underline;">2) Installation de bibliothèques supplémentaires</span></strong></h4>
<p style="text-align: justify;">Il est parfois intéressant d'ajouter de nouvelles bibliothèques pour avoir de nouvelles fonctions à utiliser. Pour cela, il faut télécharger la librairie en question et la compiler. Cependant, il faudra parfois suivre les instructions données avec la librairie pour réussir la compilation.</p>
<p style="text-align: justify;">Pour vous donner un exemple, nous allons compiler et installer la <em><a href="https://github.com/xerpi/libftpvita/archive/1.1.zip">libftpvita</a></em> de <em>xerpi</em>. Commencez par téléchargez et extraire les fichiers. Ouvrez le dossier "libftpvita", et cliquez droit tout en maintenant la touche <em>Shift</em> pour sélectionner "Ouvrir l'invite de commandes" (il se peut que cette option n'apparaisse pas, dans ce cas déplacez le dossier "libftpvita" sur votre Bureau). Comme pour compiler un <em>homebrew</em>, écrivez simplement «&nbsp;make&nbsp;». La librairie est compilée, maintenant, il faut l'installer&#8239;!</p>
<figure id="attachment_11553" aria-describedby="caption-attachment-11553" style="width: 207px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2016/09/libftpvita-compile.png"><img decoding="async" class="wp-image-11553 size-full" src="https://www.customprotocol.com/medias/2016/09/libftpvita-compile.png" alt="libftpvita-compile" width="207" height="125" /></a><figcaption id="caption-attachment-11553" class="wp-caption-text">La librairie est compilée avec l'apparition du fichier <em>libftpvita.a</em></figcaption></figure>
<p style="text-align: justify;">Dans le dossier "libftpvita", un fichier<em> libftpvita.a</em> a été créé. Déplacez-le dans le dossier "C:\devkitPro\arm-vita-eabi\lib". Retournez dans le dossier où la bibliothèque a été compilée et copiez le fichier "ftpvita.h" dans le dossier "C:\devkitPro\arm-vita-eabi\include". Voilà, la librairie est installée&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p style="text-align: justify;">Si vous voulez faire des tests, sachez que les librairies sont souvent accompagnées d'exemples qu'il vous suffit de compiler.</p>
<figure id="attachment_5487" aria-describedby="caption-attachment-5487" style="width: 501px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection.jpg"><img decoding="async" class="wp-image-5487" src="https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection.jpg" alt="FTPVita en attente de connection" width="501" height="284" srcset="https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection.jpg 960w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-300x170.jpg 300w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-768x435.jpg 768w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-370x210.jpg 370w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-270x153.jpg 270w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-570x323.jpg 570w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-740x419.jpg 740w, https://www.customprotocol.com/medias/2015/07/FTPVita-attente-de-connection-300x170@2x.jpg 600w" sizes="(max-width: 501px) 100vw, 501px" /></a><figcaption id="caption-attachment-5487" class="wp-caption-text">L'exemple fourni ici est l'homebrew <strong>FTPVita</strong>.</figcaption></figure>
<hr />
<p style="text-align: justify;">Si vous avez le moindre problème, n'hésitez pas à poser votre question dans la <a href="https://www.customprotocol.com/forum/programmation/" target="_blank" rel="noopener noreferrer">section programmation</a> de notre forum. Si vous voulez lâcher un commentaire de remerciement, c'est aussi possible à la suite de ce tutoriel&#8239;!&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Merci pour votre lecture passionnée&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/">[PSV] [PSTV] [PC] TUTO&nbsp;-&nbsp;Installer et utiliser le VitaSDK</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/psv-pstv-pc-tuto-installer-utiliser-vitasdk/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>[PSP] [Vita] Le ONELua de nouveau mis à jour</title>
		<link>https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/</link>
					<comments>https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 12 Jul 2015 15:36:21 +0000</pubDate>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Top Articles]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[OneLua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=5423</guid>
					<description><![CDATA[<p>Découvrons ensemble les nouveautés de cette nouvelle version du ONELua&#8239;!</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/">[PSP] [Vita] Le ONELua de nouveau mis à jour</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><div align="center" class="alert alert-info "><b><u>Note</u></b> : cet article est très long et il s'adresse aux développeurs à devenir ou bien ceux maîtrisant déjà le langage <em>Lua</em> souhaitant découvrir ce que la PSP a dans le ventre. La quantité de travail fourni dans cet article est considérable et j'espère que vous l'apprécierez car j'y ai consacré beaucoup de mon temps libre. Je tiens à remercier notamment <em>gdljjrod</em> ainsi que<em> Davis Nuñez</em> pour leur patience et leur aide à la rédaction de cet article.</div>
<p style="text-align: justify;"><a href="https://www.customprotocol.com/underground/version-3-onelua-arrive-tres-bientot/" target="_blank" rel="noopener noreferrer">Nous vous l'avions annoncé</a>, <em>gdljjrod</em> et <em>Rober Galarga</em> ont mis à jour leur interpréteur Lua pour PSP dénommé <strong>ONELua</strong>. Après deux versions réussies, les deux développeurs reviennent aujourd'hui avec une nouvelle version contenant encore une flopée de nouveautés que nous allons <strong>découvrir et décortiquer ensemble</strong> pour vous permettre de comprendre leur utilisation via des explications, des exemples et des captures d'écran&nbsp;: bref un article signé <strong>Custom Protocol</strong>.</p>
<figure id="attachment_5173" aria-describedby="caption-attachment-5173" style="width: 480px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/06/vignette-ONELua-v3.png"><img decoding="async" class="wp-image-5173 size-full" src="https://www.customprotocol.com/medias/2015/06/vignette-ONELua-v3.png" alt="vignette-ONELua-v3" width="480" height="272" srcset="https://www.customprotocol.com/medias/2015/06/vignette-ONELua-v3.png 480w, https://www.customprotocol.com/medias/2015/06/vignette-ONELua-v3-300x170.png 300w, https://www.customprotocol.com/medias/2015/06/vignette-ONELua-v3-370x210.png 370w, https://www.customprotocol.com/medias/2015/06/vignette-ONELua-v3-270x153.png 270w" sizes="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5173" class="wp-caption-text">Le <b>ONELua</b> Version 3</figcaption></figure>
<hr />
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Optimisations</strong></span></h4>
<p style="text-align: justify;">Commençons tout d'abord par les nouveautés au niveau des optimisations. Le <strong>ONELua</strong> en version 3 supporte maintenant les PS Vita utilisant le <strong>VHBL</strong>, pratique pour lancer des <em>homebrews</em> si on possède le jeu (et sa démo) <a href="https://www.customprotocol.com/underground/vita-nouvel-exploit-disponible-demo/">Toukiden: Kiwami</a> (dispo uniquement sr le <em>Store</em> JP) possédant un exploit en 3.51, ou encore l'<a href="https://www.customprotocol.com/underground/tuto-utiliser-exploit-impatchable-qwikrazor87-firmware-3-36-3-50/" target="_blank" rel="noopener noreferrer"><em>exploit World of Pool</em></a>. Ainsi le <em>Lua Player</em> devient pleinement compatible pour tourner sur toutes les PSP mais également sur les PS Vita. Les développeurs ont également ajouté une nouvelle bibliothèque nommée <strong>BitOp</strong> qui ajoute des opérations binaires sur les nombres. Vous pouvez regarder les fonctions disponibles avec des exemples à <a href="http://bitop.luajit.org/api.html">cette adresse</a>.</p>
<figure id="attachment_2311" aria-describedby="caption-attachment-2311" style="width: 300px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/02/health-psvita.png"><img decoding="async" class="wp-image-2311 size-medium" src="https://www.customprotocol.com/medias/2015/02/health-psvita-300x210.png" alt="N'oubliez pas de consulter notre tutoriel pour garder votre PS Vita en firmware 3.36 et empêcher la mise à jour automatique" width="300" height="210" srcset="https://www.customprotocol.com/medias/2015/02/health-psvita-300x210.png 300w, https://www.customprotocol.com/medias/2015/02/health-psvita-370x259.png 370w, https://www.customprotocol.com/medias/2015/02/health-psvita-270x189.png 270w, https://www.customprotocol.com/medias/2015/02/health-psvita-570x399.png 570w, https://www.customprotocol.com/medias/2015/02/health-psvita.png 720w, https://www.customprotocol.com/medias/2015/02/health-psvita-300x210@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-2311" class="wp-caption-text">Le <b>ONELua</b> version 3 pleinement compatible avec la PS Vita</figcaption></figure>
<p style="text-align: justify;">Cette bibliothèque n'a pas été implémentée au <strong>ONELua</strong> par hasard, en effet, vous trouverez dans l'archive contenant l'interpréteur un exemple vous démontrant comment utiliser une nouvelle fonction permettant de créer des maps avec un simple fichier texte. Il y a seulement deux fonctions mais aux fonctionnalités intéressantes.</p>
<pre class="lang:lua decode:true" title="Fonction Map">map.new(IMAGE tileset, TABLE mapData, NUMBER TileX, NUMBER TileY)
--IMAGE tileset&nbsp;: Image généré via GBA Graphics contenant les textures pour la map
--TABLE mapdata&nbsp;: Map créé via GBA Graphics contenant les informations de la map
--NUMBER TileX&nbsp;: Taille largeur en pixel des textures à découper
--NUMBER TileY&nbsp;: Taille longueur en pixel des textures à découper
--Retourne la map (à stocker dans une variable)
map.blit(MAP map, NUMBER x, NUMBER y)
--MAP map&nbsp;: Map à afficher généré via la fonction map.new
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER y&nbsp;: Placement sur l'écran en y
--Ne retourne rien</pre>
<p style="text-align: justify;">On peut soit dans l'exemple fourni créer une map en vue de face mais également en vue de côté. Comme cité dans les fonctions, il vous faudra obligatoirement utiliser le logiciel <a href="http://www.mobile-dev.ch/dl/pc/GBA%20Graphics%201.09.7z">GBA Graphics 1.09</a> disponible certes en anglais mais aussi en français&#8239;!</p>
<p style="text-align: justify;">Voici quelques exemples postés par plusieurs développeurs des possibilités de ces fonctions.</p>
<div align="center">
<blockquote class="twitter-tweet" lang="fr">
<p dir="ltr" lang="en" style="text-align: center;">Peace in <a href="https://twitter.com/hashtag/An%C3%A9sidor?src=hash">#Anésidor</a> but for how long&#8239;? Powered by <a href="https://twitter.com/hashtag/ONELuav3?src=hash">#ONELuav3</a> developed by <a href="https://twitter.com/gdljjrod">@gdljjrod</a> and Rober Galarga. <a href="http://t.co/J28FzCronr">pic.twitter.com/J28FzCronr</a></p>
<p>— Applelo (@Applelo1) <a href="https://twitter.com/Applelo1/status/614709397776900096">27 Juin 2015</a></p>
</blockquote>
<blockquote class="twitter-tweet" lang="fr">
<p dir="ltr" lang="en"><a href="https://twitter.com/gdljjrod">@gdljjrod</a><a href="https://twitter.com/Applelo1">@Applelo1</a><a href="https://twitter.com/CustomProtocol">@CustomProtocol</a> Trying to create my own Super Mario world test <a href="https://twitter.com/hashtag/Tilesets?src=hash">#Tilesets</a><a href="https://twitter.com/hashtag/Onelua?src=hash">#Onelua</a><a href="https://twitter.com/hashtag/2D?src=hash">#2D</a><a href="http://t.co/TpY61PCLGy">pic.twitter.com/TpY61PCLGy</a></p>
<p>— Davis Nuñez (@DevDavisNunez) <a href="https://twitter.com/DevDavisNunez/status/611610696652959744">18 Juin 2015</a></p>
</blockquote>
</div>
<p style="text-align: justify;">En exemple, pour utiliser cette fonction, vous pouvez vous référer au contenu de l'archive du <strong>ONELua </strong>où le code a été commenté par @applelo1 (moi même) en français.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions images</strong></span></h4>
<p style="text-align: justify;">Passons ensuite aux fonctions images, où nous avons le droit à une ribambelle de nouveautés. Nous avons enfin la possibilité de charger les images dans la VRAM (mémoire vidéo) via la fonction <em>image.loadv()</em> pour un affichage plus rapide de celles-ci (pour des <em>sprites</em> par exemple) mais plus limité en mémoire que la RAM (mémoire vive). Il est aussi possible de "déplacer" une image de la VRAM à la RAM et inversement en utilisant la fonction <em>image.move()</em>.</p>
<p style="text-align: justify;">Désormais, via la fonction <em>image.loadfromdata()</em>, les images converties en données binaires peuvent être chargées, utile pour charger les images disponibles sur internet permettant un gain de rapidité. Un petit exemple s'impose pour vous montrer&nbsp;:</p>
<pre class="lang:lua decode:true" title="Exemple image.loadfromdata">local fp&nbsp;=&nbsp;io.open("monimg.png","rb")--J'ouvre l'image comme si s'était un fichier
local databin&nbsp;=&nbsp;fp:read("*a")--Je lis le contenu du fichier
fp:close()--Je ferme la lecture du fichier
monimg&nbsp;=&nbsp;image.loadfromdata(databin,__PNG)--La fonction charge et transforme les données binaires en fichiers
while true do--J'ouvre ma boucle
image.blit(monimg,0,0) --J'affiche mon image
screen.flip()--Je rafraichie l'écran
end--Je ferme la boucle</pre>
<p style="text-align: justify;">Et c'est pas fini, puisqu'on peut également modifier ses images via trois nouvelles fonctions&#8239;! La première,<em> image.blitadd()</em>, permet d'afficher l'image en y ajoutant un effet de couleur alors que la deuxième, <em>image.blitsub()</em>, au contraire, permet de supprimer la couleur. La dernière quant à elle, <em>image.blittint()</em>, permet d'afficher une image et de la teindre également d'une couleur.</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua.png'><img decoding="async" width="480" height="272" src="https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua.png 480w, https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua-300x170.png 300w, https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua-370x210.png 370w, https://www.customprotocol.com/medias/2015/07/custom_protocol_red_onelua-270x153.png 270w" sizes="(max-width: 480px) 100vw, 480px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua.png'><img decoding="async" width="480" height="272" src="https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua.png 480w, https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua-300x170.png 300w, https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua-370x210.png 370w, https://www.customprotocol.com/medias/2015/07/custom_protocol_imageadd_onelua-270x153.png 270w" sizes="(max-width: 480px) 100vw, 480px" /></a>
<p style="text-align: justify;">Voici le récapitulatif de toute les nouvelles fonctions concernant les images retranscrit ici.</p>
<pre class="lang:lua decode:true" title="Fonctions Image">image.loadv(STRING path)
image.loadv(STRING path, COLOR mask)
image.loadv(STRING path, NUMBER w, NUMBER h)
image.loadv(STRING path, NUMBER w, NUMBER h, COLOR mask)
--STRING path&nbsp;: Chemin de l'image
--COLOR mask&nbsp;: Masque de couleur à appliquer à l'image
--NUMBER w&nbsp;: Largeur pour couper les sprites
--NUMBER h&nbsp;: Hauteur pour couper les sprites
--Retourne une image, prête à être utiliser.
image.move(IMAGE img)
--IMAGE img&nbsp;: Variable de l'image
--Ne retourne rien
image.loadfromdata(STRING data, NUMBER type)
--STRING data&nbsp;: Donnée de l'image en fichier binaire
--NUMBER type&nbsp;: 
---------------__PNG (0) pour image en .png
---------------__JPG (1) pour image en .jpg
---------------__GIF (2) pour image en .gif
image.blitadd(IMAGE img,NUMBER x,NUMBER y,NUMBER coef)
--IMAGE img&nbsp;: Variable de l'image
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER Y&nbsp;: Placement sur l'écran en y	
--NUMBER coef&nbsp;: Niveau d'ajout de couleur (entre 0 et 255)
--Ne retourne rien
image.blitsub(IMAGE img,NUMBER x,NUMBER y,NUMBER coef)
--IMAGE img&nbsp;: Variable de l'image
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER Y&nbsp;: Placement sur l'écran en y	
--NUMBER coef&nbsp;: Niveau de suppression de couleur (entre 0 et 255)
--Ne retourne rien
image.blittint(IMAGE img,NUMBER x,NUMBER y,COLOR color)
--IMAGE img&nbsp;: Variable de l'image
--NUMBER x&nbsp;: Placement sur l'écran en x
--NUMBER Y&nbsp;: Placement sur l'écran en y	
--COLOR color&nbsp;: Couleur pour teindre l'image
--Ne retourne rien</pre>
<p style="text-align: justify;">Le <strong>ONELua</strong> se montre aussi très performant comme gestionnaire des <em>EBOOT.PBP</em>, 3 nouvelles fonctions font ainsi leur entrée avec cette troisième version par ce que l'on appelle leurs <em>callbacks</em>. La fonction <em>game.pack()</em> permet de créer un <em>EBOOT</em> si vous disposez d'un dossier contenant toutes les ressources nécessaires (PARAM.SFO, ICON0.PNG...). Ensuite, <em>game.add()</em> permet d'ajouter ou remplacer un fichier alors que la fonction <em>game.remove()</em> permet finalement de supprimer un fichier contenu dans l'<em>EBOOT.PBP</em>.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions TV</strong></span></h4>
<p style="text-align: justify;">Vous devriez savoir, puisque nous vous l'avions déjà <a href="https://www.customprotocol.com/underground/version-3-onelua-arrive-tres-bientot/">annoncé</a>, que le <strong>ONELua</strong> intègre désormais des fonctions liées à la télévision, la première étant de pouvoir retransmettre l'écran de la PSP vers l'écran d'une télé si vous disposez d'un adaptateur. Il est possible notamment de régler via cette fonction la qualité de la retransmission. Attention, il vous faudra impérativement le <em>dvemgr.prx </em><i>contenu dans l'archive pour pouvoir faire fonctionner la fonction. La deuxième, </i><em>os.cabletv()</em><i>, permet de </i>reconnaître si votre PSP est branchée à un écran externe ainsi que le type de câble utilisé.</p>
<pre class="lang:lua decode:true" title="Fonctions Télévisions">os.modetv(NUMBER quality)	
--Active la retransmission
--NUMBER quality&nbsp;: La qualité de retransmission
--------------------__8888 (32 bits RGBA)
--------------------__4444 (16 bits R4G4B4A4)
--------------------__5551 (16 bits R5G5B5A1)
--------------------__5650 (16 bits R5G5B5, pas de chaîne alpha)
--Ne retourne rien
os.modetv()
--Désactive la retransmission
--Ne retourne rien
os.cabletv()	
--Reconnait le cable utilisé
--Retourne un nombre
--0 si aucun cable n'est connecté
--1 si c'est un cable S-Video/AV (composite)
--2 si c'est un cable D Terminal Cable/Component Cable
</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonction windows</strong></span></h4>
<p style="text-align: justify;">En plus de cela, une nouvelle fonction vient de faire son apparition, et nommée <em>os.messagebox()</em>. Elle permet d'afficher une boîte de dialogue (ressemblant beaucoup à celle de <em>Windows</em>) avec des possibilités de personnalisation. On peut par exemple entrer le titre et le message de son choix, ainsi que choisir entre 1 à 4 boutons associés à des actions simples (Oui, Non, Quitter, Annuler, Ok) mais malheureusement qui ne sont pas paramétrables et en anglais. Voici l'exemple fourni par les auteurs avec les commentaires traduits en français&nbsp;:</p>
<pre class="lang:lua decode:true" title="Exemple os.messagebox()">option&nbsp;=&nbsp;{"OK","CANCEL","YES","NO",""}--Table des réponses
--La variable ou est reçu les réponses de la fonction os.messagebox()
local response&nbsp;=&nbsp;5
local title&nbsp;=&nbsp;"Test Of Box" -- Titre
local msg&nbsp;=&nbsp;"Hello From Box...\nOK&nbsp;=&nbsp;1\nCANCEL&nbsp;=&nbsp;2\nYES&nbsp;=&nbsp;3\nNO&nbsp;=&nbsp;4\nEXIT&nbsp;=&nbsp;5" -- Message
while true do
    buttons.read() -- Lecture des touches pressés
    if buttons.triangle then -- Pressez /\
	-- Montre deux boutons X:OK, O:CANCEL par défaut
		response&nbsp;=&nbsp;os.messagebox(title,msg)
    elseif buttons.circle then --Pressez O
	-- Montre le bouton 0:EXIT
        response&nbsp;=&nbsp;os.messagebox(title,msg,__CIRCLE,__EXIT)
    elseif buttons.cross then--Pressez X
	-- Montre deux boutons avec L: No, R: Yes
		response&nbsp;=&nbsp;os.messagebox(title,msg,__L,__NO,__R,__YES)
    elseif buttons.square then -- Pressez []
	-- Montre trois boutons avec L: No, R: Yes X: YES, O: NO, /\: Exit
		response&nbsp;=&nbsp;os.messagebox(title,msg,__CROSS,__YES,__CIRCLE,__CANCEL,__TRIANGLE,__EXIT)
    end
    screen.print(10,5,"Example Message Box")
	
	screen.print(10,17,"Presez triangle pour un simple Message Box (X:OK, O:CANCEL)",0.6)
	screen.print(10,32,"Pressez rond pour un Message Box (O:EXIT)",0.6)
	screen.print(10,47,"Pressez croix pour un Message Box (L:NO, R:YES)",0.6)
	screen.print(10,62,"Pressez carré pour un Message Box (X:YES, O:CANCEL, triangle:EXIT)",0.6)
    -- Nous affichons la valeur pour telle action&nbsp;:)
	screen.print(10,200,"Résultat: "..response.." Selection: "..option[response])
    screen.flip() -- Rafraîchissement de l'écran
end
	</pre>
<figure id="attachment_5367" aria-describedby="caption-attachment-5367" style="width: 480px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/07/ONELua_messagebox.png"><img decoding="async" class="wp-image-5367 size-full" src="https://www.customprotocol.com/medias/2015/07/ONELua_messagebox.png" alt="ONELua_messagebox" width="480" height="272" srcset="https://www.customprotocol.com/medias/2015/07/ONELua_messagebox.png 480w, https://www.customprotocol.com/medias/2015/07/ONELua_messagebox-300x170.png 300w, https://www.customprotocol.com/medias/2015/07/ONELua_messagebox-370x210.png 370w, https://www.customprotocol.com/medias/2015/07/ONELua_messagebox-270x153.png 270w" sizes="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5367" class="wp-caption-text">La boîte de dialogue sympathique mais qui reste limitée...</figcaption></figure>
<p style="text-align: justify;">De plus, impossible de personnaliser l'apparence des boutons et de la boîte de dialogue. Espérons une mise à jour pour pouvoir personnaliser d'avantage cette petite fonction bien sympathique.</p>
<pre class="lang:lua decode:true" title="Fonction os.messagebox()">os.messagebox(STRING title,STRING mje)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--Retourne 1 si la réponse est OK (quand vous pressez X) ou bien 2 quand vous choisissez CANCEL (quand vous pressez O)
os.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--NUMBER button1&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned1&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT
os.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1,NUMBER button2,NUMBER assigned2)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--NUMBER button1&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned1&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--NUMBER button2&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned2&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT
os.messagebox(STRING title,STRING mje,NUMBER button1,NUMBER assigned1,NUMBER button2,NUMBER assigned2,NUMBER button3,NUMBER assigned3)
--STRING title&nbsp;: Le titre de la boîte de dialogue
--STRING mje&nbsp;: Le message à mettre dans la boîte de dialogue
--NUMBER button1&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned1&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--NUMBER button2&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned2&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--NUMBER button3&nbsp;: Le bouton à inscrire (par exemple __CIRCLE, __UP, __L)
--NUMBER assigned3&nbsp;: L'action à assigner __OK, __CANCEL, __YES, __NO, __EXIT
--Retourne 1 si l'action est __OK, 2 si __CANCEL, 3 si __YES, 4 si __NO et 5 si __EXIT
</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions écran</strong></span></h4>
<p style="text-align: justify;">Continuons sur une nouvelle fonction qui ravira toute personne qui ne souhaiterait pas utiliser le <del>grand</del> écran de la PSP&nbsp;: la fonction <em>screen.clip()</em>. Vous l'aurez deviné, elle permet de n'afficher qu'une partie de l'écran déterminable avec la fonction.</p>
<pre class="lang:lua decode:true" title="Fonction screen.clip()">screen.clip(NUMBER x,NUMBER y, NUMBER w, NUMBER h)
--Active la délimitation d'affichage à l'écran
--NUMBER x&nbsp;: Position sur l'axe x 
--NUMBER y&nbsp;: Position sur l'axe y
--NUMBER w&nbsp;: Largeur
--NUMBER h&nbsp;: Hauteur
--Ne retourne rien
screen.clip()
--Désactive la délimitation d'affichage à l'écran
--Ne retourne rien</pre>
<figure id="attachment_5369" aria-describedby="caption-attachment-5369" style="width: 480px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/07/ONELua_screen.clip_.png"><img decoding="async" class="wp-image-5369 size-full" src="https://www.customprotocol.com/medias/2015/07/ONELua_screen.clip_.png" alt="ONELua_screen.clip()" width="480" height="272" srcset="https://www.customprotocol.com/medias/2015/07/ONELua_screen.clip_.png 480w, https://www.customprotocol.com/medias/2015/07/ONELua_screen.clip_-300x170.png 300w, https://www.customprotocol.com/medias/2015/07/ONELua_screen.clip_-370x210.png 370w, https://www.customprotocol.com/medias/2015/07/ONELua_screen.clip_-270x153.png 270w" sizes="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5369" class="wp-caption-text">Le logo <strong>Custom Protocol</strong> un peu coupé&nbsp;:p</figcaption></figure>
<p>&nbsp;</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonctions texte</strong></span></h4>
<p style="text-align: justify;">Le développeur a également ajouté une fonctionnalité déjà présente dans plusieurs <em>Lua Players</em>&nbsp;: la fonctionnalité permettant de faire défiler un texte. Disponible maintenant avec la fonction screen.print(), il est ainsi possible de réaliser "un scroll" du texte de gauche à droite, de droite à gauche, de droite à gauche puis de gauche à droite et...</p>
<pre class="lang:lua decode:true" title="Example Défilement de Texte">-- ## Example Scroll Print ##
-- Nous assignors des variables pour les valeurs X permettrons le daplacement du texte
scrollx1&nbsp;=&nbsp;10 -- axe pour déplacement vers la gauche (droite vers gauche)
scrollx2&nbsp;=&nbsp;450 -- axe pour déplacement vers la droite (gauche vers droite)
scrollx3&nbsp;=&nbsp;240 -- axe pout déplacement de la droite vers la gauche (droite vers la gauche sans disparition)
scrollx4&nbsp;=&nbsp;240 -- gauche droite puis droite gauche (centré)
--Charge la palette de couleur
color.loadpalette()
while true do--On ouvre la boucle
	draw.line(240,0,240,272,color.red) --Nous traçons une ligne vertical rouge au milieu de l'écran
	--[[La variable précédente assigné à l'axe x est passé comme un argument et ergot le résultat de la fonction et s'ajoute à cela l'argument "w" pour régler l'affichage de la zone de texte.]]
	--__SLEFT est comme un alignement vers la gauche affiché à partir de l'axe x vers la droite avec un espace d'affichage de 90.
	scrollx1&nbsp;=&nbsp;screen.print(scrollx1,10,"test scroll gauche",0.7,color.white,color.black,__SLEFT,90)
	--__SRIGHT est comme un alignement vers la droite affiché à partir de l'axe x vers la gauche avec un espace d'affichage de 100.
	scrollx2&nbsp;=&nbsp;screen.print(scrollx2,25,"test scroll right",0.7,color.white,color.black,__SRIGHT,100)
	-- __STHROUGH est comme un alignement vers la gauche qui est affiché à partir de l'axe x vers la droite avec un espace d'affichage de 100. 
	scrollx3&nbsp;=&nbsp;screen.print(scrollx3,50,"test scroll throuh",0.7,color.white,color.black,__STHROUGH,100)
	--[[__SSEESAW est un alignement au centre affiché sur l'axe x - moitié de l'espace pour l'afficher,
du droite centrer à gauche centré avec un espace d'affichage de 100
	Note: Si ce mode n'a pas d'effet, c'est pour les raison précedemment cité, alors il effete normalement un texte aligné à gauche.]]
	scrollx4&nbsp;=&nbsp;screen.print(scrollx4,70,"test scroll seesaw",0.7,color.white,color.black,__SSEESAW,100)
	screen.flip() --Rafraichissement de l'écran
end--Fin de la boucle
	</pre>
<figure id="attachment_5420" aria-describedby="caption-attachment-5420" style="width: 480px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/07/ONELuav3_scroll.png"><img decoding="async" class="wp-image-5420 size-full" src="https://www.customprotocol.com/medias/2015/07/ONELuav3_scroll.png" alt="ONELuav3_scroll" width="480" height="272" srcset="https://www.customprotocol.com/medias/2015/07/ONELuav3_scroll.png 480w, https://www.customprotocol.com/medias/2015/07/ONELuav3_scroll-300x170.png 300w, https://www.customprotocol.com/medias/2015/07/ONELuav3_scroll-370x210.png 370w, https://www.customprotocol.com/medias/2015/07/ONELuav3_scroll-270x153.png 270w" sizes="(max-width: 480px) 100vw, 480px" /></a><figcaption id="caption-attachment-5420" class="wp-caption-text">La fonction <i>screen.print()</i> fait maintenant défiler le texte.</figcaption></figure>
<p style="text-align: justify;">Concernant toujours la fonction gérant l'affichage de texte, il est maintenant possible de pouvoir justifier le texte en plus d'aligner à droite, à gauche ou bien au centre.</p>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Fonction contrôle</strong></span></h4>
<p style="text-align: justify;">L'une des dernières principales nouveautés dont nous allons vous parler concerne les contrôles&nbsp;: qui n'a jamais trouvé cela fatigant dans un <em>homebrew</em> de devoir appuyer plusieurs fois sur "Haut" ou "Bas" pour naviguer dans un long menu&#8239;? Ce n'est clairement pas pratique, mais <em>gdljjrod</em> et <em>Rober Galarga </em>ont trouvé une solution&nbsp;: la fonction <em>buttons.interval(). </em>Elle permet tout simplement de simuler le fait de rappuyer sur une touche, tout cela étant paramétrable que ce soit le temps d'activation ou le temps entre chaque répétition. Cette fonction ne fonctionne évidemment pas si vous avez choisi que l'action effectuée doit être "maintenir appuyer le bouton".</p>
<pre class="lang:lua decode:true" title="Fonction buttons.interval()">buttons.interval(NUMBER delay,NUMBER interval)
--Active la fonction
--NUMBER delay&nbsp;: Le délai en cycle avant l'activation (valeur conseillé 40)
--NUMBER interval&nbsp;: L'interval de répétition en cycle (valeur conseillé 10)
--Ne retourne rien
buttons.interval()
--Désactive la fonction
--Ne retourne rien</pre>
<h4 style="text-align: justify;"><span style="text-decoration: underline;"><strong>Autres fonctions</strong></span></h4>
<p style="text-align: justify;">Dans les ajouts mineurs, on retrouve plusieurs petites nouveautés. Tout d'abord, la fonction<em> amg.screenshot()</em> a été ajoutée et permet, comme vous l'aurez sans doute deviné, de prendre une capture d'écran lorsque vous utilisez la librairie AMG spécialisée dans la 3D. Ensuite, les fonctions <em>timers.new</em> et <em>timer.reset</em> retournent la valeur initiale, et la fonction <em>os.cfw() </em>reconnait si l'utilisateur utilise le <strong>VHBL</strong>. Enfin, la fonction <em>ini.read()</em> peut maintenant lire jusqu'à 1024 caractères. Le développeur a amélioré par ailleurs les performances et corrigé des <em>bugs</em> notamment celui concernant la fonction <em>screen.textheight()</em>.</p>
<p style="text-align: justify;">Comme vous pouvez le constater, le <strong>ONELua</strong> version 3 est l'aboutissement d'un long travail de ces développeurs qui incluent des nouveautés de plus en plus ambitieuses. En espérant qu'ils ne s'arrêtent pas de si tôt&#8239;!</p>
<figure id="attachment_5235" aria-describedby="caption-attachment-5235" style="width: 300px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2015/06/ONEluav3.zip"><img decoding="async" class="wp-image-5235 size-medium" src="https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-300x91.png" alt="Bouton télécharger" width="300" height="91" srcset="https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-300x91.png 300w, https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-370x112.png 370w, https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-270x82.png 270w, https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2.png 528w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-5235" class="wp-caption-text"><b>ONELua v3</b> pour PSP/PS Vita</figcaption></figure>
<p style="text-align: justify;">Pour finir ce long article en beauté, on va conclure comme dans notre dernier article sur une superbe vidéo montrant les capacités de ce <em>Lua Player</em>. Mise en ligne par <em>gljjrod</em>, il s'agit d'une capture vidéo de la démo réalisée par <em>Mills</em> (développeur connu notamment pour son jeu <strong><a href="https://www.customprotocol.com/underground/space-ball-un-jeu-de-golf-en-3d-utilisant-le-onelua/">Space Ball</a></strong>) baptisée <strong>Fruit Explosion</strong>, que nous vous conseillons de télécharger que vous soyez développeur ou pas pour admirer les capacités de notre bonne vielle PSP.</p>
<figure id="attachment_5235" aria-describedby="caption-attachment-5235" style="width: 300px" class="wp-caption aligncenter"><a href="https://dl.dropboxusercontent.com/u/48796093/Onelua/Demo3D/ONEDEMO_(F_EXPLOSION).rar"><img decoding="async" class="wp-image-5235 size-medium" src="https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-300x91.png" alt="Bouton télécharger" width="300" height="91" srcset="https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-300x91.png 300w, https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-370x112.png 370w, https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2-270x82.png 270w, https://www.customprotocol.com/medias/2015/06/bouton-telecharger-v2.png 528w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption id="caption-attachment-5235" class="wp-caption-text"><b>Fruit Explosion</b> pour PSP/PS Vita</figcaption></figure>
<div class="inserervideo"><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/Mcl6zDHoeLc" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/">[PSP] [Vita] Le ONELua de nouveau mis à jour</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/psp-vita-le-onelua-de-nouveau-mis-a-jour/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua&#160;-&#160;Débutant&#160;-&#160;Cours n°5&#160;: Les touches de la PSP</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/#comments</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 18:30:03 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[contrôles des touches]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=890</guid>
					<description><![CDATA[<p>Un cours pour apprendre à contrôler les touches en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/">Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°5&nbsp;: Les touches de la PSP</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Nous allons apprendre dans ce cours à maitriser les touches de la PSP, ce qui va nous permettre de créer vos propres programmes de manière guidé (bientôt dans un Travail Pratique). Nous n'en sommes pas encore là, mais si vous persévérez, je suis sur que vous allez y arriver sans problème, en suivant bien le cours que nous allons aborder&#8239;;)</p>
<p>Tout d'abord, il va falloir stocker du texte, on pourrait créer des variables mais nous allons réutiliser le cours d'avant pour pouvoir réaliser notre programme. Nous allons donc utiliser des tables qui contiendront des informations par rapport à la touche pour ensuite les afficher sur l'écran de la PSP. Par exemple, je reste appuyé sur la touche croix, donc ma PSP affichera que j'appuie sur la touche croix.</p>
<p>Donc on crée une table contenant toutes les informations nécessaires...</p>
<pre class="lang:lua decode:true" title="Etape 1">table&nbsp;=&nbsp;{}--Création d'une table regroupant toutes les infos suivantes
table[1]&nbsp;=&nbsp;"Appuie sur la touche Croix"
table[2]&nbsp;=&nbsp;"Appuie sur la touche Triangle"
table[3]&nbsp;=&nbsp;"Appuie sur la touche Carré"
table[4]&nbsp;=&nbsp;"Appuie sur la touche Rond"
table[5]&nbsp;=&nbsp;"Appuie sur la touche Haut"
table[6]&nbsp;=&nbsp;"Appuie sur la touche Droite"
table[7]&nbsp;=&nbsp;"Appuie sur la touche Gauche"
table[8]&nbsp;=&nbsp;"Appuie sur la touche Bas"
table[9]&nbsp;=&nbsp;"Appuie sur la touche R"
table[10]&nbsp;=&nbsp;"Appuie sur la touche L"
table[11]&nbsp;=&nbsp;"Appuie sur la touche START"
table[12]&nbsp;=&nbsp;"Appuie sur la touche SELECT"</pre>
<p> Nous n'aborderons pas le stick analogique qui sera abordé dans un cours pour réaliser un menu avec curseur.</p>
<p>Très bien maintenant nous pouvons mettre notre <strong>boucle while true do.</strong></p>
<pre class="lang:lua decode:true " title="Etape 2">while true do</pre>
<p> Et nous allons rajouter ensuite la fonction suivante qui va permettre de lire les boutons qui sont actionnés dans le programme à chaque début de la boucle.</p>
<pre class="lang:lua decode:true" title="Etape 3">buttons.read()--Lecture des touches actionnées
</pre>
<p>Maintenant nous allons utiliser pour la première fois <strong>une condition</strong>. Nous voulons afficher tel texte pour tel touche de la PSP, donc si je reste appuyer sur la touche croix alors j'affiche le texte "Appuie sur la touche Croix".</p>
<p>Ce qui donnera en Lua&nbsp;:</p>
<pre class="lang:lua decode:true " title="Etape 4">if buttons.held.cross then--Si je reste appuyé sur la touche croix alors
 screen.print(5,10,table[1])--J'affiche le texte adéquat
end--Fin de la condition</pre>
<p>Puis on fait la même chose pour toute les touches de la PSP.</p>
<pre class="lang:lua decode:true" title="Etape 5">if buttons.held.triangle then--Si je reste appuyé sur la touche triangle alors
  screen.print(5,20,table[2])--J'affiche le texte
end--Fin de la condition
if buttons.held.square then--Si je reste appuyé sur la touche carré alors
  screen.print(5,30,table[3])--J'affiche le texte
end--Fin de la condition
if buttons.held.circle then--Si je reste appuyé sur la touche rond alors
  screen.print(5,40,table[4])--J'affiche le texte
end--Fin de la condition
if buttons.held.up then--Si je reste appuyé sur la touche haut alors
  screen.print(5,50,table[5])--J'affiche le texte
end--Fin de la condition
if buttons.held.right then--Si je reste appuyé sur la touche droite alors
  screen.print(5,60,table[6])--J'affiche le texte
end--Fin de la condition
if buttons.held.left then--Si je reste appuyé sur la touche gauche alors
  screen.print(5,70,table[7])--J'affiche le texte
end--Fin de la condition
if buttons.held.down then--Si je reste appuyé sur la touche bas alors
  screen.print(5,80,table[8])--J'affiche le texte
end--Fin de la condition
if buttons.held.r then--Si je reste appuyé sur la touche R alors
  screen.print(5,90,table[9])--J'affiche le texte
end--Fin de la condition
if buttons.held.l then--Si je reste appuyé sur la touche L alors
  screen.print(5,100,table[10])--J'affiche le texte
end--Fin de la condition
if buttons.held.start then--Si je reste appuyé sur la touche Start alors
  screen.print(5,110,table[11])--J'affiche le texte
end--Fin de la condition
if buttons.held.select then--Si je reste appuyé sur la touche Sélect alors
  screen.print(5,120,table[12])--J'affiche le texte
end--Fin de la condition</pre>
<p>Voilà maintenant il ne reste plus qu'à <strong>rafraichir l'écran</strong> à chaque fin de tour de notre boucle et fermer la <strong>boucle while true do.</strong></p>
<pre class="lang:lua decode:true" title="Etape 6">screen.flip()--Rafraichissement de l'écran
end--Fin de la boucle</pre>
<p> Voilà normalement vous devez obtenir ceci&nbsp;:</p>
<p style="text-align: center;"> <a href="https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant.png"><img decoding="async" class="alignnone size-medium wp-image-1008" src="https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-300x170.png" alt="screen-cours-5-débutant" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-300x170.png 300w, https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-370x210.png 370w, https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant-270x153.png 270w, https://www.customprotocol.com/medias/2014/12/screen-cours-5-debutant.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Voilà le code en entier:</p>
<pre class="lang:lua decode:true" title="Récapitulons">table&nbsp;=&nbsp;{}--Création d'une table regroupant toutes les infos suivantes
table[1]&nbsp;=&nbsp;"Appuie sur la touche Croix"
table[2]&nbsp;=&nbsp;"Appuie sur la touche Triangle"
table[3]&nbsp;=&nbsp;"Appuie sur la touche Carré"
table[4]&nbsp;=&nbsp;"Appuie sur la touche Rond"
table[5]&nbsp;=&nbsp;"Appuie sur la touche Haut"
table[6]&nbsp;=&nbsp;"Appuie sur la touche Droite"
table[7]&nbsp;=&nbsp;"Appuie sur la touche Gauche"
table[8]&nbsp;=&nbsp;"Appuie sur la touche Bas"
table[9]&nbsp;=&nbsp;"Appuie sur la touche R"
table[10]&nbsp;=&nbsp;"Appuie sur la touche L"
table[11]&nbsp;=&nbsp;"Appuie sur la touche START"
table[12]&nbsp;=&nbsp;"Appuie sur la touche SELECT"
while true do--Début de la boucle
	
	buttons.read()--Lecture des touches actionnées
	
	if buttons.held.cross then--Si je reste appuyé sur la touche croix alors
		screen.print(5,10,table[1])--J'affiche le texte adéquat
	end--Fin de la condition
	
	if buttons.held.triangle then--Si je reste appuyé sur la touche triangle alors
	  screen.print(5,20,table[2])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.square then--Si je reste appuyé sur la touche carré alors
	  screen.print(5,30,table[3])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.circle then--Si je reste appuyé sur la touche rond alors
	  screen.print(5,40,table[4])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.up then--Si je reste appuyé sur la touche haut alors
	  screen.print(5,50,table[5])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.right then--Si je reste appuyé sur la touche droite alors
	  screen.print(5,60,table[6])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.left then--Si je reste appuyé sur la touche gauche alors
	  screen.print(5,70,table[7])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.down then--Si je reste appuyé sur la touche bas alors
	  screen.print(5,80,table[8])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.r then--Si je reste appuyé sur la touche R alors
	  screen.print(5,90,table[9])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.l then--Si je reste appuyé sur la touche L alors
	  screen.print(5,100,table[10])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.start then--Si je reste appuyé sur la touche Start alors
	  screen.print(5,110,table[11])--J'affiche le texte
	end--Fin de la condition
	
	if buttons.held.select then--Si je reste appuyé sur la touche Sélect alors
	  screen.print(5,120,table[12])--J'affiche le texte
	end--Fin de la condition
	
	screen.flip()--Rafraichie l'écran
	
end--Fin de la boucle while
		</pre>
<p>Maintenant que vous savez utiliser les touches de votre PSP, vous allez pouvoir commencer sérieusement à penser à des projets mais pour cela, il faudra encore apprendre de nouvelle chose&nbsp;<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/">Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°5&nbsp;: Les touches de la PSP</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°4&#160;: Abordons les tables</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:04:52 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[fonctions graphiques]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[tables]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=785</guid>
					<description><![CDATA[<p>Un cours pour apprendre à utiliser les tables en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/">Programmer en Lua &#8211; Débutant &#8211; Cours n°4&nbsp;: Abordons les tables</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p> <em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Nous allons rentrer dans un cours plus théorique que ceux abordé avant, soyez attentif car cela vous servira pour tous les cours et projets en Lua.</p>
<p>Une table, c'est comme un peu près un tableau de valeur sur excel. Vous pouvez ranger dans une table plusieurs valeurs de type <em>string</em> ou des nombres ou bien des fonctions.</p>
<p>Commençons par l'utilisation de base d'une table, imaginons que j'ai trois images de 10*10 pixels, que j'ai envie d'afficher sur mon écran de PSP de façon simple et intelligente, je devrais utiliser des tables. Tout d'abord soit j'ajoute directement mes données dans une table, soit je crée et j'ajoute une part une mes données.</p>
<pre class="lang:lua decode:true" title="Etape 1 - Directement mes données dans la table">table&nbsp;=&nbsp;{
image.load("1.png"),--je charge ma première image dans la case 1, 
image.load("2.png"),--puis la deuxième dans la case 2 
image.load("3.png")--et pour finir la troisième image dans la case 3.
}</pre>
<p>&nbsp;</p>
<pre class="lang:lua decode:true" title="Etape 1 - Une table et j'ajoute mes valeurs">table&nbsp;=&nbsp;{}--Je crée ma table
table[1]&nbsp;=&nbsp;image.load("1.png")--je charge ma première image dans la case 1
table[2]&nbsp;=&nbsp;image.load("2.png")--je charge ma deuxième image dans la case 2
table[3]&nbsp;=&nbsp;image.load("3.png")--ke charge ma troisième image dans la case 3</pre>
<p> Puis on utilise <strong>une boucle while true do</strong> </p>
<pre class="lang:default decode:true" title="Etape 2">while true do--Début de la boucle</pre>
<p> Maintenant, nous allons utiliser <strong>une boucle for </strong>de ce type&nbsp;:</p>
<pre class="lang:lua decode:true" title="Etape 3">for i=1,3 do--Début de la boucle for</pre>
<p> Cette boucle ce répète trois fois, la valeur <strong>i </strong>prend ainsi la valeur 1, 2 et 3. Nous pouvons donc "jouer" avec cette boucle qui est très pratique pour naviguer dans une table, on peut l'utiliser aussi par exemple pour faire des menus optimisés(voir dans un autre cours) ou dans bien d'autre cas adéquat à son utilisation.</p>
<p>Nous allons donc afficher les trois images sur l'écran de notre PSP avec la fonction vu dans <a title="Programmer en Lua&nbsp;-&nbsp;Cours n°3&nbsp;: Afficher une image" href="https://www.customprotocol.com/programmation/programmer-en-lua-cours-n3-afficher-une-image/">le cours numéro 3</a>.</p>
<pre class="lang:lua decode:true" title="Etape 4">image.blit(table[i],(i*20),10)--Affichages des images
</pre>
<p> Ainsi on affiche l'image 1, 2 et 3 situé leur case respective et on multiplie par 20 la position X(horizontal) de l'image pour ne pas superposer les 3 images et vu que nos images font 10*10 pixels, ce qui laisse un espace de 10 pixels entre chaque image.</p>
<p>Nous pouvons donc fermer notre <strong>boucle for</strong> ainsi que finir par rafraichir l'écran et fermer notre <strong>boucle while.</strong></p>
<pre class="lang:lua decode:true" title="Etape 5">end--Fin de la boucle for
screen.flip()--Rafraichie l'écran
end--Fin de la boucle while</pre>
<p>Voilà c'est terminé, comme je suis gentil, j'ai préparé trois images de tailles 10*10 pixels.</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/12/1.png'><img decoding="async" width="10" height="10" src="https://www.customprotocol.com/medias/2014/12/1.png" class="attachment-gridlove-single size-gridlove-single" alt="" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/12/2.png'><img decoding="async" width="10" height="10" src="https://www.customprotocol.com/medias/2014/12/2.png" class="attachment-gridlove-single size-gridlove-single" alt="" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/12/3.png'><img decoding="async" width="10" height="10" src="https://www.customprotocol.com/medias/2014/12/3.png" class="attachment-gridlove-single size-gridlove-single" alt="" /></a>
<pre class="lang:lua decode:true" title="Récapitulons">table&nbsp;=&nbsp;{}--Je crée ma table
table[1]&nbsp;=&nbsp;image.load("1.png")--je charge ma première image dans la case 1
table[2]&nbsp;=&nbsp;image.load("i2.png")--je charge ma deuxième image dans la case 2
table[3]&nbsp;=&nbsp;image.load("3.png")--je charge ma troisième image dans la case 3
while true do--Début de la boucle
	
	for i=1,3 do--Début de la boucle for
		
		image.blit(table[i],(i*20),10)--Affichages des images
		
	end--Fin de la boucle for
	screen.flip()--Rafraichie l'écran
end--Fin de la boucle while</pre>
<p> Voici le résultat que vous devez normalement obtenir sur votre PSP&nbsp;:</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/12/screen-cours4.png"><img decoding="async" class="alignnone size-medium wp-image-826" src="https://www.customprotocol.com/medias/2014/12/screen-cours4-300x170.png" alt="screen-cours4" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/12/screen-cours4-300x170.png 300w, https://www.customprotocol.com/medias/2014/12/screen-cours4-370x210.png 370w, https://www.customprotocol.com/medias/2014/12/screen-cours4-270x153.png 270w, https://www.customprotocol.com/medias/2014/12/screen-cours4.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;">Vous savez maintenant les bases à propos des tables, si vous voulez allez toujours plus loin par rapport au table rendez vous dans un autre cours dans une section plus exigeante.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/">Programmer en Lua &#8211; Débutant &#8211; Cours n°4&nbsp;: Abordons les tables</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°3&#160;: Afficher une image</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:03:09 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[fonctions graphiques]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=737</guid>
					<description><![CDATA[<p>Un cours pour apprendre à afficher une image en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/">Programmer en Lua &#8211; Débutant &#8211; Cours n°3&nbsp;: Afficher une image</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Vous savez maintenant afficher du texte sur votre <strong>PSP</strong>, maintenant il va falloir afficher une image. Certains passages que nous avons vu dans le dernier cours ne serons donc pas repris.</p>
<p>Tout d'abord, nous allons ajouter une variable. Une variable permet d'enregistrer des nombres, des strings(<a title="Programmer en Lua&nbsp;-&nbsp;Cours n°2&nbsp;: Afficher du texte(Hello World&#8239;!)" href="https://www.customprotocol.com/programmation/programmer-en-lua-cours-n2-afficher-du-textehello-world/">voir le deuxième cours</a>) mais aussi enregistrer des valeurs retournés par certaines fonctions. Ici, nous allons utiliser la fonction suivante&nbsp;:</p>
<pre class="lang:lua decode:true" title="Fonction">image.load()</pre>
<p>Cette fonction ci-dessus permet de charger une image au format <strong>.png</strong>, <strong>.jpg</strong> ou bien <strong>.gif</strong>. Attention, on ne peut pas charger des images supérieur à 512*512 pixels et les animations des images au format <strong>.gif</strong> ne sont pas supportés.</p>
<p>Pour notre cours nous allons utiliser l'image ci-dessous: faites clique droit, enregistrez sous..., et placez la dans le dossier ou se trouve le <strong>script.lua</strong> et l'<strong>EBOOT.PBP</strong>. Nous utilisons une image blanche car il faut savoir que le reste de l'écran sera noir...</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/10/logo.png"><img decoding="async" class="alignnone size-full wp-image-774" src="https://www.customprotocol.com/medias/2014/10/logo.png" alt="logo-psp-cours3" width="280" height="79" srcset="https://www.customprotocol.com/medias/2014/10/logo.png 280w, https://www.customprotocol.com/medias/2014/10/logo-270x76.png 270w" sizes="(max-width: 280px) 100vw, 280px" /></a> </p>
<p>Vous devriez normalement avoir tous ces fichiers présents dans votre dossier.</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3.png"><img decoding="async" class="alignnone size-medium wp-image-776" src="https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-300x81.png" alt="lesfichiersluacours3" width="300" height="81" srcset="https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-300x81.png 300w, https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-335x92.png 335w, https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3-270x73.png 270w, https://www.customprotocol.com/medias/2014/11/lesfichiersluacours3.png 339w" sizes="(max-width: 300px) 100vw, 300px" /></a> </p>
<p>Très bien, passons au chose sérieuse, ouvrez donc votre fichier <strong>script.lua</strong> si cela n'est pas déjà fait et commencez par charger l'image dans la mémoire <strong>RAM</strong>(mémoire temporaire) de votre <strong>PSP</strong>.</p>
<pre class="lang:lua decode:true" title="Etape 1">notreimage&nbsp;=&nbsp;image.load("logo.png")--Chargement de l'image
</pre>
<p>Maintenant la variable <em>notreimage</em> contient l'image "logo.png".</p>
<p>Ensuite nous faisons comme dans <a title="Programmer en Lua&nbsp;-&nbsp;Cours n°2&nbsp;: Afficher du texte(Hello World&#8239;!)" href="https://www.customprotocol.com/programmation/programmer-en-lua-cours-n2-afficher-du-textehello-world/">le deuxième cours</a>, on crée <strong>une boucle while true do</strong>.</p>
<pre class="lang:lua decode:true" title="Etape 2">while true do--Début de notre boucle</pre>
<p>Puis on affiche  l'image sur l'écran de votre PSP avec la fonction suivante&nbsp;:</p>
<pre class="lang:lua decode:true" title="Fonction">image.blit(image,x,y)</pre>
<p>Comme avec la fonction d'affichage de texte, nous allons mettre notre variable, puis la position X et Y où nous voulons placer notre image sur l'écran de la PSP. Ce qui donnera&nbsp;:</p>
<pre class="lang:lua decode:true" title="Etape 3">image.blit(notreimage,100,100)--Affiche l'image</pre>
<p>Puis on rafraîchie l'écran et on ferme la boucle.</p>
<pre class="lang:lua decode:true" title="Etape 4">screen.flip()--Rafraichissement de l'écran
end--Fin de la boucle</pre>
<p>Enregistrez votre fichier <strong>script.lua</strong> et lancer votre programme depuis votre <strong>PSP</strong>, vous devrez normalement obtenir ceci&nbsp;:</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/11/screen-cours3.png"><img decoding="async" class="alignnone size-medium wp-image-777" src="https://www.customprotocol.com/medias/2014/11/screen-cours3-300x170.png" alt="screen-cours3" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/11/screen-cours3-300x170.png 300w, https://www.customprotocol.com/medias/2014/11/screen-cours3-370x210.png 370w, https://www.customprotocol.com/medias/2014/11/screen-cours3-270x153.png 270w, https://www.customprotocol.com/medias/2014/11/screen-cours3.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;"><span style="text-decoration: underline;">Code en entier:</span></p>
<pre class="lang:lua decode:true" title="Récapitulons">notreimage&nbsp;=&nbsp;image.load("logo.png")--Chargement de l'image
while true do--Début de la boucle
image.blit(notreimage,100,100)--Affichage de l'image
screen.flip()--Rafraichissement de l'écran
end--Fin de la boucle</pre>
<p>&nbsp;</p>
<p>Vous pourrez retrouvez dans d'autre section, des usages plus complexes des fonctions liés aux images, n'hésitez pas à y jeter un coup d'oeil si vous avez le niveau adéquate&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/">Programmer en Lua &#8211; Débutant &#8211; Cours n°3&nbsp;: Afficher une image</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°2&#160;: Afficher du texte (Hello World&#8239;!)</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:02:24 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[fonctions graphiques]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=723</guid>
					<description><![CDATA[<p>Un cours pour apprendre à afficher du texte en Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/">Programmer en Lua &#8211; Débutant &#8211; Cours n°2&nbsp;: Afficher du texte (Hello World&#8239;!)</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p>Vous êtes enfin prêt à coder en Lua, restez attentif tout au long du cours car certaine fonction de base que nous allons voir vous resservirons dans les autres tutoriels.</p>
<p style="text-align: left;">Avant de commencer sachez que vous pouvez mettre du commentaire, c'est à dire que les passages ne seront pas pris en compte lors de la lecture par l'interpréteur. Très pratique pour commenter son code comme je vais le faire dans mes cours&#8239;;)</p>
<pre class="lang:lua decode:true" title="Comment commenter son code">--Juste avec ces deux tirets je commente mon code
--Tout simplement&#8239;;)
</pre>
<p>Ouvrez donc tout d'abord votre fichier <strong>script.lua</strong> (qui est dans le pack du dernier cours) avec le logiciel <strong>Atom </strong>ou un autre éditeur syntaxique de votre choix.</p>
<p style="text-align: center;"><a href="https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld.png"><img decoding="async" class="alignnone size-medium wp-image-725" src="https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-300x172.png" alt="" width="300" height="172" srcset="https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-300x172.png 300w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-370x212.png 370w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-270x155.png 270w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-570x327.png 570w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-740x425.png 740w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld.png 767w, https://www.customprotocol.com/medias/2014/11/ready-tuto-lua-helloworld-300x172@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: center;"> </p>
<p style="text-align: center;"><em>On y va&#8239;?</em></p>
<p style="text-align: left;">Tout d'abord on va créer une<strong> boucle while true do</strong>, c'est à dire qu'on va répéter tous le temps l'action d'afficher le texte à l'écran ici.</p>
<pre class="lang:lua decode:true" title="Etape 1">while true do--Début de ma boucle</pre>
<p style="text-align: left;">Puis nous allons utiliser la fonction</p>
<pre class="lang:lua decode:true" title="Etape 2">screen.print(x,y,"Votre texte")--Affichage du texte</pre>
<p style="text-align: left;">X et Y(comme en cours de math) est la position de votre texte sur votre écran. Il faut savoir que la PSP a un écran de 480*272 donc il ne faut pas dépasser ces valeurs si vous voulez voir votre texte sur l'écran de votre PSP.</p>
<p style="text-align: left;"><a href="https://www.customprotocol.com/medias/2014/11/xypsp.png"><img decoding="async" class="size-medium wp-image-727 aligncenter" src="https://www.customprotocol.com/medias/2014/11/xypsp-300x210.png" alt="xypsp" width="300" height="210" srcset="https://www.customprotocol.com/medias/2014/11/xypsp-300x210.png 300w, https://www.customprotocol.com/medias/2014/11/xypsp-370x259.png 370w, https://www.customprotocol.com/medias/2014/11/xypsp-270x189.png 270w, https://www.customprotocol.com/medias/2014/11/xypsp-570x399.png 570w, https://www.customprotocol.com/medias/2014/11/xypsp.png 720w, https://www.customprotocol.com/medias/2014/11/xypsp-300x210@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">Il vous suffit ensuite rentrer votre texte, ici "Hello World!" entre guillemet, on dira plutôt <em>string</em> en langage informatique.</p>
<p style="text-align: left;">Nous allons ensuite rafraichir l'écran avec la simple fonction qui ce met à la fin de votre boucle.</p>
<pre class="lang:lua decode:true " title="Etape 3">screen.flip()--Rafraichissement de l'écran</pre>
<p style="text-align: left;">Puis on ferme la boucle.</p>
<pre class="lang:lua decode:true" title="Etape 4">end--Fin de ma boucle</pre>
<p style="text-align: left;">Il ne vous reste plus qu'à enregistrer, <a title="[Tutoriel] Comment installer/lancer un homebrew sur PSP" href="https://www.customprotocol.com/underground/tutoriel-comment-installer-lancer-homebrew-psp/">transférer le dossier sur votre PSP</a> puis à lancer votre premier programme pour voir apparaitre ceci&nbsp;: </p>
<p style="text-align: center;"> <a href="https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen.png"><img decoding="async" class="alignnone size-medium wp-image-762" src="https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-300x170.png" alt="cours-helloworld-screen" width="300" height="170" srcset="https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-300x170.png 300w, https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-370x210.png 370w, https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen-270x153.png 270w, https://www.customprotocol.com/medias/2014/11/cours-helloworld-screen.png 480w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: left;"> </p>
<p style="text-align: left;"><span style="text-decoration: underline;">Code en entier:</span></p>
<pre class="lang:lua decode:true" title="Récapitulons">while true do--Début de ma boucle
screen.print(100,100,"Hello World!")--Affichage du texte
screen.flip()--Rafraichissement de l'écran
end--Fin de ma boucle</pre>
<p style="text-align: left;">Si vous voulez approfondir l'affichage de texte sur PSP, avec de la couleur, des effets... rendez vous dans la section Apprenti&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/">Programmer en Lua &#8211; Débutant &#8211; Cours n°2&nbsp;: Afficher du texte (Hello World&#8239;!)</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua &#8211; Débutant &#8211; Cours n°1&#160;: Introduction</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-1-introduction/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-1-introduction/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:01:25 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=599</guid>
					<description><![CDATA[<p>Premier cours sur les bases à savoir en Lua.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-1-introduction/">Programmer en Lua &#8211; Débutant &#8211; Cours n°1&nbsp;: Introduction</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote>
<p style="text-align: justify;"><em>Vous visitez actuellement un de nos cours pour programmer en Lua. Pour voir la liste des cours disponibles sur le site, <a title="Programmer en Lua" href="https://www.customprotocol.com/programmation/dev-lua-programmer-en-lua/" target="_blank" rel="noopener noreferrer">cliquez ici</a>.</em></p>
</blockquote>
<p style="text-align: justify;">Bienvenue dans le premier cours de programmation en <strong>Lua</strong> pour <strong>PSP</strong>, vous allez apprendre au fil des chapitres à maitriser votre <strong>PSP</strong> au capacité qui sont loin d'être limitées&#8239;!</p>
<p style="text-align: justify;">Tout d'abord, il vous faudra une <strong>PSP</strong> avec <em>Cus</em><em>tom Firmware </em>(conseillé) ou un émulateur (<a href="http://www.ppsspp.org" target="_blank" rel="noopener noreferrer">PPSSPP</a>).</p>
<p style="text-align: justify;">Ensuite, il vous faudra un éditeur à couleur syntaxique, il en existe énormément mais nous vous conseillerons <strong><a href="https://atom.io" target="_blank" rel="noopener noreferrer">Atom</a></strong> qui est libre,  multiplateforme et gratuit. <em>Notepad++</em> (PC) ou <em>TextMate</em>(Mac) <em> </em>sont également des alternatives intéressantes.</p>
<p style="text-align: justify;">Pour qu'il puisse comprendre le <strong>Lua</strong>, nous allons installer un <em>plugin</em> qui va permettre au logiciel d'interpréter le langage et ajouter un peu de couleurs. Pour ce faire, rendez vous dans "Preferences... (étape 1) puis "Package" (étape 2) et tapez "Language Lua" dans la case "Search packages" (étape 3), enfin cliquez sur "Install" (étape 4).</p>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.58.48.png'><img decoding="async" width="365" height="414" src="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.58.48.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.58.48.png 365w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.58.48-264x300.png 264w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.58.48-270x306.png 270w" sizes="(max-width: 365px) 100vw, 365px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.00.png'><img decoding="async" width="261" height="315" src="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.00.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.00.png 261w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.00-249x300.png 249w" sizes="(max-width: 261px) 100vw, 261px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32.png'><img decoding="async" width="740" height="102" src="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-740x102.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-740x102.png 740w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-300x41.png 300w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-768x106.png 768w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-370x51.png 370w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-270x37.png 270w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-570x79.png 570w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32.png 1001w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.32-300x41@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<a class="gridlove-popup" href='https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48.png'><img decoding="async" width="740" height="199" src="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-740x199.png" class="attachment-gridlove-single size-gridlove-single" alt="" srcset="https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-740x199.png 740w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-300x81.png 300w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-768x207.png 768w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-370x100.png 370w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-270x73.png 270w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-570x153.png 570w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48.png 985w, https://www.customprotocol.com/medias/2014/10/Capture-d’ecran-2014-10-15-a-19.59.48-300x81@2x.png 600w" sizes="(max-width: 740px) 100vw, 740px" /></a>
<p style="text-align: justify;">Maintenant qu'<strong>Atom</strong> est installé, il va falloir télécharger un <strong>Lua Player</strong>.</p>
<p style="text-align: justify;">Le <strong>Lua Player</strong> est un interpréteur qui permet de transcrire du code que vous écrivez en instructions (affiche-moi du texte, affiche-moi une image, etc.) vous permettant au final de créer ce que vous souhaitez mais avec certaines limites selon le <strong>Lua Player</strong> que vous utilisez. Il en existe plusieurs (lister prochainement avec leur fonction), chacun possédant leurs particularités propres.</p>
<p style="text-align: justify;">Nous allons dans nos tutoriels utiliser le <a title="ONElua&nbsp;: un nouveau Lua Player est mis en ligne&#8239;!" href="https://www.customprotocol.com/underground/onelua-nouveau-lua-player-mis-en-ligne/"><strong>OneLua</strong></a>, développé par <em>gdljjrod</em>, téléchargeable plus bas. Le OneLua n'est pas un LuaPlayer comme un autre car il permet de nombreuse chose dont de la 2D mais aussi de la 3D&#8239;!</p>
<p style="text-align: justify;">Vous trouverez dans le pack fourni l'interpréteur <em>EBOOT.PBP</em>, mais aussi un fichier <em>script.lua </em>qui permettra d'écrire des instructions à notre <strong>PSP</strong>.</p>
<figure id="attachment_188" aria-describedby="caption-attachment-188" style="width: 263px" class="wp-caption aligncenter"><a href="https://www.customprotocol.com/medias/2014/10/Tuto-lua.rar"><img decoding="async" class="wp-image-188 size-full" src="https://www.customprotocol.com/medias/2014/06/Bouton-telecharger.png" alt="Instructions disponibles iciHomebrew non signé" width="263" height="108" /></a><figcaption id="caption-attachment-188" class="wp-caption-text"><span style="color: #ff0000;">Pack OneLua (EBOOT&nbsp;+&nbsp;script.lua)</span></figcaption></figure>
<p style="text-align: justify;">Maintenant ouvrez le fichier <em><strong>script</strong><strong><em>.</em>lua </strong></em>avec le logiciel <strong>Atom </strong>ou un autre logiciel de couleur syntaxique<strong> </strong>et passez à la suite&#8239;;)</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-1-introduction/">Programmer en Lua &#8211; Débutant &#8211; Cours n°1&nbsp;: Introduction</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua-debutant-1-introduction/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmer en Lua</title>
		<link>https://www.customprotocol.com/programmation/programmer-en-lua/</link>
					<comments>https://www.customprotocol.com/programmation/programmer-en-lua/#respond</comments>
		
		<dc:creator><![CDATA[Applelo]]></dc:creator>
		<pubDate>Sun, 14 Dec 2014 14:00:19 +0000</pubDate>
				<category><![CDATA[Cours Lua]]></category>
		<category><![CDATA[Dossiers]]></category>
		<category><![CDATA[Dossiers Programmation]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Tutoriels Programmation]]></category>
		<category><![CDATA[Lua]]></category>
		<guid isPermaLink="false">https://www.customprotocol.com/?post_type=it_programmation&#038;p=554</guid>
					<description><![CDATA[<p>Apprentissage du langage de programmation Lua sur PSP.</p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua/">Programmer en Lua</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Vous cherchez à développer sur PSP mais vous ne savez pas où aller et vous n’avez aucune connaissance en programmation&#8239;? Pas de problème, <b>CustomProtocol</b> va vous aidez à exceller en Lua sur PlayStation Portable.</p>
<p>Nos cours sont rangés par niveau, si vous avez déjà des bases vous pouvez passer le chapitre <em>Débutant</em> qui est réserver au novice(même si une révision ne fait pas de mal). Par contre si vous avez le niveau, n'hésiter pas à consultez nos tutoriels Expert ou Maître&#8239;;)</p>
<p>&nbsp;</p>
<h4>A)Débutant</h4>
<p><a title="Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°1&nbsp;: Introduction" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-1-introduction/">1-Introduction</a></p>
<p><a title="Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°2&nbsp;: Afficher du texte(Hello World&#8239;!)" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n2-afficher-du-textehello-world/">2-Afficher du texte(Hello World!)</a></p>
<p><a title="Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°3&nbsp;: Afficher une image" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n3-afficher-une-image/">3-Afficher une image </a></p>
<p><a title="Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°4&nbsp;: Abordons les tables" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n4-abordons-les-tables/">4-Abordons les tables</a></p>
<p><a title="Programmer en Lua&nbsp;-&nbsp;Débutant&nbsp;-&nbsp;Cours n°5&nbsp;: Les touches de la PSP" href="https://www.customprotocol.com/programmation/programmer-en-lua-debutant-cours-n5-les-touches-de-la-psp/">5-Les touches de la PSP</a></p>
<p><em>6-Les calculs(A venir)</em></p>
<p><em>TP - Un mini jeu(A venir)</em></p>
<h4>B)Apprenti</h4>
<p><em>A suivre...</em></p>
<h4>C)Expert</h4>
<p><em>A suivre...</em></p>
<h4>D)Maître</h4>
<p><em>A suivre...</em></p>
<p>L’article <a rel="nofollow" href="https://www.customprotocol.com/programmation/programmer-en-lua/">Programmer en Lua</a> est apparu en premier sur <a rel="nofollow" href="https://www.customprotocol.com">Custom Protocol</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.customprotocol.com/programmation/programmer-en-lua/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

