Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 2020
-
15 août 2005 à 22:53
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015
-
24 août 2005 à 07:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 24 août 2005 à 07:33
pour ne pas afficher les valeurs, il suffit de mettre des directives
#if DEBUG
commandes
#end if
et de définir la directive DEBUG dans les options de compilation du projet
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 août 2005 à 20:34
une commande qui te seras bien pratique : Debug.print
comme l'a souligné Cheyenne, ce projet contient peu de contrôles, donc çà passe encore..
pour l'exemple, tu peux ajouter un timer à intervalle 200, qui contiendrait
tu as ainsi, 5fois par seconde, les valeurs de tes variables qui s'afficheront dans ta fenêtre d'execution (en bas de VB, par défaut)
plus qu'à ajouter une cote ['] pour transformer cette ligne en commentaire, lorsque tu post ton projet. ces résultats de gènent personne, et on comprend facilement tant "comment" les relire, que "pourquoi" ce timer existe....
bonne continuation
PCPT
atila612
Messages postés13Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention13 mai 2009 23 août 2005 à 20:22
Oui pour les labels je me suis apersus que personne ne faisait comme ca mais moi j'ais apris seul ( j'ai 15 ans) et je trouve plus claire d'avoir des labels car au départ je ne les cache pas et comme ca je peut voir si il y a un bug et d'ou il vient.Et merci a vous pour votre aide ... atila612
PS : je vais m'abituer au variable .....
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 18 août 2005 à 09:52
Juste pour le
Randomize 'permet de ne pas avoir toujours les même suites. calcul lié à l'heure se son appel
Il suffit de le mettre une fois en début de programme, sinon vb regenère une suite à chaque appel.
Pour les nomenclatures de contrôles, il y a deux écoles (j'ai pas de préférence, les deux sont bien): une qui consiste à nommer en fonction de la nature (lblMonLabel) et une qui consiste à nommer en fonction de la fonction du contrôle (ui pour interface utilisateur, in -INput- pour ce qui est saisie etc.)
Le première façon était très bien quand on n'avait pas la saisie automatique, maintenant j'utilise les deux
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 16 août 2005 à 14:31
tout à fait d'accord Cheyenne. là, j'ai voulu privilégier la lecture, mais garder le type du contrôle dans son nom est une règle à respecter.
bien faire aussi attention au diminutif que l'on donne.
exemple, ne pas mettre "FRM_MonNomDeControle" pour des Form et des Frame... (déjà vu!)
Atila612, comme tu peux le voir dans mon précédent post, la Form est grise, et noire seulement à l'execution. pense que même en voulant "soigner l'esthétique", il ne faut pas que tu perdes trop de temps, si ce n'est que, par exemple, en cherchant 3/4heure ton pointeur de souris en posant un contrôle, parce qu'il est aussi noir que ta Form ;)
bonne continuation (à tous d'ailleurs)
PCPT
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 16 août 2005 à 12:49
Bonjour PCPT,
Vous avez grandement optimisé le code et amélioré sa lisibilité (donc sa compréhension) et vos conseils en préambule sont judicieux.
Mais je me permet une simple remarque, vous dites 'nommer ses contrôles'. Oui, mais en les faisant précéder de leur identification conventionelle : shpJouer_haut, shpBalle, etc...
Dans le code on lit : Joueur_Haut.Left = Balle.Left - 300
On sait qu'il s'agit bien de contrôles, mais de quel type ?
Evidemment, ici, les contrôles ne foisonnent pas mais sur une Form en comportant beaucoup, il est ainsi plus aisé de les identifier. C'est une bonne habitude à prendre également.
Amicalement,
Cheyenne
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 16 août 2005 à 08:02
Salut !
Pour ma part j'ajouterais : respecter l'indentation (un retrait supplémentaire à chaque imbrication), sans quoi ton programme risque d'être illisible.
Cordialement,
Cacophrène
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 16 août 2005 à 02:42
salut,
ouai, c'est plutôt pas mal pour un début, mais faut deviner plus qu'autre chose.
voici quelques conseils :
*nommer ses contrôles
*déclarer et nommer ses variables au mieux, et les Typer correctement (entier, chaîne, etc...)
*éviter de mettre trop de contrôles, quand on peut faire sans
*éviter les variables accentuées
*commencer sa Form par "Option Explicit". çà t'oblige à déclarer les variables et déclanche une erreur en cas d'oublie.
ici, aucun Label n'est utile, et le Timer3 non plus.
dans ton Timer3, tu regardes à chaque dixième de seconde si tu dois regénérer des nombres aléatoires. tu peux très bien le faire dans le Timer2.
et les pictures, tu as une Shape pour la balle, autant faire pareil avec les raquettes. oubien utiliser des vraies images pour les 3 ;)
trêve de blabla, j'espère que ceci pourra t'aider. tu as juste à copier dans le bloc-note, et renommer avec l'extention .frm, puis doucle-cliquer.
bonne continuation
PCPT
VERSION 5.00
Begin VB.Form Form_modifiee
AutoRedraw = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 4 'Fixed ToolWindow
Caption = "Ball"
ClientHeight = 7455
ClientLeft = 45
ClientTop = 390
ClientWidth = 7440
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 7455
ScaleWidth = 7440
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
Begin VB.Timer Timer_Random
Interval = 10
Left = 960
Top = 2280
End
Begin VB.Timer Timer_Move
Interval = 1
Left = 960
Top = 1680
End
Begin VB.Shape Joueur_Haut
BorderColor = &H00FFC0C0&
FillColor = &H80000010&
FillStyle = 0 'Solid
Height = 375
Left = 3000
Top = 0
Width = 1215
End
Begin VB.Shape Joueur_Bas
BorderColor = &H00FFC0C0&
FillColor = &H80000010&
FillStyle = 0 'Solid
Height = 375
Left = 2880
Top = 7080
Width = 1215
End
Begin VB.Shape Balle
BackStyle = 1 'Opaque
BorderColor = &H00C0FFC0&
FillColor = &H00FFFFFF&
FillStyle = 0 'Solid
Height = 495
Left = 2160
Shape = 3 'Circle
Top = 5160
Width = 495
End
Begin VB.Line Line3
BorderColor = &H80000001&
X1 = 7080
X2 = 7080
Y1 = 0
Y2 = 7440
End
Begin VB.Line Line1
BorderColor = &H80000001&
X1 = 360
X2 = 360
Y1 = 0
Y2 = 7440
End
End
Attribute VB_Name = "Form_modifiee"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit 'sert à être obligé de déclarer chaque variable. peu faire éviter pas mal d'erreurs
Dim Haut As Integer, Bas As Integer, Gauche As Integer, Droite As Integer
Dim Random As Boolean
Dim RandHaut As Integer, RandBas As Integer, RandGauche As Integer, RandDroite As Integer
'
'
'
Private Sub Form_Load()
'couleur fond noir
Me.BackColor = 0
'init variables
Haut 1: Bas 0: Gauche = 1: Droite = 0
Random = False
RandHaut 20: RandBas 20: RandGauche = 20: RandDroite = 20
End Sub
'
'
'
Private Sub Timer_Move_Timer()
'balle haut
If Haut = 1 Then
Joueur_Haut.Left = Balle.Left - 300
Balle.Top = Balle.Top - RandHaut
End If
'balle bas
If Bas = 1 Then
Joueur_Bas.Left = Balle.Left - 300
Balle.Top = Balle.Top + RandBas
End If
'balle gauche/droite
If Gauche 1 Then Balle.Left Balle.Left - RandGauche
If Droite 1 Then Balle.Left Balle.Left + RandDroite
'limites verticales
If Balle.Top < 360 Then
Haut 0: Bas 1
Random = True
ElseIf Balle.Top > 6600 Then
Haut 1: Bas 0
Random = True
End If
'limites horizontales
If Balle.Left < 360 Then
Droite 1: Gauche 0
Random = True
ElseIf Balle.Left > 6600 Then
Droite 0: Gauche 1
Random = True
End If
End Sub
'
'
'
Private Sub Timer_Random_Timer()
Static Cpt As Integer ' on compte pour l'aléatoire, permettant de supprimer ton Timer3
Cpt = Cpt + 1
If Cpt = 10 Then
Cpt = 0
If Random Then Random = False
End If
If Random Then
Randomize 'permet de ne pas avoir toujours les même suites. calcul lié à l'heure se son appel
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 16 août 2005 à 01:20
Salut,
voilà mêmes remarques : les labels aux lieu de variables, c'est pas trés joli ... La presentation de ton coden'est pas top ... et c'est comme à l'école, on devoir juste mais sur un torchons, c'est une pénalitée assurée...
Apres perso, utiliser des composant sans les nommer ça aide pas forcément à comprendre ton code : par exemple, à froid si tu lis
Shape1.Top = Shape1.Top - Label1.Caption
tu comprend pas forcément qui est shape1,qui est label1 alors que
Balle.Top = Balle.Top - Décalage
est tout de mêm plus clair !!
Mais bon ça marche...
++
Zlub
Seth77
Messages postés572Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 20201 15 août 2005 à 22:53
Slu
c un peu le bordel (j ai pas vraiment l utilite des label ... tu pouvais utilise des variables)en tout les cas a l air de marcher !
sinon essaie de mieux "presenter" le code c plus facile pour la comprehension et le debugage.
24 août 2005 à 07:33
#if DEBUG
commandes
#end if
et de définir la directive DEBUG dans les options de compilation du projet
23 août 2005 à 20:34
comme l'a souligné Cheyenne, ce projet contient peu de contrôles, donc çà passe encore..
pour l'exemple, tu peux ajouter un timer à intervalle 200, qui contiendrait
Debug.Print Haut; Bas; Gauche; Droite
(par exemple)
tu as ainsi, 5fois par seconde, les valeurs de tes variables qui s'afficheront dans ta fenêtre d'execution (en bas de VB, par défaut)
plus qu'à ajouter une cote ['] pour transformer cette ligne en commentaire, lorsque tu post ton projet. ces résultats de gènent personne, et on comprend facilement tant "comment" les relire, que "pourquoi" ce timer existe....
bonne continuation
PCPT
23 août 2005 à 20:22
PS : je vais m'abituer au variable .....
18 août 2005 à 09:52
Randomize 'permet de ne pas avoir toujours les même suites. calcul lié à l'heure se son appel
Il suffit de le mettre une fois en début de programme, sinon vb regenère une suite à chaque appel.
Pour les nomenclatures de contrôles, il y a deux écoles (j'ai pas de préférence, les deux sont bien): une qui consiste à nommer en fonction de la nature (lblMonLabel) et une qui consiste à nommer en fonction de la fonction du contrôle (ui pour interface utilisateur, in -INput- pour ce qui est saisie etc.)
Le première façon était très bien quand on n'avait pas la saisie automatique, maintenant j'utilise les deux
16 août 2005 à 14:31
bien faire aussi attention au diminutif que l'on donne.
exemple, ne pas mettre "FRM_MonNomDeControle" pour des Form et des Frame... (déjà vu!)
Atila612, comme tu peux le voir dans mon précédent post, la Form est grise, et noire seulement à l'execution. pense que même en voulant "soigner l'esthétique", il ne faut pas que tu perdes trop de temps, si ce n'est que, par exemple, en cherchant 3/4heure ton pointeur de souris en posant un contrôle, parce qu'il est aussi noir que ta Form ;)
bonne continuation (à tous d'ailleurs)
PCPT
16 août 2005 à 12:49
Vous avez grandement optimisé le code et amélioré sa lisibilité (donc sa compréhension) et vos conseils en préambule sont judicieux.
Mais je me permet une simple remarque, vous dites 'nommer ses contrôles'. Oui, mais en les faisant précéder de leur identification conventionelle : shpJouer_haut, shpBalle, etc...
Dans le code on lit : Joueur_Haut.Left = Balle.Left - 300
On sait qu'il s'agit bien de contrôles, mais de quel type ?
Evidemment, ici, les contrôles ne foisonnent pas mais sur une Form en comportant beaucoup, il est ainsi plus aisé de les identifier. C'est une bonne habitude à prendre également.
Amicalement,
Cheyenne
16 août 2005 à 08:02
Pour ma part j'ajouterais : respecter l'indentation (un retrait supplémentaire à chaque imbrication), sans quoi ton programme risque d'être illisible.
Cordialement,
Cacophrène
16 août 2005 à 02:42
ouai, c'est plutôt pas mal pour un début, mais faut deviner plus qu'autre chose.
voici quelques conseils :
*nommer ses contrôles
*déclarer et nommer ses variables au mieux, et les Typer correctement (entier, chaîne, etc...)
*éviter de mettre trop de contrôles, quand on peut faire sans
*éviter les variables accentuées
*commencer sa Form par "Option Explicit". çà t'oblige à déclarer les variables et déclanche une erreur en cas d'oublie.
ici, aucun Label n'est utile, et le Timer3 non plus.
dans ton Timer3, tu regardes à chaque dixième de seconde si tu dois regénérer des nombres aléatoires. tu peux très bien le faire dans le Timer2.
et les pictures, tu as une Shape pour la balle, autant faire pareil avec les raquettes. oubien utiliser des vraies images pour les 3 ;)
trêve de blabla, j'espère que ceci pourra t'aider. tu as juste à copier dans le bloc-note, et renommer avec l'extention .frm, puis doucle-cliquer.
bonne continuation
PCPT
VERSION 5.00
Begin VB.Form Form_modifiee
AutoRedraw = -1 'True
BackColor = &H00C0C0C0&
BorderStyle = 4 'Fixed ToolWindow
Caption = "Ball"
ClientHeight = 7455
ClientLeft = 45
ClientTop = 390
ClientWidth = 7440
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 7455
ScaleWidth = 7440
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
Begin VB.Timer Timer_Random
Interval = 10
Left = 960
Top = 2280
End
Begin VB.Timer Timer_Move
Interval = 1
Left = 960
Top = 1680
End
Begin VB.Shape Joueur_Haut
BorderColor = &H00FFC0C0&
FillColor = &H80000010&
FillStyle = 0 'Solid
Height = 375
Left = 3000
Top = 0
Width = 1215
End
Begin VB.Shape Joueur_Bas
BorderColor = &H00FFC0C0&
FillColor = &H80000010&
FillStyle = 0 'Solid
Height = 375
Left = 2880
Top = 7080
Width = 1215
End
Begin VB.Shape Balle
BackStyle = 1 'Opaque
BorderColor = &H00C0FFC0&
FillColor = &H00FFFFFF&
FillStyle = 0 'Solid
Height = 495
Left = 2160
Shape = 3 'Circle
Top = 5160
Width = 495
End
Begin VB.Line Line3
BorderColor = &H80000001&
X1 = 7080
X2 = 7080
Y1 = 0
Y2 = 7440
End
Begin VB.Line Line1
BorderColor = &H80000001&
X1 = 360
X2 = 360
Y1 = 0
Y2 = 7440
End
End
Attribute VB_Name = "Form_modifiee"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit 'sert à être obligé de déclarer chaque variable. peu faire éviter pas mal d'erreurs
Dim Haut As Integer, Bas As Integer, Gauche As Integer, Droite As Integer
Dim Random As Boolean
Dim RandHaut As Integer, RandBas As Integer, RandGauche As Integer, RandDroite As Integer
'
'
'
Private Sub Form_Load()
'couleur fond noir
Me.BackColor = 0
'init variables
Haut 1: Bas 0: Gauche = 1: Droite = 0
Random = False
RandHaut 20: RandBas 20: RandGauche = 20: RandDroite = 20
End Sub
'
'
'
Private Sub Timer_Move_Timer()
'balle haut
If Haut = 1 Then
Joueur_Haut.Left = Balle.Left - 300
Balle.Top = Balle.Top - RandHaut
End If
'balle bas
If Bas = 1 Then
Joueur_Bas.Left = Balle.Left - 300
Balle.Top = Balle.Top + RandBas
End If
'balle gauche/droite
If Gauche 1 Then Balle.Left Balle.Left - RandGauche
If Droite 1 Then Balle.Left Balle.Left + RandDroite
'limites verticales
If Balle.Top < 360 Then
Haut 0: Bas 1
Random = True
ElseIf Balle.Top > 6600 Then
Haut 1: Bas 0
Random = True
End If
'limites horizontales
If Balle.Left < 360 Then
Droite 1: Gauche 0
Random = True
ElseIf Balle.Left > 6600 Then
Droite 0: Gauche 1
Random = True
End If
End Sub
'
'
'
Private Sub Timer_Random_Timer()
Static Cpt As Integer ' on compte pour l'aléatoire, permettant de supprimer ton Timer3
Cpt = Cpt + 1
If Cpt = 10 Then
Cpt = 0
If Random Then Random = False
End If
If Random Then
Randomize 'permet de ne pas avoir toujours les même suites. calcul lié à l'heure se son appel
RandHaut = Int((100 * Rnd) + 30)
RandBas = Int((100 * Rnd) + 30)
RandGauche = Int((100 * Rnd) + 30)
RandDroite = Int((100 * Rnd) + 30)
Random = False
End If
End Sub
16 août 2005 à 01:20
voilà mêmes remarques : les labels aux lieu de variables, c'est pas trés joli ... La presentation de ton coden'est pas top ... et c'est comme à l'école, on devoir juste mais sur un torchons, c'est une pénalitée assurée...
Apres perso, utiliser des composant sans les nommer ça aide pas forcément à comprendre ton code : par exemple, à froid si tu lis
Shape1.Top = Shape1.Top - Label1.Caption
tu comprend pas forcément qui est shape1,qui est label1 alors que
Balle.Top = Balle.Top - Décalage
est tout de mêm plus clair !!
Mais bon ça marche...
++
Zlub
15 août 2005 à 22:53
c un peu le bordel (j ai pas vraiment l utilite des label ... tu pouvais utilise des variables)en tout les cas a l air de marcher !
sinon essaie de mieux "presenter" le code c plus facile pour la comprehension et le debugage.
par exemple :
if (i=1)
i=0
end if