Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 3 janv. 2007 à 11:39
Ok pas de label ...
T'affiche dans la barre de titre de la fenetre, dans une deuxieme form, dans un bloc, je sais ... pas mais fo y réflechir.
Si on peut afficher juste à l'endroit voulu c'est mieux mais faudrait effacer avant de re écrire (copie un bloc de gris par dessus ? ...)
J'espère que je suis pas trop critique ...
Afyn - Navedac
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 2 janv. 2007 à 17:19
Afyn> Je suis d'accord sur ton decoupage du code. Par contre je met un TRES TRES GROS VETO sur le label. Car tu ajouterais un "control", donc un objet activex avec tout ce que cela implique d'initialisation, d'acces à la base de registre, d'acces aux proprieté. (C'est pas totalement vrais dans le cas d'un label car vb traite un peu differement mais bon...) Ce que je veux dire c'est qu'il est forcement plus simple de dire a une API GDI NATIVE : dessine un texte ici, plutot que de créer un controle, de le deplacer puis d'acceder à sa propriété "caption" etc... de plus un label ferait clignoter la fenetre à chaque rafraichissement et ça, c'est hors de question, j'ai pour principe de toujours dissocier "affichage" et "traitement des données" un control briserait cette regle. C'est toutefois une piste mais je sur sur qu'elle serait inadapté dans notre cas.
Merci
@+
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 2 janv. 2007 à 12:12
Dernier avis :
Afficher tout à chauque fois semble donner satisfaction et ne consomme pas beaucoup de ressource proc.
Il ne reste que la piste j'affiche que les blocs ayant
besoin d'être affiché.
L'affichage du texte est bien compliqué (un label aurait
fait le même usage) il necessite de tout ré afficher une fois de plus.
Je diviserai la gestion de l'affichage en trois parties
distinctes :
Affiche blocs (bloc départ / bloc arrivée)
Affiche texte (dans un label)
Affiche animation (ou dans la gestion du timer)
Encore une fois comme c'est à titre pédagogique rien
n'empêche d'explorer ces voies là.
Bonne année
Bonne prog
Si tous les pingouins du monde pouvaient se donner la main ...
Afyn - Navedac
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 30 déc. 2006 à 19:50
Afyn> Tu sais c'est comme dans l'A320 on a beau enlever 1 Kilo par siege, les 200 passagers repu de hamburger feront toujours trainer l'avion au decolage :p. Mouai ça veux rien dire en vrais :p
@+
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 30 déc. 2006 à 18:14
Une autre piste de réflexion :
Tu fais un taleau Level qui est un tableau de Bloc.
Tu charges toutes les données dans ce tableau.
On pourrait s'en passer
Il suffirait d'avoir une seule structure de blocks que tu charges
à chaque changement de niveau.
Afyn - Navedac
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 30 déc. 2006 à 16:56
On peut le voir comme ça également :
'parcours les blocs
Dim MehDC As Long: MehDC = Me.hdc
Dim PicturehDC As Long: PicturehDC = Picture1.hdc
For j = 0 To 14
For i = 0 To 14
'Dessine un bloc deplacable
If Level.Blocs(i, j).High Then
BitBlt MehDC, i * 30, j * 30, 30, 30, _
PicturehDC, Level.Blocs(i, j).High * 30, 0, _
vbSrcCopy
Else
'Dessine un bloc
BitBlt MehDC, i * 30, j * 30, 30, 30, _
PicturehDC, Level.Blocs(i, j).Low * 30, 0, _
vbSrcCopy
End If
Next
Next
Afyn - Navedac
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 30 déc. 2006 à 16:34
Premièrement met le Timer.enabled = False pour le démarrage
Deuxièmement ... faudrait une petite rourine pour mesurer le temps
Troisièmement on peut mettre certaines propriétés dans des mémoires
tampon comme tu me l'as appris par ex :
'parcours les blocs
Dim Mehdc As Long: Mehdc = Me.hdc
For j 0 To MAXY: For i 0 To MAXX
'Dessine un bloc
BitBlt Mehdc, i * 32, j * 32, 32, 32, _
Picture1.hdc, Level.Blocs(i, j).Low * 32, 0, vbSrcCopy
'Dessine un bloc deplacable
If Level.Blocs(i, j).High Then
BitBlt Mehdc, i * 32, j * 32, 32, 32, _
Picture1.hdc, Level.Blocs(i, j).High * 32, 0, vbSrcCopy
Next: Next
J'essaye de voir si je peux trouver une meilleure gestion
Afyn - Navedac
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 30 déc. 2006 à 13:13
Afyn> Pfff ces Toulousaings toujours devant le barbecue :p
1 - Oui on redessine tout les blocs deja par ce que c'est pas long, deuxiemement par ce que s'il on veux des blocs de forme differente on pourra crée des masques. Troisiemement par ce qu'un code de gestion de bloc sous forme de collection serait bcpo plus long.
2 - Non... le timer est utile pour l'animation de la fleche.
PS : Retires tes doigts du grill !
PS2 : Aller j'attend ton coup de main pour l'optimisation :p
@+
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 30 déc. 2006 à 10:41
Pour info le code dans le Timer ne sert à rien !
Yop
Afyn - Navedac
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 30 déc. 2006 à 10:29
Juste un commentaire (mais c'est habituel)...
on redessine l'ensemble des blocs à chaque fois sur un tableau de 14 * 14 Blocs
Est ce possible de ne redessiner que les blocs qui doivent l'être ?
Si tu veux un coup de main pour y réflechir j'suis là
(Parce que pour un coup de neurone .. je suis pas vraiment gréé)
Afyn - Navedac
philbar71
Messages postés70Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 5 juillet 2013 26 déc. 2006 à 02:28
Ben moi j'ai été jusqu'au niveau 20 (un beau damier) qui est le dernier niveau et ce ne sont pas les derniers les plus difficiles. sans doute parce qu'on finit par prendre l'habitude de combiner les déplacements.
Je peux vous donner le code du niveau 19 (le 20 n'a pas de code car il est inutile de le mémoriser pour rejouer plus tard et atteindre un 21 qui n'existe pas) : DSR3GL
Mais il ne vous servira certainement à rien car les codes sont génàrés de façon aléatoire à chaque nouvelle partie.
Un petit jeu très intéressant néanmoins.
Bonne chance pour les futurs volontaires...
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 23 déc. 2006 à 10:39
Je suis arrivé au niveau 9, mais je pense pas pouvoir refaire le 8 !
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 22 déc. 2006 à 19:51
Niveau 8 je bloque lol !
c'est tout un art ce jeu :)
Bon je vais m'nentrainer @+
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 21 déc. 2006 à 15:50
Le niveau 3 je vois pas ! faudrait afficher la solution ! (pour être sûr qu'il ne s'agit pas d'une erreur)
odan71
Messages postés140Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention11 décembre 2007 21 déc. 2006 à 09:14
3 janv. 2007 à 11:39
T'affiche dans la barre de titre de la fenetre, dans une deuxieme form, dans un bloc, je sais ... pas mais fo y réflechir.
Si on peut afficher juste à l'endroit voulu c'est mieux mais faudrait effacer avant de re écrire (copie un bloc de gris par dessus ? ...)
J'espère que je suis pas trop critique ...
Afyn - Navedac
2 janv. 2007 à 17:19
Merci
@+
2 janv. 2007 à 12:12
Afficher tout à chauque fois semble donner satisfaction et ne consomme pas beaucoup de ressource proc.
Il ne reste que la piste j'affiche que les blocs ayant
besoin d'être affiché.
L'affichage du texte est bien compliqué (un label aurait
fait le même usage) il necessite de tout ré afficher une fois de plus.
Je diviserai la gestion de l'affichage en trois parties
distinctes :
Affiche blocs (bloc départ / bloc arrivée)
Affiche texte (dans un label)
Affiche animation (ou dans la gestion du timer)
Encore une fois comme c'est à titre pédagogique rien
n'empêche d'explorer ces voies là.
Bonne année
Bonne prog
Si tous les pingouins du monde pouvaient se donner la main ...
Afyn - Navedac
30 déc. 2006 à 19:50
@+
30 déc. 2006 à 18:14
Tu fais un taleau Level qui est un tableau de Bloc.
Tu charges toutes les données dans ce tableau.
On pourrait s'en passer
Il suffirait d'avoir une seule structure de blocks que tu charges
à chaque changement de niveau.
Afyn - Navedac
30 déc. 2006 à 16:56
'parcours les blocs
Dim MehDC As Long: MehDC = Me.hdc
Dim PicturehDC As Long: PicturehDC = Picture1.hdc
For j = 0 To 14
For i = 0 To 14
'Dessine un bloc deplacable
If Level.Blocs(i, j).High Then
BitBlt MehDC, i * 30, j * 30, 30, 30, _
PicturehDC, Level.Blocs(i, j).High * 30, 0, _
vbSrcCopy
Else
'Dessine un bloc
BitBlt MehDC, i * 30, j * 30, 30, 30, _
PicturehDC, Level.Blocs(i, j).Low * 30, 0, _
vbSrcCopy
End If
Next
Next
Afyn - Navedac
30 déc. 2006 à 16:34
Deuxièmement ... faudrait une petite rourine pour mesurer le temps
Troisièmement on peut mettre certaines propriétés dans des mémoires
tampon comme tu me l'as appris par ex :
'parcours les blocs
Dim Mehdc As Long: Mehdc = Me.hdc
For j 0 To MAXY: For i 0 To MAXX
'Dessine un bloc
BitBlt Mehdc, i * 32, j * 32, 32, 32, _
Picture1.hdc, Level.Blocs(i, j).Low * 32, 0, vbSrcCopy
'Dessine un bloc deplacable
If Level.Blocs(i, j).High Then
BitBlt Mehdc, i * 32, j * 32, 32, 32, _
Picture1.hdc, Level.Blocs(i, j).High * 32, 0, vbSrcCopy
Next: Next
J'essaye de voir si je peux trouver une meilleure gestion
Afyn - Navedac
30 déc. 2006 à 13:13
1 - Oui on redessine tout les blocs deja par ce que c'est pas long, deuxiemement par ce que s'il on veux des blocs de forme differente on pourra crée des masques. Troisiemement par ce qu'un code de gestion de bloc sous forme de collection serait bcpo plus long.
2 - Non... le timer est utile pour l'animation de la fleche.
PS : Retires tes doigts du grill !
PS2 : Aller j'attend ton coup de main pour l'optimisation :p
@+
30 déc. 2006 à 10:41
Yop
Afyn - Navedac
30 déc. 2006 à 10:29
on redessine l'ensemble des blocs à chaque fois sur un tableau de 14 * 14 Blocs
Est ce possible de ne redessiner que les blocs qui doivent l'être ?
Si tu veux un coup de main pour y réflechir j'suis là
(Parce que pour un coup de neurone .. je suis pas vraiment gréé)
Afyn - Navedac
26 déc. 2006 à 02:28
Je peux vous donner le code du niveau 19 (le 20 n'a pas de code car il est inutile de le mémoriser pour rejouer plus tard et atteindre un 21 qui n'existe pas) : DSR3GL
Mais il ne vous servira certainement à rien car les codes sont génàrés de façon aléatoire à chaque nouvelle partie.
Un petit jeu très intéressant néanmoins.
Bonne chance pour les futurs volontaires...
23 déc. 2006 à 10:39
22 déc. 2006 à 19:51
c'est tout un art ce jeu :)
Bon je vais m'nentrainer @+
21 déc. 2006 à 15:50
21 déc. 2006 à 09:14
18 déc. 2006 à 21:35