13
Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion ISE FSA ci-dessus : Celle-ci doit : - Demander et afficher le nom des joueurs - Permettre de les modifier - Créer la grille de jeu (9 cases) - Créer la logique du jeu(victoire/defaite/ nouvelle partie…) - Sélectionner le joueur qui débute la partie - Créer un journal de jeu - Sauvegarder ce journal dans un fichier Pour réussir, ce TP il est recommandé de suivre les différentes étapes décrites ci-après dans l’ordre

VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Embed Size (px)

Citation preview

Page 1: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

1

VB . NET – TP 1 - Corrigé

Objet du TP : Créer l’application « Morpion ISE FSA ci-dessus :

Celle-ci doit :

- Demander et afficher le nom des joueurs

- Permettre de les modifier

- Créer la grille de jeu (9 cases)

- Créer la logique du jeu(victoire/defaite/ nouvelle partie…)

- Sélectionner le joueur qui débute la partie

- Créer un journal de jeu

- Sauvegarder ce journal dans un fichier

Pour réussir, ce TP il est recommandé de suivre les différentes étapes décrites ci-après dans l’ordre

Page 2: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

2

1. Créer une application Winform avec une Form comme ci-dessous :

Propriétés imposées :

• Texte de la fenêtre = « Morpion Ise Fsa -2011 »

• Nom de la form = « FormJeuMorpion»

2. Ajouter un bouton « Quitter » sur la Form comme ci-dessous

Propriétés imposées :

• Texte du bouton = « Quitter »

• Nom du bouton = « btnQuitter »

Evénement sur le clic du bouton : Fermer l’application

' Code exécuté lors du clic sur le bouton Quitter -> Ferme l'application Private Sub btnQuitter_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnQuitter.Click

End

End Sub

Page 3: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

3

3. Ajouter les contrôles sur la form pour obtenir la form ci-dessous

Propriétés imposées :

1. Contrôle - GroupBox

• Nom = « gbInformationsJoueurs »

• Texte = « Informations des joueurs »

2. Contrôle – Label

• Nom = « lblLibJoueur1 »

• Texte = « Nom du joueur n°1 »

3. Contrôle – Label

• Nom = « lblLibJoueur2 »

• Texte = « Nom du joueur n°2 »

4. Contrôle – Label

• Nom = « lblNomJoueur1»

• Texte = « Nom du joueur 1 non renseigné»

5. Contrôle – Label

• Nom = « lblNomJoueur2»

• Texte = « Nom du joueur 2 non renseigné»

Page 4: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

4

6. Contrôle – PictureBox

• Nom = « pbCouleurJoueur1»

• Couleur d’arrière plan = Bleu

7. Contrôle – PictureBox

• Nom = « pbCouleurJoueur2»

• Couleur d’arrière plan = Rouge

4. Gestion des joueurs

4. a. Créer une procédure appelée« ReInitialiserJoueurs()» qui :

• Demande au joueur 1 de saisir son nom

• Met à jour le texte de lblNomJoueur2 avec le texte saisi par le joueur 1

• Demande au joueur 2 de saisir son nom

• Met à jour le texte de lblNomJoueur2 avec le texte saisi par le joueur 2

' Procédure qui demande le noms des joueurs et qui met à jour les labels destinés à les afficher dans la form Private Sub ReInitialiserJoueurs()

