ArkaLouReeD - Le légendaire casse briques

Bonsoir,

suite à différentes conversations, il se trouve que les GIF animés ne fonctionnent pas sur toutes les versions d'Excel.

C'est pourquoi j'ai travaillé sur le Crop (merci waard !) des objets Pictures qui permet de gérer l'affichage d'une partie d'une image dans un objet Picture.
Le fichier joint montre les 6 Monstres en mouvement, les capsules (7) en rotation lors de leur chute, une brique qui fait des aller/retours (version 2 d'Arkanoïd) , une porte qui s'ouvre avec le vortex de changement de niveau, un vortex seul et une porte supérieure qui libérera plus tard les différents monstres.

Actuellement tout semble fluide, enfin sur ma machine avec Excel 365. Qu'en est-il de votre côté ?

Il y a en cours de travail, les briques grises et or qui normalement ont un effet de surbrillance quand la balle tape dessus. On voit bien l'image avec les différente séquence de l'animation. J'ai mis également une image d'animation de monstre : celle du cône.

Edit : j'ai ajouté une animation de la raquette avec la variation de ses différentes formes et du clignotement de ses lumières ! Maintenant il me faut trouver "l'astuce" afin de gérer toutes ces animations dans "une seule boucle" de jeu !

Edit 2 : pas de téléchargement ! J'en profite pour modifier le fichier : la raquette bouge, change de forme, apparait et explose. Les 6 monstres son animés et se déplacent, les 7 capsules descendent à des vitesse différentes et le Sprite est animé, une brique joue les "tapis roulant", je n'ai pas remis les ouvertures de portes et vortex mais le principe sera le même ! Nous voilà donc avec des animations sans gif ce qui devrait tourner sur l'ensemble des versions d'Excel. En plus de tout ceci j'ai ajouté des images de brique : 15 colonnes sur 15 lignes afin d'alourdir l'affichage...

Un petit compteur sur le Timer afin de voir la différence entre la théorie des 24 images secondes et le calcul "réel" : avec une boucle de 300 itérations et une tempo de jouabilité de 0.0416 secondes on devrait être à 12,48 secondes, qu'en est il chez vous ?

Le fichier modifié : Supprimé par LouReeD (merci à celui qui l'a téléchargé ! )

et les différentes images de raquette à mettre dans le même dossier : Supprimées par LouReeD

Voyez également l'animation de la raquette avec ses feux de position qui clignotent !

@ bientôt

LouReeD

Bonsoir,

merci à celui qui a téléchargé le fichier précèdent !

Je vous propose un nouveau fichier. Que présente il ?
l'animation de trois monstres dont un qui va exploser.
l'animation d'une capsule.
l'animation des portes de changement de niveau.
l'animation des portes du haut d'où arriveront les monstres.
l'animation d'une brique en translation.
l'animation de la raquette avec les différentes transformation : arrivée, standard, élargie, laser, explosion. Cette dernière est dirigeable "à la souris" en déplaçant le pointeur sur le bas du tableau. Le fichier est à l'ouverture en plein écran.

Il me reste à gérer l'animation des "laser" et celui de la (des) balle(s), ainsi que la destruction des briques. Le réglage de la taille des différents objets.

Comme vous pouvez le voir j'ai "simplifié" les images au niveau de la raquette : une pour les différentes "petites" et une pour la "grande", deux shapes qui seront visibles ou invisible en fonction de la raquette en jeu.

Le fichier : supprimé par LouReeD

Les images : supprimées par LouReeD

Merci de me signaler si les animations "rames" chez vous, enfin je parle de celui qui peut le télécharger...

@ bientôt

LouReeD

Bonsoir à tous

Ci dessous une version "autonome" qui embarque un minimum d'images afin de ne pas avoir à en télécharger. Celle-ci devrait être compatible avec des versions Excel inférieure vu qu'il n'y a plus de GIF animés, tout est géré par du rognage d'image dans des shapes et des SheetSprite.

Cette version est améliorée avec la mise en place d'API Windows pour la gestion du déplacement de la raquette et le clic gauche pour tirer avec les laser.
Seul la collision laser/brique est géré pour le moment, mais il y a le rebond de la balle sur les murs (ainsi que celui du bas pour ne pas perdre !) avec la raquette, les trois monstres qui finissent par exploser, une capsule bonus (sans réaction), la porte de changement de niveau, les portes pour l'entrée des monstres (pas de lien entre elles et les monstres pour le moment) la multiplication de la balle pour simuler un bonus "division" et bien sûr les différentes animation de la raquette.

Reste la collision balle avec monstres et briques, collision entre raquette avec capsule bonus et monstres et l'ensemble des "rebonds" seront gérés.

Le fichier :

Supprimé par LouReeD

Si celui (ceux ?) qui télécharge(ent) pouvait(aient) me retourner l'information de fluidité.

@ bientôt

LouReeD

Bonsoir,

je m'excuse auprès de celui qui a téléchargé "le jeu", en effet j'ai zappé la création des laser qui demande un accès disque pour récupérer l'image !
du coup plantage mais avec un curseur souris invisible !

Vraiment désolé !

je vais travailler pour résoudre ce point et mettre une gestion d'erreur qui permettra de remettre visible le curseur de souris.

@ bientôt

LouReeD

Hello!

Yes, c'est moi le téléchargeur anonyme.

La version d'avant, il fallait télécharger les images, c'était pas top.

La dernière j'ai effectivement été emmerdé avec le curseur invisible 😉.

Mais c'était super fluide. Sur office 365 et avec un bon ordi.

Bonjour Twenty-one !

Je me doutais que c'était vous !

Il me faut faire une archive mais pas sur que ce soit accepté.

Entre temps j'ai fait laser contre brique, laser contre monstre, balle contre monstre(mais là j'ai des saut d'animation...) il me reste le plus dur : balle contre brique.

Après la gestion des points, des niveaux à construire etc ne devraient pas poser de problème. Je commence à en voir le bout !

Mais je trouve que j'ai bien fait "d'attendre" ce qui m'a permis d'avoir de jolies animations pour les monstres & cies plutôt que les gif animés !

Au début j'ai eu peur qu'il y ait trop de chose mais en fait ça va, j'ai fait le test avec 81 balles et ca "passe" encore !

Pour la collision avec les briques je vais peut être simplifier par rapport à l'ancien fichier que vous avez pu tester, je vais voir.

Ensuite j'ai voulu aller plus loin que l'original, mais je vais m'y tenir : par exemple les laser vont par deux, mais sur l'original si l'un touche alors l'autre disparaît aussi, sur l'original il n'y a qu'un bonus à la fois, il n'y a qu'une porte de niveau il n'y a qu'une fois le multiplier par trois pour les balles et pas de bonus pendant ce temps...

Ou bien je fait un menu "original" et un menu "customisé"

Merci pour votre retour, un c'est mieux que zéro !

@ bientôt

LouReeD

Bonjour

Sinon en l'état il fonctionne bien mais il ne faut pas cliquer gauche avec la souris afin de ne pas lancer de laser... Et ça permet de voir tout de même le résultat "final".

@ bientôt

LouReeD

Bonjour

Mon idée de simplification pour la collision de la balle avec les briques : en fonction de la direction du la balle, je divise la brique en deux par la diagonale "équivalente" de la trajectoire :

Si la balle va vers le haut et la droite alors je coupe la brique avec sa diagonale qui va du point inferieur gauche au point superieur droit, ensuite je teste si le centre de la balle fait parti de l'un ou l'autre des triangles, si c'est celui du "dessous" rebond en Y on a toucher sur la face inferieure, si c'est l'autre rebond en X, s'il est sur les deux alors c'est la ligne de coupe, rebond en Y et en X.

Faut que j'y retourne !

@ bientôt

LouReeD

Bonsoir,

Avoir une idée c'est bien, la mettre en pratique c'est mieux !
Après quelques recherches et modifications de code j'ai trouvé !

Un petit graphique vaut mieux qu'un long discours avec en bleu la position actuelle de la balle, en vert sa futur position celle ci déclenche le test de collision du fait que son centre se trouve sur une brique :

sans titre

pour l'exemple je prend une trajectoire qui va vers le haut à droite, les briques ne peuvent donc être touchées que par le dessous ou bien le côté gauche.
Si le centre de la balle se trouve sur une brique, je teste si ce point se trouve dans le triangle repéré par les points oranges, points dont je connais les coordonnées (avec B le shape de la brique en question) :
p1(B.Left, B.Top + B.Height)
p2(B.Left + B.Width, B.Top)
p3(B.Left + B.Width, B.Top + B.Height)

Donc si le centre de la balle se trouve dans ce triangle on tape "plus" sur le dessous de la brique alors on rebondi en "Y" du haut on ira vers le bas.
Si on est en dehors de ce triangle c'est qu'on tape "plus" sur la gauche de la brique alors on rebondi en X de la droite on ira vers la gauche.
Si le centre se trouve sur la diagonale, décision est prise de faire un rebond en X et en Y, à voir avec les tests si c'est cohérant sinon vu la configuration du jeu en "portrait" une préférence pour le rebond en Y sera choisi.

J'ai trouvé sur http://fordom.free.fr/ une fonction "Un point fait il parti de la surface d'un triangle".

@ bientôt

LouReeD

Bonjour

Les essais avec cette méthode sont convainquant (il est vrai qu'il y a quelques bizarreries mais le bénéfice au niveau du code est tellement grand...) ! Il se peut que je l'étende à d'autres tests de collision, à voir. Par rapport à mon ancienne étude cela simplifie les lignes de code !

Il me reste donc :

- La collision raquette-montre, raquette-capsule, le lift raquette-balle

- La collision montres-balle (l'inverse est déjà fait), monstres-raquette, déplacement des monstres au travers des briques et leur apparition au niveau des portes avec "liaison" entre eux

- la perte de la balle

- l'incrementation du score

Et quelques truc en plus comme l'univers sonore...

@ bientôt

LouReeD

Bonsoir,

pour m'aider à gérer un peu tout le bazar j'ai fait ceci :

'    Mise en place des différents éléments pour le premier niveau :
'        Raquette : calage sur la première image de l'animation de l'arrivée en jeu transparent
'        Capsule : calage sur la première image de l'animation de la capsule tirée aléatoirement mais invisible
'        Monstres : calage sur une des 25 images de l'animation aléatoirement afin que leur rotation
'           ne soit pas synchronisée et positionnement au niveau de leur porte respective mais invisible
'        Balle : on la positionne sur sa zone de début de partie collée à la raquette mais invisible
'
'    Appuis sur START
'
'    Nombre de vie = 3
'    niveau = 1
'    NbTour = 0
'
'    Début boucle principale de jeu
'
'        Mise en place des briques en fonction du niveau à jouer
'        Mise en mémoire du nombre de brique à détruire
'        Animation de l'apparition de la raquette
'        Affichage de la balle
'
'        Début de la boucle indéfinie du jeu - on en sort que lorsque l'on perd ou que l'on a fini le niveau
'
'            Jouabilité = Timer
'            Récupération position de la souris sur le Label ActiveX
'            Correction de cette position afin qu'elle soit compatible pour une position de la raquette
'            Calcul du slide de la raquette
'
'            Animation des sprites
'
'            Si NbTour Mod 4 = 0
'                Animation la raquette
'                NbTour = 0
'            Animation des monstres si visibles
'            Animation de la capsule si visible
'            Animation des lasers si visibles
'            Animation des briques tapis roulant si visible et déplaçable
'
'            Gestion des différents déplacements des différents Sprite en jeu
'
'            Déplacement de la raquette aux nouvelles coordonnées
'                impact avec un monstre
'                    incrément du compteur de point
'                    modification paramètre de l'animation Sprite pour l'explosion
'                impact avec la capsule bonus
'                    incrément du compteur de point
'                    en fonction de la capsule :
'                        modification des paramètres d'animation de la raquette
'                        ajout d 'une vie spare si compteur inférieur à 5
'                        ouverture des porte de changement de niveau
'                impact avec la balle
'                    si la raquette est collante, blocage de la balle
'                    calcul de la nouvelle trajectoire en fonction du slide
'                       de la raquette et de la position de l'impact
'
'            Déplacement de la balle
'                impact avec une brique indestructible
'                    modification des paramètres de la trajectoire de la balle
'                impact avec une brique :
'                    création d 'un bonus ou pas
'                    incrément du compteur de point
'                    suppression de la brique
'                    incrément du nombre de brique détruite
'                    modification des paramètres de la trajectoire de la balle
'                impact avec un monstre :
'                    modification paramètre de l'animation Sprite pour l'explosion
'                    incrément du compteur de point
'                    modification des paramètres de la trajectoire de la balle aléatoirement
'                impact avec une des trois parois
'                    modification des paramètres de la trajectoire de la balle
'                impact avec la raquette :
'                    blocage de la balle si raquette collante
'                    modification des paramètres de la trajectoire de la balle
'                       en fonction du slide de la raquette et de la position de l'impact
'                impact avec la zone du bas
'                    effacement de la balle
'                    si plus de balle en jeu :
'                        nombre de vie = nombre de vie -1
'                        effacement des monstres
'                        effacement du bonus
'                        effacement des laser
'                         animation explosion de raquette
'                        sortie de la boucle de jeu
'
'            Déplacement des monstres
'                impact avec la balle
'                    modification paramètre de l'animation Sprite pour l'explosion
'                    incrément du compteur de point
'                    modification des paramètres de la trajectoire de la balle aléatoirement
'                impact avec la raquette
'                    modification paramètre de l'animation Sprite pour l'explosion
'                    incrément du compteur de point
'                impact avec la zone du bas
'                    effacement du monstre
'
'            Déplacement de la capsule bonus
'                impact avec la raquette
'                    incrément du compteur de point
'                    en fonction de la capsule :
'                        modification des paramètres d'animation de la raquette
'                        ajout d 'une vie spare si compteur inférieur à 5
'                        ouverture des portes de changement de niveau
'                        création de nouvelles balles au départ des balles en jeu avec
'                           calcul de nouveaux paramètres de trajectoire
'                impact avec la zone du bas
'                    effacement de la capsule
'
'            Déplacement des laser
'                impact avec une brique indestructible
'                    modification des paramètres d'animation du laser
'                impact avec une brique destructible
'                    incrément du compteur de point
'                    suppression de la brique
'                    incrément du nombre de brique détruite
'                    si nombre de brique détruite = nombre de brique à détruire :
'                        effacement de la raquette
'                        effacement des monstres
'                        effacement du bonus
'                        effacement des laser
'                        sortie de la boucle de jeu pour niveau suivant
'                    création aléatoire d'une capsule bonus
'                    modification des paramètres d'animation du laser
'                impact avec un monstre
'                    incrément du compteur de point
'                    modification paramètre de l'animation Sprite pour l'explosion
'                    modification des paramètres d'animation du laser
'                impact avec la paroi du haut
'                    modification des paramètres d'animation du laser
'
'        Fin de la boucle de jeu
'
'    Raisons de la sortie de la boucle de jeu :
'        Nombre de brique détruites = nombre de brique à détruire :
'            niveau = niveau + 1
'            si niveau > aux nombre total de tableaux alors le jeu est fini et gagné
'                on sort de la boucle de jeu principale
'            la boucle de jeu principale est "relancée"
'        Nombre de vie = 0
'            le jeu est fini et affichage Game Over
'            on sort de la boucle principale de jeu
'
'    Fin de la boucle principale de jeu
'
'    Si nombre de point est > au minimum du nombre de point des meilleurs scores
'        Demande du nom du joueur
'        Affichage du tableau des meilleurs scores
'
'    Retour sur le menu avec bouton START

Reste plus qu'à mettre les appels des différentes procédures au bon endroit !

@ bientôt

LouReeD

Bonsoir,

la simplification du code avec recherche intersection centre balle avec brique coupée en deux par la diagonale (diagonale dépendante de la direction de la balle), fonctionne plutôt bien comme je l'ai dit plus haut, mais il y a des "bugs" parfois. Après quelques tests je me rend compte qu'il y a parfois la destruction de deux briques l'une sur l'autre, qu'il y a des rebonds qui "partent" du mauvais coté... Bref ça ne me plait pas ! l'idée est bonne et je la conserve mais je vais la coupler avec un déplacement de la balle au bord vertical ou horizontal de la brique détruite afin de remettre cette dernière sur une zone de jeu "vierge" de briques.

En effet, mon code initial ne le fait pas, est si la balle est un peu avancée dans la brique, en effaçant la brique sans toucher à la position de la balle alors celle-ci peut se retrouver dans une cavité où elle ira effacer des briques qu'elle n'aurait pas du avoir accès !

Mon Ca et Co vont être de retour avec 8 possibilités en fonction de la direction et du résultat d'intersection avec le triangle :
- si vers le haut et la droite et que le centre de la balle est en dehors du triangle (voir schéma plus haut) alors rebond sur le côté gauche de la brique, on aura alors le Co (décalage de la balle en "X" pour la mettre en bordure de brique) = centre de la balle - Left de la brique + 1/2 largeur de la balle.
Pour le Ca on connait maintenant la formule Ca= X * (Co/Y) où X = valeur translation de la balle en X et Y valeur translation de la balle en Y. Du coup on a :
Left.Balle = Left de la balle = Left de la brique - la largeur de la balle
Top.Balle = Top.BalleThéorique + Ca (en effet avec cette direction avant d'impacter la brique la balle était plus basse hors l'origine du Top est 0 en haut de l'écran et quand on va vers le bas on incrémente)

Ceci fait sortir la balle de la zone de brique sur une zone vierge d'où cette dernière arrive, et on inverse la direction X.

Malgré cela il y a encore des bug, mais j'ai peut être trouvé, lors des essais je me trouve "étrangement" avec des valeurs de position en X du type 255,75 et en Y des valeurs du type : 255,24586. je crois que ce soir je vais faire des tests en dimensionnant mes variable de calcul en Integer ou bien autre chose afin d'arrondir ces calculs et valeurs.

@ bientôt

LouReeD

Rétropédalage !

La solution sous mes yeux !
Bon grâce à qui vous savez... Mais si ! On en parle partout ! ChatGPT !
Je lui ai demandé une fonction pour savoir si un point x,y se trouve à l'intérieur d'un triangle A,B et C en VBA Excel...
Le résultat ? Le voici :

Function IsPointInsideTriangle(x As Double, y As Double, Ax As Double, Ay As Double, Bx As Double, By As Double, Cx As Double, Cy As Double) As Boolean

    Dim b1 As Boolean, b2 As Boolean, b3 As Boolean

    b1 = (x - Bx) * (Ay - By) - (Ax - Bx) * (y - By) > 0
    b2 = (x - Cx) * (By - Cy) - (Bx - Cx) * (y - Cy) > 0
    b3 = (x - Ax) * (Cy - Ay) - (Cx - Ax) * (y - Ay) > 0

    IsPointInsideTriangle = ((b1 = b2) And (b2 = b3))

End Function

Le soucis du point dans le triangle, c'est fait.

Le rétropédalage viens surtout de ceci : je parlais de faire un retour sur mes Co et Ca et la trigonométrie pour positionner la balle sur sa trajectoire pour la sortir de la zone de brique pour la mettre sur une zone vierge... Mais je me suis essuyé les yeux et j'ai vu la solution ! Les itérations !

En effet, je calcul un point "théorique" qui correspond au déplacement de la balle en divisant son trajet en petits morceaux afin de connaitre la position de la balle théorique qui percute la brique : PointVirtuelX = BalleX + DirectionX + TranslationX / J
ici le J correspond aux itérations avec par exemple J=10 la balle se déplace d'un dixième du trajet à chaque itération.
Ensuite je teste si cette nouvelle position impacte une brique, si oui on efface, avec la technique du triangle je défini si c'est un rebond sur les côtés de la brique ou sur le dessus ou dessous. Et maintenant au lieu de faire des calculs trigonométrique pour déplacer la balle, j'affiche la balle à la position de l'itération en cours moins 1 ! Tout simplement ! Avant d'être en panne il fonctionnait ! Avant de percuter la brique, la balle ne la percuter pas ! Et voilà une simplification de plus dans le code !

Aller j'y retourne !

@ bientôt

LouReeD

Bonjour,

je teste, je teste et je teste ! Cette nouvelle façon de faire donne de bons résultats !

Mais parfois cela "bug" :

image

Avant déplacement, la balle se trouve en 1, suite aux calculs d'itérations on détecte un impact sur la brique en position 2 avec la direction haut vers la gauche le triangle "programmé" dans mon code est celui en vert, le calcul du centre de la balle donne qu'il est à l'extérieur de ce triangle soit un rebond en X (horizontal) on affiche la balle à l'emplacement de calcul d'itération juste avant l'impact en 3, et là on voit le problème : la balle va vers le haut à droite alors qu'elle devrait aller vers le bas à gauche. C'est juste un exemple car certain "bug" sont plus "visuel" comme par exemple la balle qui "gravie" deux colonnes de briques juxtaposées car le premier impact détecte un rebond en X et du coup cela s'enchaine avec les autres briques ! La super balle !

Voici donc ma nouvelle idée :

image

Au lieu de couper la brique en deux par la diagonale il me faut couper la brique en deux par la droite (en rouge) parallèle à la trajectoire de la balle (en bleu) qui passe par le coin inférieur droit de la brique pour une trajectoire allant du bas vers le haut et de la droite vers la gauche. la trajectoire en bleu rebondie en "Y" (violet), la trajectoire en vert rebondi en "X" (jaune), si le centre de la balle est sur la droite rouge alors on pourrait faire un rebond en "X" et "Y" elle a tapé dans l'angle de la brique.

Je n'ai pas représenté les deux figure où la brique serait entièrement grise (angle = 0° donc déplacement du bas vers le haut) et entièrement blanche (angle = 90° donc déplacement en horizontal), de toutes façons je limite l'angle de la trajectoire entre 10° et 80° !

Le premier point de la droite je le connais, le deuxième point celui qui est variable doit être calculable, ensuite je me retrouve avec un polygone (gris) de 3 ou quatre côté dont je connaitrais les coordonnées, me reste plus qu'à savoir si le centre de la balle est dedans ou à côté ou sur la frontière.

J'y retourne !

@ bientôt

LouReeD

Bonsoir,

cela avance petit à petit...

J'ai codé les réactions de la raquette en fonction des capsules bonus interceptées :
Transformation "laser" avec la capsule rouge, puis mise en place de la possibilité de tir avec la gestions de ces munitions.
La raquette qui devient magnétique sur les balles (capsule verte), avec déplacement de ces balles sur la raquette en fonction de cette dernière si elles sont collées dessus puis décollage si clic bouton gauche.
Elargissement avec la capsule bleue.
L'ouverture de la porte de niveau.
Ralentissement des balles.
La vie supplémentaire avec une limite de 5 "Spare".
Le multi balles avec interdiction de lâcher des capsules pendant ce temps.

Il me reste à interdire les capsules bleues si la raquette est allongée, les rouges si laser etc...

Il me reste à gérer la brique grise sur laquelle il faut taper de 1 à 3 fois en fonction des niveaux pour les détruire.
La mise en "musique" de tout ceci.

La gestion de prise de nom pour le meilleur score

Evidemment, le dernier niveau où il faut se battre contre le Doh !

Sortie prévue 2024 ?

un Screenshot :

image

@ bientôt

LouReeD

Bonjour,

la brique grise qui se casse en deux coups du niveau 1 au 10, 3 coup du 11 au 20 et 4 coups du 21 au 32 : ça c'est fait, mais ce petit travail m'amène à une modification de la gestion des briques : à l'heure actuelle ce sont des shapes ayant pour nom BRKLig-Col. Je crois que je vais le transformer en "type d'objet" comme cela je pourrait y mettre non seulement leurs coordonnées mais aussi d'autre information comme leur résistance. En plus cela me permettra de ne gérer que ces shapes car une boucle sur le tableau les concernant suffira plutôt que de tourner sur la totalité des shapes !

Je vais en faire de même pour les lasers. Ainsi chaque objet du jeu sera gérer par un tableau correspondant à la famille de shape !

J'y retourne !

@ bientôt

LouReeD

Bonjour,

Voilà tout est (presque) fonctionnel : changement du fond à chaque niveau, changement du type de monstre à chaque niveau, changement du numéro de round à chaque niveau, modification de résistance des briques grises en fonction du niveau, utilisation des raquettes spare jusqu'à la fin de la partie, la gestion des différentes capsules bonus, la gestion des différentes formes de la raquette, le déplacement des monstres avec gestion des impacts avec la balle, les lasers, la raquette (seules les briques ne sont pas gérées, du coup les monstres "volent" par dessus), le déplacement de la capsule avec gestion impact avec la raquette, gestion des lasers avec cadence de tir, impact monstres et brique ou mur du haut, gestion de la balle avec les différents rebonds sur les briques (il reste cependant quelques incohérences) les murs, avec les monstres et la raquette sa réaction en cas de bonus "colle" , la gestion de la raquette avec les transformations, son déplacement et la téléportation au niveau suivant, le score du joueur en cours, le bonus point pour la téléportation et les bonus "colle" et "laser", la gestion de la souris pour les déplacements ainsi que le clic gauche pour les lasers.

Ce qu'il me reste : gestion de l'angle de rebond de la balle avec la raquette en fonction du lieu d'impact et du "slide", le déplacement des monstres en contournant les briques, la gestion du joueur qui entre dans le top 5, la mise en "musique" du jeu et éventuellement la gestion du type de commande pour la raquette : flèche gauche/droite pour le déplacement et flèche du haut pour tirer la balle (en début de tableau ou avec la colle) et le laser.

Avec un peu de chance et de travail (surtout !) il pourrait être en téléchargement avant 2024!

@ bientôt

LouReeD

Bonsoir,

le dernier niveau avec le DOH, je crois que dans un premier temps je vais "l'oublier"... Une fois tous les niveaux effectués alors on repart sur le premier !

J'ai corrigé quelques bug :
- celui des portes du haut qui s'ouvrent et se ferme alors qu'il y a déjà trois monstres en jeu (ceci m'a fait apparaitre un nouveau bug : un monstres en train de sortir de la porte explose tout seul sans impacte de balle ou de laser ! la valeur d'une variable mal initialisée je suppose !)
- celui du double impact de laser sur un monstre, en effet si le laser gauche touchait un monstre celui-ci commençait son animation d'explosion et le deuxième laser, celui de droite pouvait le toucher et relancer son animation d'explosion ! Avec ceci les points étaient doublés !
- celui du cumul de point lors de l'explosion d'un monstre avec la raquette, en effet il arrivé le sprite monstre se retrouvait coincé au niveau de la raquette et donc une boucle "infinie" de TRUE était vérifié si le monstre se trouvait au niveau de la raquette !

Suppression des ombres sur les laser, car après avoir regardé une vidéo d'Arkanoïd© il me semble bien qu'il n'y en a pas.

Aller j'y retourne ! Mais devant mon impatience il se peut que le "final" soit un peu bâclé !

@ bientôt

LouReeD

Bonsoir,

voilà, j'approche de la fin !
il me reste plus que la gestion du "High Score" et la mise en musique.

Pour cela j'ai fait l'impasse sur la gestion des déplacements "entre les briques" des monstres ! Et il reste quelques incohérences au niveau du rebond des balles, mais sur l'ensemble cela fonctionne bien, il faut juste que j'ajoute quelques tests pour les corriger...

J'espère bien arriver à finaliser avant l'été !

Je viens de faire un "joli" score au niveau 30 !

high score

@ bientôt

LouReeD

Erreur !

Je n'ai pas programmé le niveau final avec le DOH !

Mais bon, je suis tout de même proche de la fin !

@ bientôt

LouReeD

Rechercher des sujets similaires à "arkaloureed legendaire casse briques"