Méga bloks

Bonjour,

Et bien voilà : Méga Blocks a été validé par Sébastien ! Merci à lui !

Mais Quèsaco ?

Ce n'est ni plus ni moins qu'un jeu de type Tétris, à la différence près que la barre ne fait que 3 carrés au lieu de 4.

Je me permet de vous expliquer un peu son fonctionnement.

Deux boutons de jeu :

  • mode "Classique", cela correspond au Tétris habituel au niveau des pièces sauf pour la "grande" barre qui ici ne comporte que 3 carrés.
  • mode "Ultimate", cela correspond au Tétris mais ici il y a 43 pièces différentes, de la plus simple (un seul carré) à la plus "grosse" avec ses 9 carrés !

Le jeu commence avec une pièce tirée au hasard ainsi que l'affichage de la prochaine pièce.

Toutes les pièces sont "vertes" et vous les dirigez avec les touches de direction du clavier, à savoir :

flèche gauche : déplacement de la pièce vers la gauche,

flèche droite : déplacement de la pièce vers la droite,

flèche du bas : déplacement de la pièce vers le bas (accélération)

flèche du haut : rotation de la pièce

tourne

Il est bon de savoir que "toutes les rotations" ne sont pas possibles :

En effet du fait que les pièces soient gérées sous VBA comme faisant parties d'un bloc de 3 carrés sur 3 carrés (pointillés rouge et blanc sur l'image), si une partie de cette zone se trouve "hors jeu" ou superposée à une autre pièce alors la rotation n'est pas possible :

rotation

Je suis désolé, mais pour la raison "hors jeu" je n'ai pas pris le temps de programmer un "slide" afin que cette rotation puisse se faire... Peut-être pour une version ultérieure

Il est bon de savoir et utile "d'en profiter" : une pièce verte, tant qu'elle est verte peut être déplacée ou tournée, ce qui fait que vous pouvez "boucher" des trous en faisant un "slide" lors de son déplacement :

slide

Voilà vous savez tout.

j'oubliais, il y a un troisième bouton pour stopper la partie en cours si elle devait durer trop longtemps, mais alors la partie est perdue, sans possibilité de s'enregistrer au niveau du tableau des scores...

Bon jeu @ vous !

@ bientôt

LouReeD

Salut LouReeD,

Une belle application de plus à ta collection.

J'ai testé un peu, c'est très agréable à utiliser, mais j'ai du arrêter par ce que ça fait moyen de jouer à Tetris au bureau !

Bonjour Pedro22 !

Merci pour ces encouragements !

Au boulot, dites vous ?

J'en connais que cela ne dérange pas !

Il y a un petit bug sur l'affichage des scores, les deux dernières colonnes n'affiche rien... Normal les données vont en colonne 7 et 8 au lieu de 44 et 45...

Et à l'utilisation en mode classique, l'accélération automatique de la descente des pièces est trop longue à venir... La tempo de 2 secondes est réduite de 0,1 toutes les 10 lignes, il faudrait que cela aille plus vite, non ?

Quite à mettre une tempo différente entre le classique et l'ultimate. En effet e n ultimate la grille se remplie vite malgré les deux secondes...

@ bientôt

LouReeD

Sinon ça fait moyen de jouer à TETRIS, mais c'est mega top de jouer à MEGA BLOKS !

@ bientôt

LouReeD

