Rpg sur vb 08 [Résolu]

Messages postés
7
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
2 juillet 2011
- 25 juin 2011 à 22:38 - Dernière réponse :
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
14 novembre 2018
- 26 juin 2011 à 01:00
Bonjour à tous,
Depuis peu j'ai un projet , un "rpg" Sur Vb
Et voilà que je rencontre un premier problème ..

J'explique , Les Hp sont représenté par des "progressbar"
Donc quand mon personnage envoi une attaque sur l'ennemi (qui a une progressbar2)
progressbar2 qui a comme value initial "100"

Le code est donc "ProgressBar2.Value -= 10"

Pour le moment tout est ok , mais quand je mets de nouvelle attaque par exemple ,
ProgressBar1.Value -= 18 et donc ca ne tombe pas sur "0" pile et l'appli crash ,

Comme erreur , ça me met :
La valeur '-5' n'est pas valide pour 'Value'. 'Value' doit être compris entre 'minimum' et 'maximum'. Nom du paramètre : Value

Voilà en espérant avoir était clair ,
Cordialement .
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
14 novembre 2018
- 26 juin 2011 à 00:07
3
Merci
Bonjour,

<Runtime.CompilerServices.Extension()> Public Function AddValueSecure(ByVal pPB As ProgressBar,byval pValue as Integer) as Integer
Dim lValue as integer=pPb.Value+pValue
if lValuepPb.Maximum Then
pPb.Value=pPb.Maximum
Return lValue-pPb.Maximum
Else
pPb.Value=lValue
Return 0
End if
End Sub


Tu mets ce code dans un module.
L'attribut Extension existe depuis .NET 2008, donc ça devrait passer, sinon tu peux le retirer dans pb.

Pour faire bouger tes ProgressBars, voici quelques exemple :

ProgressBar1.AddValueSecure(-18)
ProgressBar2.AddValueSecure(12)

AddValueSecure s'assure que tu ne sors pas des limites du contrôle et te retourne l'excédant si ça dépasse.

Tu peux aussi l'appeler de cette manière :
AddValueSecure(ProgressBar1,-18)
AddValueSecure(ProgressBar2,12)

Sinon, conseils :
Evite de garder les noms par défaut pour les contrôles que tu utilises dans le code, ça rend difficile la relecture.

Aussi, sache qu'il y a une propriété Enabled normalement au Timer pour qu'il se lance périodiquement.

Mon site

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de NHenry
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
14 novembre 2018
- 25 juin 2011 à 23:02
0
Merci
Bonjour,

Utilises une variable intermédiaire et controle sa valeur avant d'assigner la propriété de la ProgressBar.

Mon site
Commenter la réponse de NHenry
Messages postés
7
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
2 juillet 2011
- 25 juin 2011 à 23:15
0
Merci
C'est à dire?
Désolé mais je vois pas ce que tu veux dire
Commenter la réponse de darkboom
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
14 novembre 2018
- 25 juin 2011 à 23:24
0
Merci
Bonjour,

Dim lValeur as Integer=ProgressBar1.Value-Malus
if lValeur<0 then lValeur=0
ProgressBar1.Value=lValeur

ou

ProgressBar1.Value=Max(0,ProgressBar1.Value-Malus)

Avec Max une fonction qui retourne la plus grandes des valeurs passées en paramètre.

Mon site
Commenter la réponse de NHenry
Messages postés
7
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
2 juillet 2011
- 25 juin 2011 à 23:41
0
Merci
Merci de m'aidé c'est vraiment sympa car je voulais partir d'un rpg simple , mais même ça c'est compliqué.. xD


Dim lValeur as Integer=ProgressBar1.Value-Malus
if lValeur<0 then lValeur=0
ProgressBar1.Value=lValeur

Donc là si j'ai bien compris , le "malus" , c'est la value que mon boutton envlève ?
Je viens d'éssayer et sa cloche , Je débute donc je viens de lire des articles sur les variables mais c'est encore flou


Je poste mon code :(Qui est vraiment un code de débutant , mais ce projet me tient à coeur )

Public Class Form2

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Form1.Hide()
Timer1.Start()
Timer2.Start()
Timer3.Start()
ProgressBar1.Value = 100
End Sub

Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
If ProgressBar4.Value = 0 Then

End If
End Sub

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

If ProgressBar1.Value = 0 Then
Label4.Text = Label4.Text + 1
Label6.Text = Label6.Text + 100
ProgressBar1.Value = 100
Label7.Text = "100"
MsgBox("Level up ! , Potion disponible")
Button5.Visible = True
ElseIf Label4.Text >= "20" Then
Button4.Visible = True
Timer1.Stop()
Timer1.Start()
End If
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ProgressBar1.Value -= 10
ProgressBar4.Value -= 5
Label7.Text = Label7.Text - 10
Label9.Text = Label9.Text - 5
End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

If Label4.Text = "10" Then
PictureBox3.Visible = True



End If
End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
ProgressBar4.Value += 50
Label9.Text = Label9.Text + 50

Button5.Visible = False
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
ProgressBar1.Value -= 20
ProgressBar4.Value -= 4
Label7.Text = Label7.Text - 20
Label9.Text = Label9.Text - 4
End Sub
Commenter la réponse de darkboom
Messages postés
7
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
2 juillet 2011
- 26 juin 2011 à 00:21
0
Merci
Ah ok , Merci énormément !
Il va me falloir un temps pour le comprendre maintenant le code , merci en tout cas !
Commenter la réponse de darkboom
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
14 novembre 2018
- 26 juin 2011 à 01:00
0
Merci
Bonjour,

Si ton pb est résolu, pense à marquer en "Réponse acceptée" le ou les messages qui t'ont aidés.

Sinon, le code de la fonction est simple, on applique la modification de la valeur et avant d'assigner on vérifie si la valeur peut entrer dans le PB.

Mon site
Commenter la réponse de NHenry

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.