Dim nomJoueur1 As String = InputBox("Donnez le nom du joueur 1", "Joueur

1")

lblNomJoueur1.Text = nomJoueur1

Dim nomJoueur2 As String = InputBox("Donnez le nom du joueur 2", "Joueur

2") LblNomJoueur2.Text = nomJoueur2

End Sub

4. b Ajouter le bouton sur la form pour obtenir la form ci-dessous

Propriété imposée :

• Nom = « btnChangementJoueur »

• Text =Changer les joueurs

Page 5: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

5

Evénement sur le clic du bouton : appel à « ReInitialiserJoueurs()»

' Evenement exécuté lors du clic sur le bouton de changement de joueur

Private Sub btnChangementJoueur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChangementJoueur.Click

ReInitialiserJoueurs()

End Sub

5. Ajouter les contrôles sur la form pour obtenir la form ci-dessous :

Propriétés imposées :

1. Contrôle - GroupBox

• Nom = « gbEcranPartie»

• Texte =« Ecran de la partie »

2. Contrôles – PictureBox

• Noms comme ci dessous :

pbA1 pbA2 pbA3

pbB1 pbB2 pbB3

pbC1 pbC2 pbC3

• Couleur d’arrière plan = «Blanc »

6. Ajout de la logique du jeu

Etape 1 : Créer une variable appelée « NumeroJoueurCourant » destinée à contenir le numéro

du joueur dont c’est le tour.

Public NumeroJoueurCourant As Integer = 1 'Numéro du joueur dont c'est le tour

Etape 2 : Créer une procédure appelée ReinitialiserPartie() qui :

- Initialise le numéro du joueur courant à 1 - Remet à blanc la couleur d’arrière plan de pbA1, pbA2,…. pbC3 à Blanc

-

Page 6: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

6

'Procedure qui reinitialise la partie modifiee pour radio button --- Etape 2

Private Sub ReinitialiserPartie() NumeroJoueurCourant = 1

pbA1.BackColor = Color.White

pbA2.BackColor = Color.White pbA3.BackColor = Color.White

pbB1.BackColor = Color.White

pbB2.BackColor = Color.White pbB3.BackColor = Color.White

pbC1.BackColor = Color.White

pbC2.BackColor = Color.White

pbC3.BackColor = Color.White

End Sub

Etape 3 : Créer une fonction appelée CalculerNombreCaseNonJouees qui renvoie le nombre

de cases qui sont encore blanches.

'Fonction qui calcule le nb de cases non jouees Private Function CalculerNombreCaseNonJouees() As Integer

Dim resultat As Integer = 9

If pbA1.BackColor <> Color.White Then resultat = resultat - 1

End If

If pbA2.BackColor <> Color.White Then resultat = resultat - 1

End If

If pbA3.BackColor <> Color.White Then resultat = resultat - 1

End If

If pbB1.BackColor <> Color.White Then resultat = resultat - 1

End If

If pbB2.BackColor <> Color.White Then

resultat = resultat - 1 End If

If pbB3.BackColor <> Color.White Then

resultat = resultat - 1 End If

If pbC1.BackColor <> Color.White Then

resultat = resultat - 1 End If

If pbC2.BackColor <> Color.White Then

resultat = resultat - 1

End If If pbC3.BackColor <> Color.White Then

resultat = resultat - 1

End If CalculerNombreCaseNonJouees = resultat

End Function

Etape 4 : Créer une fonction qui appelée NumeroDuVainqueur() qui :

o renvoie 1 si 3 cases bleues sont alignées

o renvoie 2 si 3 cases rouges sont alignées o renvoie -1 sinon

' Fonction qui donne le numéro du vainqueur s'il y en a un ; renvoie -1 sinon Private Function NumeroDuVainqueur() As Integer

Dim numeroVainqueur As Integer = -1

'Test sur les lignes

Page 7: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

7

If pbA1.BackColor = pbA2.BackColor And pbA2.BackColor = pbA3.BackColor Then

If pbA1.BackColor = Color.Blue Then numeroVainqueur = 2

ElseIf pbA1.BackColor = Color.Red Then

numeroVainqueur = 1

End If

End If If pbB1.BackColor = pbB2.BackColor And pbB2.BackColor = pbB3.BackColor Then

If pbB1.BackColor = Color.Blue Then

numeroVainqueur = 2

ElseIf pbB1.BackColor = Color.Red Then numeroVainqueur = 1

End If End If

If pbC1.BackColor = pbC2.BackColor And pbC2.BackColor = pbC3.BackColor Then

If pbC1.BackColor = Color.Blue Then numeroVainqueur = 2

ElseIf pbC1.BackColor = Color.Red Then

numeroVainqueur = 1

End If End If

'Test sur les colonnes If pbA1.BackColor = pbB1.BackColor And pbB1.BackColor = pbC1.BackColor Then

If pbA1.BackColor = Color.Blue Then

numeroVainqueur = 2 ElseIf pbA1.BackColor = Color.Red Then

numeroVainqueur = 1

End If

End If

If pbA2.BackColor = pbB2.BackColor And pbB2.BackColor = pbC2.BackColor Then

If pbB2.BackColor = Color.Blue Then numeroVainqueur = 2

ElseIf pbB2.BackColor = Color.Red Then

numeroVainqueur = 1

End If

End If If pbA3.BackColor = pbB3.BackColor And pbB3.BackColor = pbC3.BackColor Then

If pbA3.BackColor = Color.Blue Then

numeroVainqueur = 2

ElseIf pbA3.BackColor = Color.Red Then numeroVainqueur = 1

End If

End If NumeroDuVainqueur = numeroVainqueur

End Function

Etape 5 : Créer une procédure appelée CocherLaCaseEnfonctionDuJoueur(ByRef caseAcocher

As PictureBox) qui :

- Teste si la case est blanche :

o Si elle est blanche et que c’est le joueur 1 qui

joue alors la case se colore en bleu o Si elle est blanche et que c’est le joueur 2 qui

joue alors la case cochée se colore en rouge

Page 8: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

8

o Sinon (case rouge ou bleu) alors on affiche dans une

MsgBox un message indiquant que la case est déjà

cochée.

- Teste s’il y a un vainqueur : o Si il y a un vainqueur et que c’est le joueur 1, on

affiche dans MsgBox « Félicitations au joueur 1 » et

on reinitialise la partie o Idem dans le cas du joueur 2

- Teste s’il reste des cases non jouées. Si ca n’est pas

le cas, alors on affiche le message « Match nul... Nouvelle partie » et on reinitialise la partie

- On modifie « NumeroJoueurCourant » pour donner celui du suivant.

'Procédure qui coche la case en fonction du joueur Private Sub CocherLaCaseEnfonctionDuJoueur(ByRef caseAcocher As PictureBox) ' Colore la case si possible

If caseAcocher.BackColor = Color.White Then

If NumeroJoueurCourant = 2 Then

caseAcocher.BackColor = Color.Blue Else

caseAcocher.BackColor = Color.Red

End If Else

MsgBox("Cette case a déjà été sélectionnée... Veuillez en sélectionner une

autre", MsgBoxStyle.Exclamation) End If

' Y a t'il un vainqueur

If NumeroDuVainqueur() = 1 Then listBoxJournal.Items.Add("Joueur 1 gagne " & DateTime.Now)

MsgBox("Félicitations au joueur n° 1")

ReinitialiserPartie() ElseIf NumeroDuVainqueur() = 2 Then

MsgBox("Félicitations au joueur n° 2")

listBoxJournal.Items.Add("Joueur 2 gagne " & DateTime.Now) ReinitialiserPartie()

End If

' Est-ce fini? If CalculerNombreCaseNonJouees() = 0 Then

MsgBox("Match nul... Nouvelle partie")

listBoxJournal.Items.Add("Nul " & DateTime.Now)

ReinitialiserPartie() End If

' Faire passer le tour au joueur suivant If NumeroJoueurCourant = 1 Then

NumeroJoueurCourant = 2

Else NumeroJoueurCourant = 1

End If

End Sub

Etape 6 : appeler la procédure CocherLaCaseEnfonctionDuJoueur pour chaque clic sur une

des 9 cases.

Page 9: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

9

' Action sur le clic de la picturebox pbA1 => Appel de la procedure de coche de

cases avec la case en paramètre Private Sub pbA1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbA1.Click

CocherLaCaseEnfonctionDuJoueur(pbA1) End Sub

' Action sur le clic de la picturebox pbA2 => Appel de la procedure de coche de cases avec la case en paramètre

Private Sub pbA2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbA2.Click

CocherLaCaseEnfonctionDuJoueur(pbA2) End Sub

' Action sur le clic de la picturebox pbA3 => Appel de la procedure de coche de

cases avec la case en paramètre Private Sub pbA3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbA3.Click

CocherLaCaseEnfonctionDuJoueur(pbA3) End Sub

Private Sub pbB1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbB1.Click CocherLaCaseEnfonctionDuJoueur(pbB1)

End Sub

Private Sub pbB2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbB2.Click

CocherLaCaseEnfonctionDuJoueur(pbB2) End Sub

Private Sub pbB3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbB3.Click

CocherLaCaseEnfonctionDuJoueur(pbB3)

End Sub

Private Sub pbC1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbC1.Click

CocherLaCaseEnfonctionDuJoueur(pbC1) End Sub

Private Sub pbC2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbC2.Click

CocherLaCaseEnfonctionDuJoueur(pbC2)

End Sub

Private Sub pbC3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles pbC3.Click

CocherLaCaseEnfonctionDuJoueur(pbC3)

End Sub

6. Demander le nom des joueurs au chargement de la form au

démarrage de l’application Private Sub FormJeuMorpion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

ReInitialiserJoueurs()

End Sub

Page 10: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

10

7. Ajouter 2 radio buttons pour indiquer quel joueur débute la partie

suivante en modifiant reinitialiserpartie()

'Procedure qui reinitialise la partie modifiee pour radio button --- Etape 2 Private Sub ReinitialiserPartie()

NumeroJoueurCourant = 1 If rbCommenceJ2.Checked Then

NumeroJoueurCourant = 2

Else NumeroJoueurCourant = 1

End If

pbA1.BackColor = Color.White pbA2.BackColor = Color.White

pbA3.BackColor = Color.White

pbB1.BackColor = Color.White pbB2.BackColor = Color.White

pbB3.BackColor = Color.White

pbC1.BackColor = Color.White pbC2.BackColor = Color.White

pbC3.BackColor = Color.White

End Sub

8. Ajouter une liste box gardant le journal des parties et permettant

de le sauvegarder dans un fichier (c:/Test.txt). Etape 1 : Ajout du composant

Etape 2 : Création d’une procédure de sauvegarde dans un fichier

Private Sub EcritureLigneDansFichier(ByVal fichier As String, ByVal textAEcrire As

String)

Try

'Instanciation du StreamWriter avec passage du nom du fichier

Dim monStreamWriter As System.IO.StreamWriter = New

System.IO.StreamWriter(fichier, True)

Page 11: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

11

'Ecriture du texte dans votre fichier

monStreamWriter.WriteLine(textAEcrire)

'Fermeture du StreamWriter (Trés important)

monStreamWriter.Close()

Catch ex As Exception

MsgBox("Erreur Ecriture Fichier!", MsgBoxStyle.Exclamation, "Impossible d'écrire la chaine " & textAEcrire & " dans le fichier " & fichier & "pour la raison "

& ex.Message)

End Try

End Sub

Etape 3 : Créer un bouton de sauvegarde avec un évènement associé qui appelle la procédure de

sauvegarde

Private Sub btnSauvegarderJournal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSauvegarderJournal.Click

Dim nomFichier As String = "C:/test.txt" EcritureLigneDansFichier(nomFichier, "Sauvegarde du " & DateTime.Now)

For Each item In listBoxJournal.Items

EcritureLigneDansFichier(nomFichier, item) Next

End Sub

Page 12: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

12

9. Ajouter les contrôles permettant de saisir le fichier de sauvegarde

en l’initialisant à « C:/test » et modifier le code pour obtenir le

rendu suivant

Etape 1 : Créer les 3 contrôles

Etape 2 : Si la case est cochée la zone de saisie est active sinon elle est inactive

Etape 3 : Modifier la procédure de sauvegarde créée précédemment afin d’utiliser le nom de fichier

personnalisé si la case est cochée, le nom par défaut sinon.

'Action sur le clic du bouton de sauvegarde => on appelle la procedure de sauvegarde dans un fichier avec en parametre la chaine qu'on souhaite sauvegarder

Private Sub btnSauvegarderJournal_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnSauvegarderJournal.Click Dim nomFichier As String = "C:/test.txt"

If checkBoxFichierPersonnalise.Checked Then

nomFichier = txtBoxNomFichierSpecifie.Text

End If

EcritureLigneDansFichier(nomFichier, "Sauvegarde du " & DateTime.Now)

For Each item In listBoxJournal.Items EcritureLigneDansFichier(nomFichier, item)

Next

End Sub

Page 13: VB . NET – TP 1 - Corrigé · PDF fileMaster ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1 1 VB . NET – TP 1 - Corrigé Objet du TP : Créer l’application « Morpion

Master ISE –FSA – 2013-2014 – TP Visual Basic .Net – TP n 1

13

10. Amélioration du programme (image, ajout des diagonales dans

l’algo…)