Bon, j'ai explosé ton score avec 19900 pts, mais j'ai pas pu immortaliser ça par ce que j'ai du appuyer sur quelque chose qu'il fallait pas après avoir saisie mon nom et j'ai du fermer le classeur ! Concernant la vitesse, oui la descente pourrait être plus rapide, et surtout rendue paramétrable à l'avance (choix de la difficulté qui modifierait aussi la vitesse d'obtention des points). Une autre fonctionnalité manque cruellement : un bouton PAUSE !

Bonsoir,

en effet la pause... on me la demande, en fait j'ai la solution car ce n'est pas simple avec une boucle Do Loop pour le jeu.

Si tout se jouait qu'avec l'événementielle alors ce serait plus simple.

Donc l'idée et de créer une variable Globale "Attente" en Boolean, de créer une SUB OnAttend

Avec en code :

Sub On Attend()
    If Attente = True Then Attente = False Else Attente = True
    Do
        DoEvents
    Loop While Attente = True
End Sub

Cette Sub serait lancée avec un bouton pause par exemple ou bien la détection de la barre espace...

Le soucis de la barre espace c'est que si on l'utilise pendant la pause alors la pause s'arrête, c'est pourquoi je suis parti sur un bouton.

Du coup la macro tombe dans une boucle "perpétuelle" mais grâce à DoEvents elle rend l'application accessible.

Ce n'est pas grand chose à programmer pour vous en attendant la mise à jour.

Donc la futur mise à jour sera un bouton pause, correction de ciblage des cellules pour les scores, modification de la vitesse de déplacement vers le bas, variation de la vitesse automatique plus rapide en fonction du nombre de ligne, variation des points obtenus pour chaque pièce et chaque ligne fonction du niveau atteint....

En d'autre termes encore du pain sur la planche !

Merci @ vous pour ce retour constructif ! "Ca me fait quelque chose" comme dirait VGE dans une parodie de détournement de vidéo....

@ bientôt

LouReeD

Il faudrait aussi que je règle ce problème de barre à 3 carrés... Je crois qu'il faut que je repense toute la structure même de mon code... Ainsi que la possibilité de faire les rotations de pièces même si celles-ci sont trop "près" des bord suivant leur configuration... Mais je crois que le Tétris original avait aussi ce genre de limite, non ?

@ bientôt

LouReeD

Salut LouReeD,

La rotation limitée par le bord ou la barre de 3 ne m'ont pas dérangés du tout, ça fait partie du jeu. Pour le reste des fonctionnalités mentionnées, je pense par contre que ça apporterai un plus à ton application.

Tu peux même imaginer afficher des messages au passage de certains scores pour encourager le joueur, voir modifier le style de la grille ou la couleur des pièces en parallèle (comme pour simuler le passage vers un nouveau niveau et rendre le jeu plus vivant).

En tout cas c'est un joli travail !

Bonjour,

Vous savez quelque fois ce sont les idées qui manquent... Et celle de la couleur des pièces qui change en fonction du niveau pour quoi pas, au niveau de mon jeu c'est juste une histoire de MFC. D'ailleurs j'avais pensez le mettre en place mais pour différencier les pièces entre elles...

@ bientôt

LouReeD

Pour la fonctionnalité PAUSE, j'ai juste ajouté une MsgBox associée à un bouton PAUSE :

Sub PartiePause()
    MsgBox "Reprendre la partie ?", vbOKOnly
End Sub

Excel est par contre inutilisable pendant la pause, mais dans mon cas ça remplit l'objectif.

J'ai aussi modifié la vitesse de départ via le choix du niveau (j'ai donc placé en premier dans le code le choix du level) :

' initialisation du niveau
Range("Level").Value = Application.InputBox("Choix du niveau de départ :", "Niveau", 1, Type:=1)

' Initialisation de la vitesse au début du jeu : 2 secondes
Vitesse = Application.Max(2000 - 100 * Int(Range("Level").Value / 10),100)

PS : ça va plus vite avec cette version !

megabloks

C'est l'avantage des applications "free" on en fait ce que l'on veut

De mon côté j'ai mis la pause avec Do Loop, changement de couleur à chaque niveau avec une répétition de ces couleurs tous les 10 niveaux, j'ai corrigé la mise en place des scores, modifié les vitesses en fonction du type de jeu.

Ah oui pour les couleurs, il y a dix cellules nommées à droite du jeu pour y mettre les mise en forme de votre choix, cela accepte également les dégradés. La nouvelle version sera mise en validation ce soir, j'espère...

@ bientôt

LouReeD

