Apprenez vb.net en jouant

Description

Ce jeu consiste en un combat basique entre vous et l'ordinateur, vous devez le tuez, il doit vous tuer, enfin bref. De plus il utilise de nombreuses fonctions que j'ai pensez utile de commenter afin que ceux qui ont envie en apprenne un peu plus sur VB.NET. Le jeu utilise +sieurs numéric UPDOWN, des boites de dialogues pour enregistrer les données, des passages d'arguments, groupbox, progressbar, timer et autres. J'apprecierais vraiment vos commentaires.

Source / Exemple :


Imports System.Random

Public Class GAMER

    Dim nameJ1, strings, variable As String
    Dim diff, TROJ, TROE, time1, time2, variable2 As Int16
    Dim HPJ, MPJ, DEFJ, ATKJ, ARGJ, BOUJ, FORCENREGISTOTJ, FORCENREGISTOTE, MPENREGISTOTJ, MPENREGISTOTE, COUPE, COUPJ As Long
    Dim HPE, MPE, DEFE, ATKE, ARGE, BOUE As Long
    Dim time As Int16
    Dim variable1 As Long

    'Desciption de toutes les variables : 
    ' nameJ1 : nom du joueur
    ' diff : difficulté du jeu
    ' HP : vie ; MP : magie ; DEF : défense ; ATK : attaque ; ARG : argent ; BOU : Bouclier ; TRO : nombre de trousse
    ' le J après chaque correspond au joueur
    ' le E après chaque variable correspond à l'ordinateur
    ' time est le compteur de temps qui lancera l'attaque
    ' variable1 sert à faire transiter certain chiffre
    'FORCENREGISTOTE : enregistre le total des attaques porter par l'ennemi pour faire des statistique qui évaluerons qui a gagné de qui a perdu
    'FORCENREGISTOTJ : enregistre le total des attaques porter par le joueur 
    'COUPE : enregistre le nombre de coup porté par l'ennemi 
    'COUPJ : enregistre le nombre de coup porté par le joueur
    'time1 : horaire de départ du jeu
    'time2 : hotaire de fin du jeu

    Private Sub GAMER_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        nameJ1 = pass1.Text 'récupere le nom du joueur qui se trouve dans un textbox caché (pour la voir mettez la background color en blanc
        diff = Val(Pass2.Text)  'récupère le niveau de difficulté et l'enregistre dans diff
        JOUEUR1.Text = nameJ1       'on change le nom de la groupbox
        BilatkJ.Text = nameJ1 'on change le nom de la groupbox
        time1 = System.DateTime.Now.Millisecond

        If HPass.Text <> "" Then

            HPJ = HPass.Text
            MPJ = MPass.Text
            ATKJ = Atkpass.Text
            ARGJ = ARGpass.Text
            BOUJ = Boupass.Text
            TROJ = Tropass.Text
            DEFJ = DEFPass.Text
            HPE = HPE + Int(Rnd() * (80 * diff) + HPJ * diff / 2) ' 
            MPE = MPE + Int(Rnd() * (80 * diff) + MPJ * diff / 2) '         dans touts ces calculs, on fais une addition : ex : HPJ = HPJ + ...
            DEFE = DEFE + Int(Rnd() * (80 * diff) + DEFJ * diff / 2) '       cet ajout ne change en rien la valeur lors du lancement du jeu, mais permet, lorsqu'on gagne un niveau de garder ses valeurs
            ATKE = ATKE + Int(Rnd() * (35 * diff) + ATKJ * diff / 2) ' 
            ARGE = ARGE + Int(Rnd() * 100 * diff + ARGJ * diff / 2) ' 
            BOUE = BOUE + Int(Rnd() * (80 * diff) + BOUJ * diff / 2) ' 
            TROE = TROE + Int(Rnd() * (8 * diff) + 2 * diff + TROJ * diff / 2) ' }

            ACTUDONN()
        Else
            CREAVAL()               'on lance le sub CREAVAL dont le but est de créer les valeurs du joueur et de l'ennemi
        End If

    End Sub
    Public Sub CREAVAL()

        HPJ = HPJ + Int(Rnd() * (50 * diff) + 20 * diff) ' 
        MPJ = MPJ + Int(Rnd() * (50 * diff) + 20 * diff) ' 
        DEFJ = DEFJ + Int(Rnd() * (50 * diff) + 20 * diff) '
        ATKJ = ATKJ + Int(Rnd() * (30 * diff)) '      Ici on utilise 2 nouvelles méthodes : 
        ARGJ = ARGJ + Int(Rnd() * 100 * diff) '                      int : arrondi un décimal en entier
        BOUJ = BOUJ + Int(Rnd() * (50 * diff)) '         rnd : donne un nombre alétoire : pour un résultat plus aléatoire, il vaut mieux ne rien mettre dans la parenthèse
        TROJ = TROE + Int(Rnd() * (8 * diff))
        ' {
        HPE = HPE + Int(Rnd() * (80 * diff) + HPJ * diff / 2) ' 
        MPE = MPE + Int(Rnd() * (80 * diff) + MPJ * diff / 2) '         dans touts ces calculs, on fais une addition : ex : HPJ = HPJ + ...
        DEFE = DEFE + Int(Rnd() * (80 * diff) + DEFJ * diff / 2) '       cet ajout ne change en rien la valeur lors du lancement du jeu, mais permet, lorsqu'on gagne un niveau de garder ses valeurs
        ATKE = ATKE + Int(Rnd() * (35 * diff) + ATKJ * diff / 2) ' 
        ARGE = ARGE + Int(Rnd() * 100 * diff + ARGJ * diff / 2) ' 
        BOUE = BOUE + Int(Rnd() * (80 * diff) + BOUJ * diff / 2) ' 
        TROE = TROE + Int(Rnd() * (8 * diff) + 2 * diff + TROJ * diff / 2) ' }

        Timer1.Start()                  'on lance le timer qui a pour seul but de faire attaquer l'ennemi après un labs de temps
        marchand.Visible = False        'le marchand d'objet ne pas tout le temps être visible sinon ce serait trop facile alors au départ on le fait disparaitre

        ACTUDONN()      'ici on appelle une sub dénommée actudonn qui va actualiser (afficher) les données sur la form pour le joueur

    End Sub
    Public Sub ACTUDONN()

        HPJT.Text = "HP : " + Str(HPJ)                  '[  HPJT.text correspond au texte de le textbox, dont on définit ici la phrase "HP = " 
        MPJT.Text = "MP : " + Str(MPJ)                  '   str sert à transformer un nombre en string ce qui permet d'afficher sur un textbox les valeurs trouvés
        DEFJT.Text = "Défense : " + Str(DEFJ)
        ATKJT.Text = "Attaque : " + Str(ATKJ)
        ARGJT.Text = "Argent : " + Str(ARGJ)
        DEFPJT.Text = "Bouclier : " + Str(BOUJ)
        TROJT.Text = "Trousse : " + Str(TROJ)

        HPET.Text = "HP : " + Str(HPE)
        MPET.Text = "MP : " + Str(MPE)
        DEFET.Text = "Défense : " + Str(DEFE)
        ATKET.Text = "Attaque : " + Str(ATKE)
        ARGET.Text = "Argent : " + Str(ARGE)
        DEFPET.Text = "Bouclier : " + Str(BOUE)
        TROET.Text = "Trousse : " + Str(TROE)       ']

        prixtro.Text = Str(Int(Rnd() * 60 * diff)) + " euros unités"    'ici on ne passe pas par des variables pour enregistrer
        'le prix des trousses, des armes ou des boucliers. Les valeurs seront montrées au joueur et pourront être réutilisées
        'en utilisant la formule val(textbox concernée.text) exemple :  val(priarm.text)
        ' attention : pour récupérer un nombre dans une string, il faut que la valeur soit au début de la string, sinon cela ne marche pas
        prixarm.Text = Str(Int(Rnd() * 60 * diff)) + " euros unités"
        prixbou.Text = Str(Int(Rnd() * 60 * diff)) + " euros unités"
        valmarctro.Text = Str(Int(Rnd() * 2 * diff)) + " gain"
        valmarcbou.Text = Str(Int(Rnd() * 5 * diff)) + " gain"
        valmarcarm.Text = Str(Int(Rnd() * 4 * diff)) + " gain"

        If HPE <= 0 Then ENNMORT() 'si l'ennemi à un HP < 0 alors la sub ENNMORT affichera au joueur sa victoire
        If HPJ <= 0 Then JOUMORT() ' si le joueur est mort donc ses HPJ < 0 alors on indique au joueur à travers la sub JOUMORT (assez explicite) que c'est la fin

        If Rnd(1) * 100 > 50 Then        'ici on introduit une condition : si une valeur aléatoire (en 1 et 100) est supérieure à 50 alors
            marchand.Visible = True     'on affiche le marchand
            Nbrtroach.Value = 0             'quand on change la valeur du NuméricUpDown, il ne se remet pas automatiquement à 0, ce qui implique au joueur
            nbrbouach.Value = 0             ' de le remettre tout seul à 0 => perte de temps, on lui facilite le travail en changeant la valeur des 3 numéricUPDown
            nbrarmach.Value = 0             'en utilisant la "fonction" : [nom de la Numeric UP DOWN.value = [valeur : ici = à 0]
        Else                                'sinon 
            marchand.Visible = False    'on le fait disparaître

        End If

        Progresstemp.Value = Progresstemp.Minimum       'On remet au minimum la progresbar pour que le joueur sache qu'il a bien joué et qu'il a encore du temps
        'on utilise la phrase suivante : [nom de la progressbar].[valeur : value] = [nom de la progressbar].[minimum = valeur marquer dans le designer (propriétés de la progresbar]

        Timer1.Start() 'le timer est toujours arrete à chaque clic sur l'un des boutons, ce qui augmente le temps de réflexion et de lecture du joueur et ne pas l'handicaper en se faisant attaquer pendant qu'il cherche
    End Sub
    Public Sub ENNMORT()
        diff = (diff + 1)
        MsgBox("Bravo, Tu l'as tué !!! niveau = " & Str(diff), MsgBoxStyle.Exclamation, "END")
        'MsgBox([texte à afficher], [type de message], [titre du message]
        'dans le texte à afficher, on peut remarque que j'y ait inserer une variable : diff ; il faut toujours mettre str si on veut afficher une valeur
        ' de plus, pour séparer le texte de la valeur j'y ai mis un & qui lui indique que cela fait toujours partie du texte à afficher

        CREAVAL() 'on repart sur la sub créaval qui permet de recréer des valeurs (en gardant les valeurs que tu a pu obtenir dans les niveaux antérieurs
    End Sub
    Public Sub JOUMORT()
        If MsgBox("Désolé, tu est mort, niveau = " & Str(diff) & " ; Veux-tu rejouer ???", MsgBoxStyle.OKCancel, "END") = MsgBoxResult.OK Then
            diff = 1
            CREAVAL()
        Else
            time2 = System.DateTime.Now.Millisecond
            End
        End If

        'on va retranscrire ce qui est dit ci-dessus : le but est ici d'afficher un message en lui disant qu'il est mort, son niveau, et lui demander si il veut rejouer.
        ' décryptons le message : 
        ' - le texte à afficher est "Désolé tu est mort, niveau = " & str(diff) & " Veux tu rejouer"
        '                                                               ^| => affiche la valeur de la difficulté atteint
        ' MsgBoxStyle.OkCancel : type de la MsgBox, qui affichera en plus un Ok et un cancel
        ' Titre de la MsgBox : End
        ' dans la condition : SI le résultat de la MsgBox : Ok alors le joueur veut faire une partie 
        'on remet une difficulté à 1 et on lance CREAVAL  pour refaire les valeurs

    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        time = time + 1         'on l'incrémente de 1 en 1 à chaque tick du timer (1 seconde)
        Progresstemp.Value() = time    ' on modifie la valeur de la progressbar de façon à ce qu'il affiche en nombre de blocs la valeur de time

        If time >= (45 / diff) Or Progresstemp.Value = Progresstemp.Maximum Then 'si time >= 10 (> est au cas où)

            Timer1.Stop() 'on arrete le timer le temps que le joueur apprenne la nouvelle
            MsgBox("Temps dépassé : vous êtes attaqué", MsgBoxStyle.Critical, "ALERTE") 'on prévient le joueur par un message MsgBox(TEXTE A AFFICHER, TYPE MESSAGE, TITRE MESSAGE)
            Progresstemp.Value = Progresstemp.Minimum 'on modifie la valeur de la progressbar à son minimum
            time = 0    'on remet time à 0
            ATTAKEN()   'on appelle la sub qui s'occupe de créer les valeurs d'attaque contre le joueur

        End If

    End Sub
    Private Sub Attaquer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Attaquer.Click
        Timer1.Stop() ' on stop le timer pour que l'on puisse faire les calculs tranquilement
        Progresstemp.Value = Progresstemp.Minimum   'on remet le progresstemp au minimum

        typatakj.Text = "Type d'attaque : PHYSIQUE"     'on indique le type d'attaque

        variable1 = (Int(Rnd(1) * ATKJ)) 'on fait un calcul trop bête pour être expliqué

        FORCENREGISTOTJ = FORCENREGISTOTJ + variable1 'pour les statistiques
        COUPJ = COUPJ + 1

        restedatkj.Text = Str(variable1) + " infligé !!! "      'on affiche au joueur le nombre de point du'il a infligé
        If BOUE <= 0 Then HPE = HPE - Val(restedatkj.Text) 'si le bouclier est <= 0 alors ce sont les HP qui diminue
        If BOUE > 0 Then BOUE = BOUE - Val(restedatkj.Text) 'sinon c son bouclier qui prend

        If Int(Rnd() * 200) > 100 Then          'ici on interroge l'ordinateur pour savoir si il doit gagner de l'argent, ou de la défense physique ou rien du tout
            gainj.Text = Str(Int(Rnd() * 20 * diff)) + " sous gagnés  "
            ARGJ = ARGJ + Val(gainj.Text)
        Else
            If Int(Rnd() * 100 < 51) Then
                gainj.Text = Str(Int(Rnd() * 21 * diff)) + " bouclier "
                BOUJ = BOUJ + Val(gainj.Text)
            Else
                gainj.Text = "Tu gagnes : rien du tout"
            End If
        End If

        ATTAKEN()
    End Sub
    Public Sub ATTAKEN()

        variable1 = Int(Rnd(1) * 100)       'on crée une valeur entre 1 et 100

        If variable1 > 50 Then      'si cette valeur est supérieure à 50 alors c une attaque physique

            typatake.Text = "Type d'attaque : PHYSIQUE"
            variable1 = Int(Rnd(1) * ATKE * (HPE * 100 / ((300 * diff) + 60 * diff)) - (BOUJ * 50 / ((300 * diff) + 20 * diff))) 'on invente la valeur de l'attaque
            If variable1 > ATKE Then variable1 = ATKE 'si elle est plus grande que sa force, alors on la réduit à sa force

            FORCENREGISTOTE = FORCENREGISTOTE + variable1       'statistique pour la prochaine version
            COUPE = COUPE + 1
            restedatke.Text = Str(variable1) & " infligés !!!!!!"       'on indique au joueur combien il lui a infligé

            If BOUJ <= 0 Then HPJ = HPJ - Val(restedatke.Text) 'si le bouclier est <= 0 alors ce sont les HP qui diminue
            If BOUJ > 0 Then BOUJ = BOUJ - Val(restedatke.Text) 'sinon c son bouclier qui prend

        Else 'si la valeur est inférieure à 50 alors
            If MPE > 0 Then     'et que ses Mp sont supérieure à 0 alords
                typatake.Text = "Type d'attaque : Magique"  'c une attaque magique

                variable1 = (Int(Rnd(1) * MPE * (HPE * 100 / ((300 * diff) + 60 * diff)))) 'on invente la valeur de l'attaque
                If variable1 > MPE Then variable1 = MPE 'si elle est plus grande que ses MP, alors on la réduit à son maximum
                MPE = MPE - variable1 'on nelève cette valeur à son nombre de HP
                restedatke.Text = Str(variable1) + " infligés !!!!" 'on précise au joueur combien l'ennemi lui a infligé
                If DEFJ <= 0 Then HPJ = HPJ - Val(restedatke.Text) 'si la défense est <= 0 alors ce sont les HP qui diminue
                If DEFJ > 0 Then DEFJ = DEFJ - Val(restedatke.Text) 'sinon la défense prend
            End If
        End If

        '-----------------------------------------------------------------------------------------------------------------------------------------------------

        If Int(Rnd() * 200) > 50 Then       'comme pour le joueur on regarde si il a gagné quelque chose
            gaine.Text = Str(Int(Rnd() * 20 * diff)) + " euros récupérées "     'on l'indique
            ARGE = ARGE + Val(gaine.Text)   'on la rejoute
        Else
            gaine.Text = "Tu gagnes : rien du tout"
        End If

        '-----------------------------------------------------------------------------------------------------------------------------------------------------

        If HPE < ((70 * diff) / 2) Or MPE < ((70 * diff) / 2) Or DEFE < ((70 * diff) / 2) Then      'l'ennemi dispose de trousse qu'il peut utiliser si l'une de ces variables est inférieure à la moitié autorisé
            If TROE > 0 Then    'seulement il lui faut des trousses sinon ca ne marche pas
                TROE = TROE - 1 'on lui enlève 1 trousse
                HPE = Int(Rnd(1) * HPE) + HPE 'on rajoute à ses HP un nombre compris entre 0 et ses HP
                MPE = Int(Rnd(1) * MPE) + MPE 'pareil pour ses MP
                DEFE = Int(Rnd(1) * DEFE) + DEFE 'et sa défense
            End If
        End If

        '-----------------------------------------------------------------------------------------------------------------------------------------------------

        If BOUE < Int(((70 * diff) / 2.5)) And marchand.Visible.ToString = "visible" And ARGE > Val(prixarm.Text) Then      ' cela commande à l'ordinateur l'achet chez le marchand de bouclier
            'si son bouclier est inférieur au maximum qu'il peut atteindre / par 2.5 et que le marchand est là et qu'il lui reste des sous alors
            ARGE = ARGE - Val(prixbou.Text) 'on lui enlève l'argent qui correspond 
            BOUE = BOUE + Val(valmarcbou.Text) 'et on lui rajoute le bouclier
        End If

        If TROE < Int(((10 * diff) / 3)) And marchand.Visible.ToString = "visible" And TROE > Val(prixtro.Text) Then    'c pareil pour les trousses et l'attaque
            ARGE = ARGE - Val(prixtro.Text)
            TROE = TROE + Val(valmarctro.Text)
        End If

        If ATKE < Int(ATKJ * 80 / 100) And marchand.Visible.ToString = "visible" And ARGE > Val(prixarm.Text) Then
            ARGE = ARGE - Val(prixarm.Text)
            ATKE = ATKE + Val(valmarcarm.Text)
        End If

        '-----------------------------------------------------------------------------------------------------------------------------------------------------
        Progresstemp.Value = 0      'on met la valeur du progresstemp à 0 afin de ne pas pénaliser le joueur
        ACTUDONN()  'on actualise les données
    End Sub
    Private Sub Acheter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Acheter.Click

        Timer1.Stop()
        'on met en pause le timer
        variable1 = ((Nbrtroach.Value * (Val(prixtro.Text))) + (nbrarmach.Value * (Val(prixarm.Text))) + (nbrbouach.Value * (Val(prixbou.Text))))

        If variable1 > ARGJ Then 'on vérifie si tout ce qu'il a demande ne dépasse pas sa somme totale

            MsgBox("Vous n'avez pas assez d'argent", MsgBoxStyle.Information, "ERROR") 'si c le cas alors on affiche un message d'erreur et on actualise

        Else 'sinon

            ARGJ = ARGJ - variable1 'on enlève la somme désiré
            TROJ = TROJ + Nbrtroach.Value * Val(valmarctro.Text) 'on rajoute ce qu'il a demandé : [valeur du nombre de trousse désiré]*[valeur de ce qu'il gagne]
            ATKJ = ATKJ + nbrarmach.Value * Val(valmarcarm.Text)
            BOUJ = BOUJ + nbrbouach.Value * Val(valmarcbou.Text)
        End If
        Progresstemp.Value = 0      'on met la valeur du progresstemp à 0 afin de ne pas pénaliser le joueur
        ACTUDONN()  'on actualise les données
    End Sub
    Private Sub Trousse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Trousse.Click 'lorsqu'il clique sur un trousse

        Timer1.Stop()
        Progresstemp.Value = 0

        If TROJ > 0 Then    'vérification du nombre de trousse
            TROJ = TROJ - 1 'enlèvement d'une trousse

            If HPJ > 0 Then
                HPJ = HPJ + Int(Rnd() * HPJ / diff)     'on fait comme pour l'ennemi, on random son nombre de HP que l'on rajoute à ce qu'il possède déjà
                If HPJ > 2 * HPE Then HPJ = 2 * HPE 'pour limiter le nombre de HP, on place la limite à 2* le nombre de HP de l'ennemi
            Else
                HPJ = HPJ - Int(Rnd() * HPJ / diff) 'si HP est négatif, on fait comme ligne 309, sauf qu'on soustrait, ce qui ajoute
            End If
            If MPJ > 0 Then
                MPJ = MPJ + Int(Rnd() * MPJ / diff)     'pareil pour les MP
                If HPJ > 2 * HPE Then MPJ = 2 * MPE
            Else
                MPJ = MPJ - Int(Rnd() * MPJ / diff)
            End If
            If DEFJ > 0 Then
                DEFJ = DEFJ + Int(Rnd() * DEFJ / diff)
                If HPJ > 2 * HPE Then DEFJ = 2 * DEFE
            Else
                DEFJ = DEFJ - Int(Rnd() * DEFJ / diff)
            End If
            ACTUDONN()
        End If
    End Sub
    Private Sub Fragiliser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Fragiliser.Click

        If MPJ > 0 Then 'on verifie le nombre de MP

            Timer1.Stop()
            Progresstemp.Value = 0

            typatakj.Text = "Type d'attaque : MAGIQUE"      'on précise le type d'attaque

            variable1 = Int(Rnd() * MPJ)    'on random le nombre de MP
            restedatkj.Text = Str(variable1) + " infligés !!! " 'on informe le joueur sur ce qu'il a infligé

            If DEFE <= 0 Then   'si la défense de l'ennemi est < 0 alors ce sont les HP qui prenne
                HPE = HPE - Val(restedatkj.Text)
                MPJ = MPJ - Int(variable1 / 2)  'pour des raisons de jouabilités, j'ai préfére / par 2 le nombre de MP utilisé
            End If

            If DEFE > 0 Then    'si la défense est > 0 
                DEFE = DEFE - Val(restedatkj.Text)  'c la défense qui prend
                MPJ = MPJ - variable1   'on enlève le nobmre de MP normalement
            End If

            If Int(Rnd() * 200) > 50 Then       'on vérifie si il a gagné quelque chos
                gainj.Text = "Tu gagnes : " + Str(Int(Rnd(20 * diff)))
                ARGJ = ARGJ + Val(gainj.Text)
            Else
                gainj.Text = "Tu gagnes : rien du tout"
            End If

            ATTAKEN()       'on passe la main à l'ennemi
        End If
    End Sub
    Private Sub Voler_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Voler.Click

        Timer1.Stop()
        If Int(Rnd() * 200) > 100 Then 'c comme un dé, pour 1 2 3 c bon, pour le reste ca marche pas
            variable1 = Int(Rnd() * ARGE)   'on définit le nombre de sous qu'il lui vole
            ARGE = ARGE - variable1 'on l'enlève à l'ennemi
            ARGJ = ARGJ + variable1 'on le donne au joueur
            If Int(Rnd() * 200) > 100 Then  'bonus exceptionnel
                variable1 = Int(Rnd() * TROE)   'on définit le nombre de trousse
                TROJ = TROJ + variable1 'rajout
                TROE = TROE - variable1 'enlève
            End If
        Else
            MsgBox("Raté")  'si ca ne marche pas, on le précise
        End If
        ATTAKEN()   'on donne la main
    End Sub
    Private Sub Sauver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Sauver.Click

        Dim number As Int16     'le définit une nouvelle variable valable uniquement dans cette sub

        Timer1.Stop()

        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog 'change le type de la form mais cela ne sert à rien

        If MsgBox("Voulez-vous sauvegarder ???", MsgBoxStyle.YesNo, "QUIT") = MsgBoxResult.Yes Then
            'on demande si il veut sauvegarder en utilisant une MsgBox, si le resultat est oui alors

            Dim FileDialog1 As New SaveFileDialog() 'on définit une autre variable correspondant à une boite de dialogue
            FileDialog1.Filter = "Gente IM|*.gti"   'les filtres précédemment vu
            FileDialog1.Title = "Save GenteF1 fighter"  'le titre
            FileDialog1.ShowDialog()    'on montre la boite de dialogue
            If FileDialog1.FileName = "" Then   'si le chemin du fichier est nul 
                MsgBox("Vous n'avez rien entré", MsgBoxStyle.Information, "ERROR") 'on le précise
            Else    'sinon
                FileOpen(1, FileDialog1.FileName, OpenMode.Output)  'on ouvre le fichier en le mettant sur mode output (écriture)

                number = Int(Rnd() * 100 * diff)    'on invente la variable
                Print(1, Str(number))
                Print(1, Str(diff * number) + ", ") 'on écrit la valeur de la difficulté en utilisant la commande print
                Print(1, nameJ1 + ", ")
                Print(1, Str(HPJ * number) + ", ")
                Print(1, Str(MPJ * number) + ", ")
                Print(1, Str(DEFJ * number) + ", ")
                Print(1, Str(BOUJ * number) + ", ")
                Print(1, Str(ATKJ * number) + ", ")
                Print(1, Str(TROJ * number) + ", ")
                Print(1, Str(ARGJ * number) + ", ")
                FileClose(1)    'on ferme le fichier
            End If
        Else    'si le joueur ne veut pas sauvegarder alors c la fin
            End
        End If
        ACTUDONN()  'on actualise
    End Sub

    Private Sub Sauver_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Sauver.MouseEnter
        ToolTip1.Show("Si tu veux quitter, clique", Sauver) '[nom de la tooltip].Sauver([string à afficher], [nom de toolbox voulu])
        'ceci est juste pour montrer comment on montre un tooltip
        Timer1.Interval = 3000  'ca c'est pour montrer comment on change la valeur du timer : [nom du timer].interval = valeur en milliseconds
        Me.BackColor = Color.DarkGreen  'ca montre comment on change la couleur de la form
    End Sub

    Private Sub Sauver_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Sauver.MouseLeave
        ToolTip1.Hide(Sauver)
        'ceci est pour montrer comment on cache une tooltip  : [nom de la tooltip].Hide([nom de toolbox voulu])
        Timer1.Interval = 1000
        Me.BackColor = Color.Black

    End Sub

Conclusion :


Seul bug connu dans ce jeu est un overflow qui se pose à partir de niveau 6 je crois ce qui empeche de continuer, ce qui peuvent m''aider sont les bienvenue. Je pense le continuer en créant un duel entre 2 joueurs (pas encore en réseaux mais cela viendra

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.