Coding : Initiation
Ateliers en C#
4 parties
Introduction
Atelier 1 : Application « de bureau »
Atelier 3 : Site Web
Atelier 2 : Application mobile native
Atelier 1 : Application « de
bureau »
Atelier 1 (3 cours)
Agenda de l’atelier
Présentation de l’outil : la base
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namesp...
Ex:
- Afficher du texte à l’écran suivi d’un retour chariot :
« Writeline »
- Lire un texte tapé au clavier « ReadLine »
E...
Console.ReadKey();
// Les paramètres
Console.WriteLine("Who are you ?");
Console.ReadLine();
// Lit une chaine de caractères terminée par
retour chariot (return)
string name = Console.ReadLine();
// A vous ! Affiche...
// On veut afficher l'âge de la personne en le déduisant à partir
de son année de naissance
Console.WriteLine("When were y...
// Afficher un message différent selon que l'on soit jeune
ou vieux
// (à vous de décider l'âge à partir duquel on est vie...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namesp...
// Créons un petit jeu. Le principe :
// L’app choisit au hasard un nombre entre 1 et 20 et vous le fait deviner
// A vous...
// Puis on encadre ça avec une boucle pour réitérer la saisie
jusqu'à ce qu'elle soit valide
bool isNumeric = int.TryParse...
// A vous : Tant qu’on n’a pas trouvé on recommence
// Trouvez la condition qui permet de refaire un essai de devinette
wh...
static void Main(string[] args)
{
int pickedNum;
int randomed = new Random().Next(20) + 1;
Console.WriteLine("Pick a numbe...
/// <summary>
/// Cette fonction renvoie un nombre saisi par l'utilisateur
/// </summary>
/// <returns></returns>
static i...
pickedNum = PickANumber();
// Tant qu’on n’a pas trouvé on recommence
while(pickedNum != randomed)
{
// On aide l’utilisat...
static void Main(string[] args)
{
int pickedNum;
int randomed = new Random().Next(20) + 1;
pickedNum = PickANumber();
whil...
// On crée des méthodes pour plusieurs raisons :
// - réutilisation
// - clarification (groupement fonctionnel et lisibili...
static void NouvellePartie()
{
int pickedNum;
int randomed = new Random().Next(20) + 1;
pickedNum = PickANumber();
while (...
class Program
{
public static int Randomed { get; set; }
public static int PickedNum { get; set; }
static void Main(string...
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
int Rand...
public partial class MainWindow : Window
{
int Randomed;
int PickedNum;
int NbEssais;
public MainWindow()
{
InitializeComp...
sur évt click
au démarrage
sur évt click
public MainWindow()
{
InitializeComponent();
NouvellePartie();
}
private void btNouvellePartie_Click(object sender, Routed...
private void btValider_Click(object sender, RoutedEventArgs e)
{
if(PickedNum == Randomed)
{
YouWin();
}
else
{
TryAgain()...
private void btNouvellePartie_Click(object sender, RoutedEventArgs e)
{
NouvellePartie();
}
private void btValider_Click(o...
bool PickANumber()
{
bool res;
string picked = tbNombreSaisi.Text;
int pickedNum;
// Vérifie saisie
if ((res = int.TryPars...
private void TryAgain()
{
NbEssais = NbEssais + 1;
tbEssais.Text = "Essai no " + NbEssais;
if (PickedNum > Randomed)
{
tbI...
private void YouWin()
{
tbInfo.Text = "C'est gagné !!";
btValider.IsEnabled = false;
}
bool PickANumber()
{
bool res;
string picked = tbNombreSaisi.Text;
int pickedNum;
// Vérifie saisie
if ((res = int.TryPars...
Atelier 2 :
Application mobile
native sous Windows
Phone
4 parties
Introduction
Atelier 1 : Algorithmie
Atelier 3 : Site Web
Atelier 2 : Application mobile native
http://www.windowsphone.com/fr-fr/features
<!--TitlePanel contains the name of the application and page title--
>
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin...
http://msdn.microsoft.com/en-
us/library/windowsphone/develop/jj206971(v
=vs.105).aspx
void UpdateVignette()
{
FlipTileData TileData = new FlipTileData()
{
BackTitle = DateTime.Now.ToString(),
BackContent = "G...
http://msdn.microsoft.com/en-
us/library/windows/apps/jj863494.aspx
http://www.windowsphone.com/fr-fr/store/app/jeu-git-
coding/2ad310f0-7ef7-4e94-b4be-d4d87a04f105
http://msdn.microsoft.com/en-
us/library/windowsphone/develop/hh202939(
v=vs.105).aspx
https://fingerpaint.codeplex.com/
https://fingerpaint.codeplex.com/
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Canvas H...
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
// Sample...
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
// Sample...
bool IsDrawing = false;
private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e...
void Dessine(Point oldPoint, Point newPoint)
{
Line line = new Line();
line.Stroke = new SolidColorBrush(Colors.Black);
li...
private void Canvas_MouseLeftButtonDown(object
sender, System.Windows.Input.MouseButtonEventArgs e)
{
IsDrawing = true;
Ol...
public partial class MainPage : PhoneApplicationPage
{
Point OldPoint;
bool IsDrawing = false;
public MainPage()
{
Initial...
Line GetLine()
{
Line line = new Line();
line.StrokeThickness = 15;
line.StrokeStartLineCap = PenLineCap.Round;
line.Strok...
GetLine
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Initiation au code : Ateliers en C# (applications desktop et mobile native)
Prochain SlideShare
Chargement dans…5
×

Initiation au code : Ateliers en C# (applications desktop et mobile native)

2 494 vues

Publié le

Coding - Initiation au code pour les vrais débutants

--- Apprenez les bases de l'algorithmie. Mettez-les en pratique pour créer votre première application de bureau, puis des applications mobiles natives pour Windows Phone ---

À destination de vrais débutants qui n’ont jamais tapé une ligne de code, ces cours vous permettront de comprendre les bases d’algorithmie et découvrir en pratique ce qu’est le code avec des exemples simples et amusants.
Le but n’est pas de faire de vous des développeurs mais de vous donner un niveau qui vous permette de suivre des formations pour développeurs débutants.
Les concepts enseignés sont valables pour tous les langages mais en pratique nous utiliserons le langage C# avec l’environnement de développement Visual Studio 2013.

Cet atelier a été conçu dans le cadre d'une initiative menée conjointement par Girls in Tech Paris et Microsoft France.
Le programme et les explications ici : http://gitparis.com/2013/12/02/cours-de-coding-les-inscriptions-sont-ouvertes-voila-le-programme/

Les slides correspondent aux 3 premiers ateliers (7 cours de 3 heures).

Publié dans : Technologie
0 commentaire
8 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 494
Sur SlideShare
0
Issues des intégrations
0
Intégrations
31
Actions
Partages
0
Téléchargements
241
Commentaires
0
J’aime
8
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Rappel semaine dernière
  • Initiation au code : Ateliers en C# (applications desktop et mobile native)

    1. 1. Coding : Initiation Ateliers en C#
    2. 2. 4 parties Introduction Atelier 1 : Application « de bureau » Atelier 3 : Site Web Atelier 2 : Application mobile native
    3. 3. Atelier 1 : Application « de bureau »
    4. 4. Atelier 1 (3 cours)
    5. 5. Agenda de l’atelier
    6. 6. Présentation de l’outil : la base
    7. 7. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SayMyName { // Une classe : on verra plus tard ce que c'est class Program { // Une méthode (une fonctionnalité) static void Main(string[] args) { ENTREZ VOTRE CODE ICI } } }
    8. 8. Ex: - Afficher du texte à l’écran suivi d’un retour chariot : « Writeline » - Lire un texte tapé au clavier « ReadLine » Ex : classe « Console » pour toutes les fonctionnalités de la fenêtre d’exécution de l’application console: Console.WriteLine, Console.ReadLine
    9. 9. Console.ReadKey(); // Les paramètres Console.WriteLine("Who are you ?"); Console.ReadLine();
    10. 10. // Lit une chaine de caractères terminée par retour chariot (return) string name = Console.ReadLine(); // A vous ! Affichez “Nice to meet you xxx” Console.WriteLine("Nice to meet you "); Console.WriteLine(name); // ou Console.WriteLine("Nice to meet you " + name); // ou // …
    11. 11. // On veut afficher l'âge de la personne en le déduisant à partir de son année de naissance Console.WriteLine("When were you born ?"); // A vous : Récupérez l’année de naissance saisie dans une variable string year = Console.ReadLine(); // On va faire une soustraction : 2013 – year // pour cela, on a besoin d'avoir une valeur entière et non une chaine de caractères (texte) int yearNum = int.Parse(year); // Essayez de saisir une valeur non numérique…quel est le résultat ? On verra tout { l’heure comment résoudre ce problème //int age = 2013 - yearNum; // Mieux : int age = DateTime.Now.Year - yearNum; // A vous : Affichez l’age de la personne Console.WriteLine("You are " + age.ToString());
    12. 12. // Afficher un message différent selon que l'on soit jeune ou vieux // (à vous de décider l'âge à partir duquel on est vieux !) if(age < 40) { // A vous : petit message pour les jeunes mentionnant le nom de la personne Console.WriteLine("You are young, lucky " + name); } else { // A vous : petit message pour les vieux, mentionnant le nom de la personne Console.WriteLine("You are experienced, " + name); }
    13. 13. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Who are you ?"); string name = Console.ReadLine(); Console.WriteLine("Nice to meet you " + name); Console.WriteLine("Entrez votre année de naissance:"); string annee = Console.ReadLine(); int anneeInt = int.Parse(annee); int age = DateTime.Now.Year - anneeInt; Console.WriteLine("You are " + age); if (age < 40) { // A vous : petit message pour les plus jeunes mentionnant le nom de la personne Console.WriteLine("You are young, lucky " + name); } else { // A vous : petit message pour les plus agés, mentionnant le nom de la personne Console.WriteLine("You are experienced, " + name); } Console.ReadKey(); } } }
    14. 14. // Créons un petit jeu. Le principe : // L’app choisit au hasard un nombre entre 1 et 20 et vous le fait deviner // A vous : développer c’est aussi savoir trouver l’information. Trouvez le nom de la classe qui permet de manipuler des nombres aléatoires // Question Bonus : quelle est la méthode permettant d’en générer un ? int randomed = new Random().Next(20) + 1; // A VOUS : Demander { l’utilisateur de saisir un nombre et stockez-le dans une variable Console.WriteLine("Pick a number :"); string picked = Console.ReadLine(); // Vérifier la validité de la saisie avec TryParse int pickedNum; int.TryParse(picked, out pickedNum); // Quelle est la signature de TryParse ? // Le code retour nous permet de savoir si va conversion a réussi ou non (type booléeen peut prendre 2 valeurs : true/false) bool isNumeric = int.TryParse(picked, out pickedNum);
    15. 15. // Puis on encadre ça avec une boucle pour réitérer la saisie jusqu'à ce qu'elle soit valide bool isNumeric = int.TryParse(picked, out pickedNum); while(isNumeric == false) { // A VOUS : Trouvez le code à écrire ici Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); isNumeric = int.TryParse(picked, out pickedNum); } // A votre avis, pourquoi n’a-t-on pas besoin de notre variable isNumeric ici ? while(int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); }
    16. 16. // A vous : Tant qu’on n’a pas trouvé on recommence // Trouvez la condition qui permet de refaire un essai de devinette while(pickedNum != randomed) { // A Vous : On aide l’utilisateur : on lui indique si c’est plus ou moins if(pickedNum > randomed) { Console.WriteLine("It's less"); } else { Console.WriteLine("It's more"); } // A VOUS : Qu’y a-t-il de remarquable dans le paragraphe suivant ? // Replace it by a function picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } } // On sort de la bouclez quand les 2 nombres sont identiques, donc on a gagné ! Console.WriteLine("Yes ! You found my number :" + randomed);
    17. 17. static void Main(string[] args) { int pickedNum; int randomed = new Random().Next(20) + 1; Console.WriteLine("Pick a number :"); string picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } while (pickedNum != randomed) { if (pickedNum > randomed) { Console.WriteLine("It's less"); } else { Console.WriteLine("It's more"); } Console.WriteLine("Pick a number :"); picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } } Console.WriteLine("Yes ! You found my number :" + randomed); Console.ReadKey(); }
    18. 18. /// <summary> /// Cette fonction renvoie un nombre saisi par l'utilisateur /// </summary> /// <returns></returns> static int PickANumber() { string picked; int pickedNum; picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } return pickedNum; }
    19. 19. pickedNum = PickANumber(); // Tant qu’on n’a pas trouvé on recommence while(pickedNum != randomed) { // On aide l’utilisateur : on lui indique si c’est plus ou moins if(pickedNum > randomed) { Console.WriteLine("It's less"); } else { Console.WriteLine("It's more"); } pickedNum = PickANumber(); // Replace it by a function //picked = Console.ReadLine(); //while (int.TryParse(picked, out pickedNum) == false) //{ // Console.WriteLine("Hey that's not a number, try again :"); // picked = Console.ReadLine(); //} } Console.WriteLine("Yes ! You found my number :" + randomed);
    20. 20. static void Main(string[] args) { int pickedNum; int randomed = new Random().Next(20) + 1; pickedNum = PickANumber(); while (pickedNum != randomed) { if (pickedNum > randomed) { Console.WriteLine("It's less"); } else { Console.WriteLine("It's more"); } pickedNum = PickANumber(); } Console.WriteLine("Yes ! You found my number :" + randomed); Console.ReadKey(); } static int PickANumber() { string picked; int pickedNum; Console.WriteLine("Pick a number :"); picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } return pickedNum; }
    21. 21. // On crée des méthodes pour plusieurs raisons : // - réutilisation // - clarification (groupement fonctionnel et lisibilité du code) // Normalement, quand on lit du code, on doit pouvoir comprendre ce qu'il fait // -> importance du nommage // -> architecture et découpage static void Main(string[] args) { NouvellePartie(); Console.ReadKey(); } static void NouvellePartie() { int pickedNum; int randomed = new Random().Next(20) + 1; pickedNum = PickANumber(); while (pickedNum != randomed) { // Essaie encore pickedNum = TryAgain(pickedNum, randomed); } // C'est Gagné YouWin(randomed); }
    22. 22. static void NouvellePartie() { int pickedNum; int randomed = new Random().Next(20) + 1; pickedNum = PickANumber(); while (pickedNum != randomed) { // Essaie encore pickedNum = TryAgain(pickedNum, randomed); } // C'est Gagné YouWin(randomed); }
    23. 23. class Program { public static int Randomed { get; set; } public static int PickedNum { get; set; } static void Main(string[] args) { NouvellePartie(); Console.ReadKey(); } static void NouvellePartie() { Randomed = new Random().Next(20) + 1; PickANumber(); while (PickedNum != Randomed) { // Essaie encore TryAgain(); } // C'est Gagné YouWin(); } static void YouWin() { Console.WriteLine("Yes ! You found my number :" + Randomed); } static void TryAgain() { if (PickedNum > Randomed) { Console.WriteLine("It's less"); } else { Console.WriteLine("It's more"); } PickANumber(); } static void PickANumber() { string picked; int pickedNum; Console.WriteLine("Pick a number :"); picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } PickedNum = pickedNum; } }
    24. 24. /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { int Randomed; int PickedNum; int NbEssais; public MainWindow() { InitializeComponent(); } }
    25. 25. public partial class MainWindow : Window { int Randomed; int PickedNum; int NbEssais; public MainWindow() { InitializeComponent(); } void NouvellePartie() { } void PickANumber() { } private void YouWin() { } private void TryAgain() { } private void btNouvellePartie_Click(object sender, RoutedEventArgs e) { } private void btValider_Click(object sender, RoutedEventArgs e) { } }
    26. 26. sur évt click au démarrage sur évt click
    27. 27. public MainWindow() { InitializeComponent(); NouvellePartie(); } private void btNouvellePartie_Click(object sender, RoutedEventArgs e) { NouvellePartie(); }
    28. 28. private void btValider_Click(object sender, RoutedEventArgs e) { if(PickedNum == Randomed) { YouWin(); } else { TryAgain(); } } private void btValider_Click(object sender, RoutedEventArgs e) { if(PickANumber() == true) { if(PickedNum == Randomed) { // C'est gagné YouWin(); } else { // Essaie encore TryAgain(); } } tbNombreSaisi.Clear(); }
    29. 29. private void btNouvellePartie_Click(object sender, RoutedEventArgs e) { NouvellePartie(); } private void btValider_Click(object sender, RoutedEventArgs e) { if(PickANumber() == true) { if(PickedNum == Randomed) { // C'est gagné YouWin(); } else { // Essaie encore TryAgain(); } } tbNombreSaisi.Clear(); }
    30. 30. bool PickANumber() { bool res; string picked = tbNombreSaisi.Text; int pickedNum; // Vérifie saisie if ((res = int.TryParse(picked, out pickedNum)) == false) { tbInfo.Text = "Ce n'est pas un nombre, réessaie..."; } else { PickedNum = pickedNum; } return res; }
    31. 31. private void TryAgain() { NbEssais = NbEssais + 1; tbEssais.Text = "Essai no " + NbEssais; if (PickedNum > Randomed) { tbInfo.Text = "C'est moins"; } else { tbInfo.Text = "C'est plus"; } }
    32. 32. private void YouWin() { tbInfo.Text = "C'est gagné !!"; btValider.IsEnabled = false; }
    33. 33. bool PickANumber() { bool res; string picked = tbNombreSaisi.Text; int pickedNum; // Vérifie saisie if ((res = int.TryParse(picked, out pickedNum)) == false) { tbInfo.Text = "Ce n'est pas un nombre, réessaie..."; } else { PickedNum = pickedNum; } return res; } private void TryAgain() { NbEssais = NbEssais + 1; tbEssais.Text = "Essai no " + NbEssais; if (PickedNum > Randomed) { tbInfo.Text = "C'est moins"; } else { tbInfo.Text = "C'est plus"; } } private void YouWin() { tbInfo.Text = "C'est gagné !!"; btValider.IsEnabled = false; } static void PickANumber() { string picked; int pickedNum; Console.WriteLine("Pick a number :"); picked = Console.ReadLine(); while (int.TryParse(picked, out pickedNum) == false) { Console.WriteLine("Hey that's not a number, try again :"); picked = Console.ReadLine(); } PickedNum = pickedNum; } static void TryAgain() { if (PickedNum > Randomed) { Console.WriteLine("It's less"); } else { Console.WriteLine("It's more"); } PickANumber(); } static void YouWin() { Console.WriteLine("Yes ! You found my number :" + Randomed); }
    34. 34. Atelier 2 : Application mobile native sous Windows Phone
    35. 35. 4 parties Introduction Atelier 1 : Algorithmie Atelier 3 : Site Web Atelier 2 : Application mobile native
    36. 36. http://www.windowsphone.com/fr-fr/features
    37. 37. <!--TitlePanel contains the name of the application and page title-- > <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock Text="GIT Coding" …/> <TextBlock Text="A toi de jouer !" …/> </StackPanel>
    38. 38. http://msdn.microsoft.com/en- us/library/windowsphone/develop/jj206971(v =vs.105).aspx
    39. 39. void UpdateVignette() { FlipTileData TileData = new FlipTileData() { BackTitle = DateTime.Now.ToString(), BackContent = "Gagné : " + PickedNum.ToString(), }; var tileEnum = ShellTile.ActiveTiles.GetEnumerator(); tileEnum.MoveNext(); tileEnum.Current.Update(TileData); }
    40. 40. http://msdn.microsoft.com/en- us/library/windows/apps/jj863494.aspx
    41. 41. http://www.windowsphone.com/fr-fr/store/app/jeu-git- coding/2ad310f0-7ef7-4e94-b4be-d4d87a04f105
    42. 42. http://msdn.microsoft.com/en- us/library/windowsphone/develop/hh202939( v=vs.105).aspx
    43. 43. https://fingerpaint.codeplex.com/
    44. 44. https://fingerpaint.codeplex.com/
    45. 45. <!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Canvas Height="400" VerticalAlignment="Top" MouseLeftButtonDown="Canvas_MouseLeftButtonDown" MouseMove="Canvas_MouseMove" MouseLeftButtonUp="Canvas_MouseLeftButtonUp"> </Canvas> </Grid>
    46. 46. public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); // Sample code to localize the ApplicationBar //BuildLocalizedApplicationBar(); } private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { } private void Canvas_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { } private void Canvas_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { } …
    47. 47. public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); // Sample code to localize the ApplicationBar //BuildLocalizedApplicationBar(); } private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { // On commence à dessiner } private void Canvas_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { // On dessine un trait entre notre précédente position et la nouvelle } private void Canvas_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { // On arrête de dessiner } …
    48. 48. bool IsDrawing = false; private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { IsDrawing = true; } private void Canvas_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { if (IsDrawing) { Dessine(); } } private void Canvas_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { IsDrawing = false; }
    49. 49. void Dessine(Point oldPoint, Point newPoint) { Line line = new Line(); line.Stroke = new SolidColorBrush(Colors.Black); line.X1 = newPoint.X; line.Y1 = newPoint.Y; line.X2 = oldPoint.X; line.Y2 = oldPoint.Y; paint.Children.Add(line); } A chaque changement de position, on tire un trait entre la position précédente et l’actuelle. On utilise une couleur noire pour l’instant Les traits sont ajoutés dans le Canvas (tout comme on a mis des contrôles TextBox, TextBlock, … dans une Grid dans d’autres exemples) -> Reste à récupérer la position de la souris a fil des déplacements
    50. 50. private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { IsDrawing = true; OldPoint = e.GetPosition(paint); }
    51. 51. public partial class MainPage : PhoneApplicationPage { Point OldPoint; bool IsDrawing = false; public MainPage() { InitializeComponent(); } private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { IsDrawing = true; OldPoint = e.GetPosition(paint); } private void Canvas_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { if (IsDrawing) { Point newPoint = e.GetPosition(paint); Dessine(OldPoint, newPoint); OldPoint = newPoint; } } void Dessine(Point oldPoint, Point newPoint) { Line line = new Line(); line.Stroke = new SolidColorBrush(Colors.Black); line.X1 = newPoint.X; line.Y1 = newPoint.Y; line.X2 = oldPoint.X; line.Y2 = oldPoint.Y; paint.Children.Add(line); } private void Canvas_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { IsDrawing = false; } }
    52. 52. Line GetLine() { Line line = new Line(); line.StrokeThickness = 15; line.StrokeStartLineCap = PenLineCap.Round; line.StrokeEndLineCap = PenLineCap.Round; line.Opacity = 0.5; line.Stroke = new SolidColorBrush(Colors.Black); return line; } void Dessine(Point oldPoint, Point newPoint) { Line line = new Line(); line.Stroke = new SolidColorBrush(Colors.Black); line.X1 = newPoint.X; line.Y1 = newPoint.Y; line.X2 = oldPoint.X; line.Y2 = oldPoint.Y; paint.Children.Add(line); }
    53. 53. GetLine

    ×