J'ai décidé de porter mon jeu de SuDoKu sur P.C. Mon langage de prédilection reste le C++, sous c++ builder, mais les pocket pc ne sont pas supportés. Il n'y a que les outils Microsoft. Mais je suis allergique aux bibliothèques graphiques de microsoft (MFC) Sous Visual Studio, seul le C# permet de programmer visuellement l'IHM, alors j'y suis passé. C#Comme Microsoft a sorti le C# de son chapeau pour ne plus avoir de conflit avec SUN à propos de Java, je pensais que C# était un clone de Java. En fait, il est plus proche du C++ que ne l'est Java. Essentiellement parce qu'on peut passer des arguments par référence : Passage des arguments par référenceCela se fait en utilisant le mot clef "ref" aussi bien à la déclaration qu'à l'appel déclaration : public bool resoudre( ref int lTrouve,ref int cTrouve) appel : monTsu.resoudre( ref l, ref c) TableauxL'utilisation des tableaux est un peu déroutante: déclaration à 2 dimensions : TextBox[,] myGrille; création : myGrille = new TextBox[9,9]; Récupérer le répertoire de lancementAssez cabalistique sur pocket PC string strCurrentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); Visual studio c# pour pocket PCVous pouvez développer votre IHM graphiquement avec visual studio sous C#: Le prix à payer est que l'utilisateur devra installer d'abord Compact Net de microsoft, version compact pour Pocket PC mais qui pèse quand même 26 Mo. Générer le cab d'installation pour pocket pcPour déployer votre application il faut créer un projet de type cab pour smart device Donnez un nom à votre produit. Placez les fichiers à installer dans le Dossier d'application. L'un d'eux doit être de type Sortie de projet pour récupérer l'exécutable résultat du projet c# L'autre dossier doit comporter le raccourci vers votre exécutable Puis Générer, le fichier application.cab est créé. Vous pouvez le transférer par activesync et lancer l'installation en double-cliquant dessus. Vous pouvez aussi utiliser PocketSetupCreatorFR, utilitaire gratuit de microsoft pour générer un exe que vous pouvez distribuer. En double cliquant dessus sur un PC relié votre utilisateur pourra lancer l'installation Le sonJouer un .wav n'est pas directement accessible au C#. Il faut passer par la dll CoreDll.DLL. Voici un source permettant d'y accéder. Pour l'utiliser: using v2k.NetCF.Utility; // référence à la librairie SoundWrapper son; // déclarer un son // récupérer le répertoire de votre application string strCurrentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); string wav = strCurrentDir + "\\son.wav"; // sélectionner le son à jouer explosion = new SoundWrapper(wav); // créer l'objet flop.Play(); // jouer e son Je l'ai modifié pour
Récupérer le répertoire de travailLe répertoire courant n'a pas l'air de bien marcher pour accéder aux fichiers. Mais vous pouvez le récupérer pour construire un nom absolu: using System.Diagnostics; string strCurrentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); Suspendre le tempsusing System.Threading; Thread.Sleep(millisecondes); Base de registreusing Microsoft.Win32; // spécifique à windows RegistryKey reg; // déclaration // vos pouvez aussi utiliser OpenSubKey, mais alors, le répertoire doit exister reg = Registry.CurrentUser.CreateSubKey("SOFTWARE").CreateSubKey("Psylon").CreateSubKey("sudoku"); if(reg!=null) difficulte.Text = reg.GetValue("Niveau",99).ToString(); // lire reg.SetValue("Niveau", difficulte.Text); // écrire reg.Close(); // fermer Lancer l'aide// en principe, ça se fait par : Help.ShowHelp(this, "Program Files\\tsudoku\\index.html"); // mais si vous utiliser une aide plus évoluée avec plusieurs fichiers html, il vaut mieux utiliser l'explorateur standard string strCurrentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); ProcessStartInfo info; info = new ProcessStartInfo(); string path = info.FileName; info.FileName = strCurrentDir+"\\index.html"; Process.Start(info); Tracés graphiquesGraphics graphic; Pen pen; graphic = CreateGraphics(); pen = new Pen(Color.Blue); // sélectioner la couleur graphic.DrawLine(pen, X, Y); // tracer une ligne |
|