SlideShare ist ein Scribd-Unternehmen logo
1 von 120
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;
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
}
}
}
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
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 ! Affichez “Nice to meet you xxx”
Console.WriteLine("Nice to meet you ");
Console.WriteLine(name);
// ou
Console.WriteLine("Nice to meet you " + name);
// ou
// …
// 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());
// 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);
}
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();
}
}
}
// 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);
// 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();
}
// 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);
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();
}
/// <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;
}
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);
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;
}
// 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);
}
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);
}
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;
}
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
int Randomed;
int PickedNum;
int NbEssais;
public MainWindow()
{
InitializeComponent();
}
}
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)
{
}
}
sur évt click
au démarrage
sur évt click
public MainWindow()
{
InitializeComponent();
NouvellePartie();
}
private void btNouvellePartie_Click(object sender, RoutedEventArgs e)
{
NouvellePartie();
}
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();
}
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();
}
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;
}
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);
}
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="12,17,0,28">
<TextBlock Text="GIT Coding" …/>
<TextBlock Text="A toi de jouer !" …/>
</StackPanel>
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 = "Gagné : " + PickedNum.ToString(),
};
var tileEnum = ShellTile.ActiveTiles.GetEnumerator();
tileEnum.MoveNext();
tileEnum.Current.Update(TileData);
}
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 Height="400" VerticalAlignment="Top"
MouseLeftButtonDown="Canvas_MouseLeftButtonDown"
MouseMove="Canvas_MouseMove"
MouseLeftButtonUp="Canvas_MouseLeftButtonUp">
</Canvas>
</Grid>
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)
{
}
…
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
}
…
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;
}
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
private void Canvas_MouseLeftButtonDown(object
sender, System.Windows.Input.MouseButtonEventArgs e)
{
IsDrawing = true;
OldPoint = e.GetPosition(paint);
}
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;
}
}
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);
}
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)

Weitere ähnliche Inhalte

Was ist angesagt?

Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesECAM Brussels Engineering School
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieLoic Yon
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11Microsoft
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationECAM Brussels Engineering School
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage CAbdoulaye Dieng
 
Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Aurélien Regat-Barrel
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 

Was ist angesagt? (20)

Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Héritage et redéfinition de méthode
Héritage et redéfinition de méthodeHéritage et redéfinition de méthode
Héritage et redéfinition de méthode
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Polymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraitePolymorphisme, interface et classe abstraite
Polymorphisme, interface et classe abstraite
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage C
 
Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14
 
Composition, agrégation et immuabilité
Composition, agrégation et immuabilitéComposition, agrégation et immuabilité
Composition, agrégation et immuabilité
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 

Andere mochten auch

Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...Elsa von Licy
 
C# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute BeginnersC# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute BeginnersHamida Rebai Trabelsi
 
Tendances et innovations dans l'univers de la lingerie
Tendances et innovations dans l'univers de la lingerieTendances et innovations dans l'univers de la lingerie
Tendances et innovations dans l'univers de la lingeriesourdillat
 
Fotos novios Pamplona Mauricio Olite
Fotos novios Pamplona Mauricio OliteFotos novios Pamplona Mauricio Olite
Fotos novios Pamplona Mauricio OliteMauricio Olite
 
Immunsystem
ImmunsystemImmunsystem
ImmunsystemMAINAIDS
 
Uso de las tics y las competencias lectoras
Uso de las tics y las competencias lectorasUso de las tics y las competencias lectoras
Uso de las tics y las competencias lectorasjessicau
 
Le multimedia domestique
Le multimedia domestiqueLe multimedia domestique
Le multimedia domestiqueLydia Beatrix
 
Recopilacion de los momentos de la RWC 2015
Recopilacion de los momentos de la RWC 2015Recopilacion de los momentos de la RWC 2015
Recopilacion de los momentos de la RWC 2015lospibitosdelbarrioxd
 
Que es un rss
Que es un rssQue es un rss
Que es un rssejandrar
 
Recommendation Letters
Recommendation LettersRecommendation Letters
Recommendation LettersL K Jena
 
