VB. NET TP 1 - Corrigé

Documents pareils
Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Rapport de Mini-Projet en ArcGIS Engine

.NET - Classe de Log

Paginer les données côté serveur, mettre en cache côté client

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Présentation... 2 Mise en place Fiche Article... 2 Commande Client... 3 Commande Fournisseur Gestion de la contremarque...

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Gestion du cache dans les applications ASP.NET

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Utilitaires méconnus de StrataFrame

Hébergement et configuration de services WCF. Version 1.0

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Avenir Concept Monaco

MANUEL D UTILISATION - Précis Poste de Traitement d Images 1 - Déconvolution

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

SYNOLIA LE partenaire à valeur ajoutée de votre relation client

Visual Basic for Applications

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Modes Opératoires WinTrans Mai 13 ~ 1 ~

MISE AU POINT FINANCIÈRE GUIDE DE L UTILISATEUR. Le logiciel MISE AU POINT FINANCIÈRE est offert sous licence par EquiSoft.

Algorithmique & programmation

Formation VBA 3 Interagir

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Application 1- VBA : Test de comportements d'investissements

Création d un formulaire de contact Procédure

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Programmation avec Microsoft Visual Basic. NET. Réponses aux questions Solutions des exercices

Génie Logiciel avec Ada. 4 février 2013

DATAWAREHOUSE ADIFAC Saisie dans les applications ADIFAC

Prêt de série et création de groupes d emprunteurs

Version 7.1_5.1. Release Notes

FÉDÉRATION MAROCAINE DES SOCIÉTÉS D'ASSURANCES ET DE RÉASSURANCE FICHIER CENTRAL CRM. MANUEL D UTILISATION Version 1.0

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Utilisation de l outil lié à MBKSTR 9

Mode Opératoire Ciel Gestion commerciale V 12 et s (2006)

ESPACE COLLABORATIF SHAREPOINT

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Algorithmique et programmation : les bases (VBA) Corrigé

LA GESTION COMMERCIALE DES VEHICULES

INSCRIRE MON ENFANT SUR UN SÉJOUR

FORMATION au VBA Pour EXCEL. Version 2007 & +

La Programmation Orientée Agent Les Agents Réactifs

DIDACTIEL ACHAT DE PLACES SITE WEB DFCO

COMPTA. Description des Commandes

DE CENTRALISE FACTURE CRE ATION

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Mode opératoire CEGID Business Suite

1. Structure d'un programme FORTRAN 95

Création d un site Internet

Tutorial NL220. Objectifs : Fournir un guide utilisateur pour NL220. Présenter une méthodologie efficace pour la création de projet

FileZilla. Sauvegarder son site Guppy à l aide de. Sommaire:

Fiche de version 12.16a - Septembre Gestion des Plans d actions personnalisés (PAP)... 6

Mon-complement-retraite.com Aide en ligne

NOUVEAU Site internet

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

(Mis à jour : 7 déc. 12)

Rafraichissement conditionné d'une page en.net

Cours Informatique Master STEP

NOTICE TELESERVICES : Demander un état hypothécaire

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

SOMMAIRE. Accéder à votre espace client. Les Fichiers communs. Visualiser les documents. Accéder à votre espace client. Changer de Workspace

Mallette Métrologie Contrôle des spectrophotomètres

NOTICE TELESERVICES : Payer un impôt et gérer les contrat de paiement des impôts professionnels

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Introduction de Windows Form

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

CEGID - Business Suite Gestion commerciale

Vous avez cliqué sur le lien disponible sur le Site Uniformation. Vous venez d arriver sur cette page.

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Manuel d utilisation du Site Internet Professionnel

Listes de validation dans OpenOffice Calc

INSCRIRE MON ENFANT SUR UN SÉJOUR

EVOLUTION 7.1 Déroulement DREAM INFO 1 Dossier 23 Ciel Gestion Commerciale.

Installation et configuration du logiciel BauBit

Alice Sécurité Enfants (version )

Comment se connecter au VPN ECE sous vista

Rechercher et supprimer les doublons!

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

ADO.NET. Ado.net propose deux modes d'accès, le mode connecté et le mode déconnecté.

1 Position du problème

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Guide Utilisateur Transnet

Unity Real Time 2.0 Service Pack 2 update

LIMESURVEY. LimeSurvey est une application permettant de créer des questionnaires d enquête en ligne et d en suivre le dépouillement.

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Exporter des écritures. Importer des écritures. Depuis EBP Comptabilité.

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

Se repérer dans l écran de Foxmail

Comptabilité - USR. Logiciel : Comptabilité USR - Version 2,16 Documentation réalisée par JJ Gorge Trésorier Tir à l'arc le 04/04/ / 15

RECUPEREZ DES FICHIERS SUPPRIMES AVEC RECUVA

NOTICE D INSTALLATION ET D UTILISATION DE LIVE BACKUP

A C T I V I T É S CE QUE JE CONNAIS CONTEXTE PROFESSIONNEL. Quel est l élément essentiel du poste informatique? ...

FAIRE SES COMPTES AVEC GRISBI

Transcription:

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 1

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 2

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é» 3

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 2") Dim nomjoueur2 As String = InputBox("Donnez le nom du joueur 2", "Joueur LblNomJoueur2.Text = nomjoueur2 4. b Ajouter le bouton sur la form pour obtenir la form ci-dessous Propriété imposée : Nom = «btnchangementjoueur» Text =Changer les joueurs 4

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() 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 - 5

'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 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 If pba2.backcolor <> Color.White Then If pba3.backcolor <> Color.White Then If pbb1.backcolor <> Color.White Then If pbb2.backcolor <> Color.White Then If pbb3.backcolor <> Color.White Then If pbc1.backcolor <> Color.White Then If pbc2.backcolor <> Color.White Then If pbc3.backcolor <> Color.White Then 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 6

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 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 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 '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 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 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 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 7

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 Else MsgBox("Cette case a déjà été sélectionnée... Veuillez en sélectionner une autre", MsgBoxStyle.Exclamation) ' 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() ' Est-ce fini? If CalculerNombreCaseNonJouees() = 0 Then MsgBox("Match nul... Nouvelle partie") listboxjournal.items.add("nul " & DateTime.Now) ReinitialiserPartie() ' Faire passer le tour au joueur suivant If NumeroJoueurCourant = 1 Then NumeroJoueurCourant = 2 Else NumeroJoueurCourant = 1 Etape 6 : appeler la procédure CocherLaCaseEnfonctionDuJoueur pour chaque clic sur une des 9 cases. 8

' 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) ' 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) ' 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) Private Sub pbb1_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles pbb1.click CocherLaCaseEnfonctionDuJoueur(pbB1) Private Sub pbb2_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles pbb2.click CocherLaCaseEnfonctionDuJoueur(pbB2) Private Sub pbb3_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles pbb3.click CocherLaCaseEnfonctionDuJoueur(pbB3) Private Sub pbc1_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles pbc1.click CocherLaCaseEnfonctionDuJoueur(pbC1) Private Sub pbc2_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles pbc2.click CocherLaCaseEnfonctionDuJoueur(pbC2) Private Sub pbc3_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles pbc3.click CocherLaCaseEnfonctionDuJoueur(pbC3) 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() 9

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 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 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) 10

'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 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 11

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 EcritureLigneDansFichier(nomFichier, "Sauvegarde du " & DateTime.Now) For Each item In listboxjournal.items EcritureLigneDansFichier(nomFichier, item) Next 12

10. Amélioration du programme (image, ajout des diagonales dans l algo ) 13