JEU DU CUBILUS

Profil bloqué - 18 déc. 2006 à 21:35
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 3 janv. 2007 à 11:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40767-jeu-du-cubilus

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 70 Date d'inscription samedi 1 juin 2002 Statut Membre Derniè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és 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Derniè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és 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Derniè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és 140 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 11 décembre 2007
21 déc. 2006 à 09:14
très fun ;)
Profil bloqué
18 déc. 2006 à 21:35
Je ne connaissais pas du tout mais je l'adopte : 10/10
Rejoignez-nous