10 erreurs catastrophiques à ne pas faire en bourse
10 erreurs catastrophiques à ne pas faire en bourse10 erreurs catastrophiques à ne pas faire en bourse
10 erreurs catastrophiques à ne pas faire en bourseSovanna Sek
 
Inclusión de las tic en la educación superior 1
Inclusión de las tic en la educación superior 1Inclusión de las tic en la educación superior 1
Inclusión de las tic en la educación superior 1Adri Jaramillo
 
Elementos de un pc
Elementos de un pcElementos de un pc
Elementos de un pcalvariiito
 
Les 15 innovations qui vont vous étonner ce mois-ci
Les 15 innovations qui vont vous étonner ce mois-ciLes 15 innovations qui vont vous étonner ce mois-ci
Les 15 innovations qui vont vous étonner ce mois-ciGabriella Vieira
 
Sun movement-presentation fr-september_2013_42_countries
Sun movement-presentation fr-september_2013_42_countriesSun movement-presentation fr-september_2013_42_countries
Sun movement-presentation fr-september_2013_42_countriesdigitalregister
 

Andere mochten auch (20)

Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...Therapie par l’urine   urinotherapie - amaroli - medecine ayurvedique - histo...
Therapie par l’urine urinotherapie - amaroli - medecine ayurvedique - histo...
 
C# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute BeginnersC# Fundamentals for Absolute Beginners
C# Fundamentals for Absolute Beginners
 
Tendances et innovations dans l'univers de la lingerie
Tendances et innovations dans l'univers de la lingerieTendances et innovations dans l'univers de la lingerie
Tendances et innovations dans l'univers de la lingerie
 
Fotos novios Pamplona Mauricio Olite
Fotos novios Pamplona Mauricio OliteFotos novios Pamplona Mauricio Olite
Fotos novios Pamplona Mauricio Olite
 
Immunsystem
ImmunsystemImmunsystem
Immunsystem
 
Uso de las tics y las competencias lectoras
Uso de las tics y las competencias lectorasUso de las tics y las competencias lectoras
Uso de las tics y las competencias lectoras
 
Le multimedia domestique
Le multimedia domestiqueLe multimedia domestique
Le multimedia domestique
 
Recopilacion de los momentos de la RWC 2015
Recopilacion de los momentos de la RWC 2015Recopilacion de los momentos de la RWC 2015
Recopilacion de los momentos de la RWC 2015
 
Que es un rss
Que es un rssQue es un rss
Que es un rss
 
Recommendation Letters
Recommendation LettersRecommendation Letters
Recommendation Letters
 
10 erreurs catastrophiques à ne pas faire en bourse
10 erreurs catastrophiques à ne pas faire en bourse10 erreurs catastrophiques à ne pas faire en bourse
10 erreurs catastrophiques à ne pas faire en bourse
 
Inclusión de las tic en la educación superior 1
Inclusión de las tic en la educación superior 1Inclusión de las tic en la educación superior 1
Inclusión de las tic en la educación superior 1
 
Sistemasoperativos
SistemasoperativosSistemasoperativos
Sistemasoperativos
 
Elementos de un pc
Elementos de un pcElementos de un pc
Elementos de un pc
 
Les 15 innovations qui vont vous étonner ce mois-ci
Les 15 innovations qui vont vous étonner ce mois-ciLes 15 innovations qui vont vous étonner ce mois-ci
Les 15 innovations qui vont vous étonner ce mois-ci
 
Chiffres clés
Chiffres clésChiffres clés
Chiffres clés
 
trabajo sobre Hypervinculos
trabajo sobre Hypervinculostrabajo sobre Hypervinculos
trabajo sobre Hypervinculos
 
Grupo # 1
Grupo # 1Grupo # 1
Grupo # 1
 
Sun movement-presentation fr-september_2013_42_countries
Sun movement-presentation fr-september_2013_42_countriesSun movement-presentation fr-september_2013_42_countries
Sun movement-presentation fr-september_2013_42_countries
 
Sejarah
SejarahSejarah
Sejarah
 

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

Javascript les générateurs (generators)
Javascript   les générateurs (generators)Javascript   les générateurs (generators)
Javascript les générateurs (generators)Julien CROUZET
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?Ruau Mickael
 
Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?Ruau Mickael
 