C'est l'avantage des applications "free" on en fait ce que l'on veut

De mon côté j'ai mis la pause avec Do Loop, changement de couleur à chaque niveau avec une répétition de ces couleurs tous les 10 niveaux, j'ai corrigé la mise en place des scores, modifié les vitesses en fonction du type de jeu.

Ah oui pour les couleurs, il y a dix cellules nommées à droite du jeu pour y mettre les mise en forme de votre choix, cela accepte également les dégradés. La nouvelle version sera mise en validation ce soir, j'espère...

@ bientôt

LouReeD

Belle réactivité ! Je m'empresserais de voir ce que ça donne !

Bonsoir,

voilà la nouvelle version est en cours de validité !

Un bouton pause est mis en place.

Une question est posée lors du clic "Arrêter le jeu" ou l'appuis sur la touche [Fin] du clavier : voulez-vous enregistrer le score de la partie en cours ? Ceci afin de ne pas perdre un bon score sous prétexte de devoir partir.

Mise en place de 10 mise en formes au niveau des pièces afin de "visualiser" le changement de niveau : ces couleurs par défaut pourront être modifiées à votre guise que ce soit au niveau de couleur voir même des textures !

Modification du calcul des points en fonction du niveau et/ou du type de jeu.

Ajout d'une colonne "type de jeu" dans le tableau des scores.

Correction de l'affichage des dernières données du tableau des scores.

Voilà, en espérant que ces modifications vont dans le bon sens.

@ bientôt

LouReeD

Une question est posée lors du clic "Arrêter le jeu" ou l'appuis sur la touche [Fin] du clavier : voulez-vous enregistrer le score de la partie en cours ? Ceci afin de ne pas perdre un bon score sous prétexte de devoir partir.

Pour moi, oui !

Par contre pas de gestion de mauvaise manipulation.

Pour valider le pseudo il suffit d'appuyer sur entrée une fois le pseudo renseigné.

@ bientôt

LouReeD

C'est validé ! Merci Sébastien !

@ bientôt

LouReeD

Est-ce que tu as visité cette page depuis la validation de ton jeu ?

Cordialement,

Tout a fait !

Vous commencez à me connaître avec mon coté "objectif" "statistiques" "classement" !

Et remplir cette barre en était un d'objectif, maintenant je savoure le fais d'avoir le choix, soit être vert claire jusqu'au 10 000 ième message, soit entrer dans la famille restreinte des "contributeurs" qui aujourd'hui "visible" ne comporte que waard.

Il faut que je passe le pas de passer du vert au violet, et pourtant le violet me tente car il y en a eu de plus en plus dans mes applications ! Comme quoi l'objectif ne date pas d'hier !

Alors je me donne encore un peu de temps de réflexion mais j'avoue que dans cela il n'y a pas trop de mystère !

@ bientôt

LouReeD

Bonjour,

Nouvelle version en cours...

Avec la barre à 4 carrés... Et maintenant 4 niveaux de difficultés :

Classique, Difficile : ces deux niveaux se jouent sur une grille réduite 16 colonnes sur 20 lignes.

Mortel et Ultimate : se jouent sur une grille de 20 colonnes sur 40 lignes (de mémoire...)

Et d'un niveau à l'autre il y a ajout de pièces de plus en plus "compliquées" avec au total 101 pièces...

Il y a aussi simplification du code VBA pour les tests de déplacement par ajout de boucle.

Toujours pas trouvé la solution pour les interdiction de rotation alors que visuellement rien ne l'empêche. Mais je cherche dans mes moments "calmes".

Je vais peut-être intégrer une feuille pour vous simplifier la création de vos pièces, comme cela vous aurez la main sur l'ensemble du jeu...

@ bientôt

LouReeD

Bonjour,

j'ai oublié de vous dire que la feuille de création de pièces est intégrée à l'application et ce depuis quelques temps !

Aller, bon jeu @ vous !

@ bientôt

LouReeD

Rechercher des sujets similaires à "mega bloks"