BEBUTANT JAVA
BEBUTANT  JAVABEBUTANT  JAVA
BEBUTANT JAVAviolonjo
 
Visual studio
Visual studioVisual studio
Visual studioISIG
 
mis
mismis
misISIG
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistVincent Agnus
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptxMohammedErritali2
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdframadanmahdi
 
PL LSQL.pptx
PL LSQL.pptxPL LSQL.pptx
PL LSQL.pptxMaNl13
 
Serie_fichiers.ppsx
Serie_fichiers.ppsxSerie_fichiers.ppsx
Serie_fichiers.ppsxPROFPROF11
 

Ähnlich wie Initiation au code : Ateliers en C# (applications desktop et mobile native) (20)

Javascript les générateurs (generators)
Javascript   les générateurs (generators)Javascript   les générateurs (generators)
Javascript les générateurs (generators)
 
Javascript
JavascriptJavascript
Javascript
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?
 
Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?
 
C++11
C++11C++11
C++11
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
BEBUTANT JAVA
BEBUTANT  JAVABEBUTANT  JAVA
BEBUTANT JAVA
 
Visual studio
Visual studioVisual studio
Visual studio
 
Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
mis
mismis
mis
 
Part1
Part1Part1
Part1
 
Algo poo ts
Algo poo tsAlgo poo ts
Algo poo ts
 
Chapitre 3 et 4
Chapitre 3 et 4Chapitre 3 et 4
Chapitre 3 et 4
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
 
Theme 6
Theme 6Theme 6
Theme 6
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
 
Chap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdfChap 2--POO avec JAVA.pdf
Chap 2--POO avec JAVA.pdf
 
PL LSQL.pptx
PL LSQL.pptxPL LSQL.pptx
PL LSQL.pptx
 
Serie_fichiers.ppsx
Serie_fichiers.ppsxSerie_fichiers.ppsx
Serie_fichiers.ppsx
 

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

  • 2.
  • 3.
  • 4. 4 parties Introduction Atelier 1 : Application « de bureau » Atelier 3 : Site Web Atelier 2 : Application mobile native
  • 5.
  • 6.
  • 7. Atelier 1 : Application « de bureau »
  • 8. Atelier 1 (3 cours)
  • 9.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24. 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 } } }
  • 25.
  • 26. 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
  • 28. // 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 // …
  • 29. // 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());
  • 30. // 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); }
  • 31.
  • 32. 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(); } } }
  • 33. // 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);
  • 34. // 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(); }
  • 35. // 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);
  • 36. 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(); }
  • 37. /// <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; }
  • 38. 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);
  • 39. 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; }
  • 40.
  • 41. // 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); }
  • 42. 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); }
  • 43.
  • 44. 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; } }
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59. /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { int Randomed; int PickedNum; int NbEssais; public MainWindow() { InitializeComponent(); } }
  • 60. 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) { } }
  • 61. sur évt click au démarrage sur évt click
  • 62. public MainWindow() { InitializeComponent(); NouvellePartie(); } private void btNouvellePartie_Click(object sender, RoutedEventArgs e) { NouvellePartie(); }
  • 63. 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(); }
  • 64. 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(); }
  • 65. 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; }
  • 66. 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"; } }
  • 67. private void YouWin() { tbInfo.Text = "C'est gagné !!"; btValider.IsEnabled = false; }
  • 68. 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); }
  • 69.
  • 70. Atelier 2 : Application mobile native sous Windows Phone
  • 71.
  • 72. 4 parties Introduction Atelier 1 : Algorithmie Atelier 3 : Site Web Atelier 2 : Application mobile native
  • 74.
  • 75.
  • 76.
  • 77.
  • 78. <!--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>
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 89. 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); }
  • 90.
  • 92.
  • 93.
  • 96.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107. <!--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>
  • 108. 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) { } …
  • 109. 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 } …
  • 110. 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; }
  • 111. 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
  • 112. private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { IsDrawing = true; OldPoint = e.GetPosition(paint); }
  • 113. 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; } }
  • 114. 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); }
  • 115.
  • 116.

Hinweis der Redaktion

  1. Rappel semaine dernière