Linotte Bustout : ("Spécification 0.6.3") ("Auteur : Ronan Mounès") Espèces : pouvoir est un texte attaque & sens est un nombre l'espèce brique hérite de rectangle et contient un pouvoir l'espèce palet hérite de cercle et contient une attaque, un sens Grands Rôles : ("Vous pouvez modifier la taille du jeu :") zoom est un nombre valant 1 joueur1 est un palet, plein vaut "oui", rayon vaut 5 * zoom, couleur vaut "rouge", ... taille vaut 1, y vaut 80 * zoom, angle vaut 45, position vaut 2, attaque vaut 45, sens vaut 0 raquette est un rectangle, couleur vaut "anthracite", hauteur vaut 5 * zoom, ... largeur vaut 26 * zoom, plein vaut "oui", x vaut 10 * zoom, y vaut 140 * zoom gameover est un nombre valant 0 briques est un casier de brique vide démonstration est un nombre valant 0 niveau est un nombre valant 1 vitesse est un nombre valant 7 score est un nombre valant 0 gscore est un graffiti, couleur vaut "violet", x vaut 10 * zoom, y vaut 130 * zoom, texte vaut "Linotte BustOut v1.1", taille vaut 1 * zoom, transparence vaut 40 Go ! : Rôles : §fond est un toile, couleur vaut "argile", hauteur vaut 150 * zoom, largeur vaut 200 * zoom, image vaut "http://langagelinotte.free.fr/wordpress/bustout.jpg", pointeur vaut "croix" §x est un nombre Actions : Tant que gameover est différent de -1, lis Efface la toile Projette fond & joueur1 & raquette & gscore x de joueur1 vaut 150 * zoom Mélange x de joueur1 Ajoute 30 dans x de joueur1 Parcours affichage Parcours pause avec "Jouer ?", 0 Appelle moteur palet Appelle publicité Tant que gameover est égale à 0, lis x vaut sourisx - 12 Si x est plus grand que 175 * zoom alors x vaut 175 * zoom Sinon, si x est plus petit que 0 alors x vaut 0 Si démonstration est égale à 1 alors lis x de raquette vaut x de joueur1 - 13 Attends 5 millisecondes Ferme Sinon, lis x de raquette vaut x Temporise 1 secondes Ferme Ferme Si gameover est égale à 1 alors parcours game over Sinon, parcours bravo Parcours valeurs initiales Ferme Pause : Rôles : *info est un texte *temps est un nombre §message est un graffiti, couleur vaut "nacarat", x vaut 80 * zoom, y vaut 110 * zoom, texte vaut "", taille vaut 1 * zoom, position vaut 3 §test est un nombre valant 1 Actions : texte de message vaut info Projette message Appelle clignotement avec test, message Attends temps secondes Vide les touches Temporise Si touche est égal à "d" alors démonstration vaut 1 Sinon, démonstration vaut 0 test vaut 0 Efface message Reviens Clignotement : Rôles : *test est un nombre *message est un graffiti §boucle est un nombre vide Actions : Tant que test est égal à 1, lis boucle vaut boucle + 10 transparence de message vaut abs (cos boucle) * 100 Attends 100 millisecondes Ferme Reviens Afficher : Rôles : *p est un brique *r est un nombre *v est un nombre *c est un texte Actions : Ajoute p dans briques déplace p vers r * 20 * zoom et v * 10 * zoom pouvoir de p vaut c si c est égal à "dur" alors couleur de p vaut (r*10) + " " + (v*10) + " " + (v+r)*10 sinon, couleur de p vaut 200-(r*10) + " " + (200-v*10) + " " + (v+r)*10 Reviens Moteur palet : Actions : Tant que gameover est égale à 0, lis Attends vitesse millisecondes Avance joueur1 de 1 * zoom ("Gestion des collisions avec raquette") Si joueur1 est en collision avec raquette alors lis Parcours calculer attaque Parcours tourne palet simple avec 0 y de joueur1 vaut y de raquette - hauteur de raquette Ferme Sinon, si x de joueur1 est plus grand que 200 * zoom - rayon de joueur1 alors lis Parcours tourne palet simple avec 1 x de joueur1 vaut 200 * zoom - rayon de joueur1 Ferme Sinon, si y de joueur1 est plus petit que 5 * zoom alors lis Parcours tourne palet simple avec 0 y de joueur1 vaut 5 * zoom + zoom Ferme Sinon, si x de joueur1 est plus petit que 5 * zoom alors lis Parcours tourne palet simple avec 1 x de joueur1 vaut 5 * zoom Ferme Sinon, si y de joueur1 est plus grand que 140 * zoom alors lis gameover vaut 1 Reviens Ferme ("Gestion des collisions avec les briques") Pour chaque briques, lis Si joueur1 est en collision avec joker alors lis Si pouvoir de joker est égal à "dur" alors lis ("pouvoir dur") Parcours tourne palet avec joker Transparence de joker vaut transparence de joker - 50 Si transparence de joker est plus petit que 10 alors lis Efface joker Ôte joker de briques Score vaut score + 20 Ferme Ferme Sinon, lis ("brique simple") Efface joker Ôte joker de briques Parcours tourne palet avec joker Score vaut score + 10 Ferme Ferme Ferme texte de gscore vaut score Si briques est vide alors lis gameover vaut 2 Reviens Ferme Ferme Reviens Calculer angle : Actions : Si sens de joueur1 est égale à 0 alors angle de joueur1 vaut attaque de joueur1 Sinon, si sens de joueur1 est égale à 1 alors angle de joueur1 vaut 180 - (attaque de joueur1) Sinon, si sens de joueur1 est égale à 2 alors angle de joueur1 vaut 180 + (attaque de joueur1) Sinon, angle de joueur1 vaut 360 - (attaque de joueur1) Reviens Calculer attaque : Actions : attaque de joueur1 vaut 50 - abs ( x de joueur1 - ( largeur de raquette / 2 + x de raquette )) Reviens Tourne palet simple : Rôles : ("0 horizontal, 1 vertical") *sens est un nombre Actions : Si sens est égal à 0 alors lis Si sens de joueur1 est égale à 0 alors sens de joueur1 vaut 3 Sinon, si sens de joueur1 est égale à 3 alors sens de joueur1 vaut 0 Sinon, si sens de joueur1 est égale à 2 alors sens de joueur1 vaut 1 Sinon, sens de joueur1 vaut 2 Ferme Sinon, lis Si sens de joueur1 est égale à 3 alors sens de joueur1 vaut 2 Sinon, si sens de joueur1 est égale à 2 alors sens de joueur1 vaut 3 Sinon, si sens de joueur1 est égale à 0 alors sens de joueur1 vaut 1 Sinon, sens de joueur1 vaut 0 Ferme Parcours calculer angle Reviens Tourne palet : Rôles : *b est une brique §orientation est un nombre valant 0 Actions : Recule joueur1 de 1 * zoom ("0 = choc horizontal") ("1 = choc vertical") Si y de joueur1 - rayon de joueur1 est plus grand que y de b + hauteur de b alors lis orientation vaut 1 Ferme Sinon, si arrondi (y de joueur1 + rayon de joueur1) est égal à y de b alors lis orientation vaut 1 Ferme Si orientation est égale à 1 alors lis Si sens de joueur1 est égale à 0 alors sens de joueur1 vaut 3 Sinon, si sens de joueur1 est égale à 3 alors sens de joueur1 vaut 0 Sinon, si sens de joueur1 est égale à 2 alors sens de joueur1 vaut 1 Sinon, si sens de joueur1 est égale à 1 alors sens de joueur1 vaut 2 Ferme Sinon, lis Si sens de joueur1 est égale à 0 alors sens de joueur1 vaut 1 Sinon, si sens de joueur1 est égale à 1 alors sens de joueur1 vaut 0 Sinon, si sens de joueur1 est égale à 2 alors sens de joueur1 vaut 3 Sinon, si sens de joueur1 est égale à 3 alors sens de joueur1 vaut 2 Ferme Parcours calculer angle Avance joueur1 de 1 * zoom Reviens Publicité : Rôles : §pub est un graffiti, texte vaut "Niveau " + niveau, x vaut 60 * zoom, y vaut 80 * zoom, ... transparence vaut 20, angle vaut 20, taille vaut 3 * zoom, position vaut 1 Actions : Projette pub Tant que gameover est égale à 0, lis Tourne à droite pub de 1 Attends 0.01 seconde Ferme Reviens Game over : Actions : Parcours pause avec "Perdu !" , 3 Niveau vaut 1 Vitesse vaut 7 Score vaut 0 Reviens Bravo : Actions : Parcours pause avec "Bravo !" , 5 Niveau vaut niveau + 1 Reviens Valeurs initiales : Actions : x de joueur1 vaut 30 * zoom y de joueur1 vaut 80 * zoom angle de joueur1 vaut 45 sens de joueur1 vaut 0 x de raquette vaut 10 * zoom y de raquette vaut 140 * zoom Vide briques gameover vaut 0 Reviens Affichage : Actions : Si niveau est égal à 1 alors parcours niveau1 Sinon, si niveau est égal à 2 alors parcours niveau2 Sinon, si niveau est égal à 3 alors parcours niveau3 Sinon, si niveau est égal à 4 alors parcours niveau4 Sinon, si niveau est égal à 5 alors parcours niveau5 Sinon, si niveau est égal à 6 alors parcours niveau6 Sinon, si niveau est égal à 7 alors parcours niveau7 Sinon, lis niveau vaut 1 Parcours niveau1 Si vitesse est plus grand que 0 alors vitesse vaut vitesse - 1 Ferme Reviens Niveau1 : Rôles : §r est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 10 * zoom, largeur vaut 20 * zoom, position vaut 2 §pouvoir est un casier de texte valant "" ,"" ,"", "" Actions : Projette p De 0 à 9, lis r vaut joker De 0 à 3, lis Parcours afficher avec #p, r , joker, pouvoir {joker} Ferme Ferme Reviens Niveau2 : Rôles : §r est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 10 * zoom, largeur vaut 20 * zoom, position vaut 2 §pouvoir est un casier de texte valant "" ,"" ,"" ,"" , "" , "dur" Actions : Projette p De 0 à 9, lis r vaut joker De 0 à 5, lis Parcours afficher avec #p, r , joker, pouvoir {joker} Ferme Ferme Reviens Niveau3 : Rôles : §r est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 10 * zoom, largeur vaut 20 * zoom, position vaut 2 §pouvoir est un casier de texte valant "" ,"" ,"dur" ,"" , "dur" , "dur" Actions : Projette p De 0 à 9, lis r vaut joker De 0 à 5, lis Parcours afficher avec #p, r , joker, pouvoir {joker} Ferme Ferme Reviens Niveau4 : Rôles : §c est un nombre valant 0 §l est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 10 * zoom, largeur vaut 20 * zoom, position vaut 2 §ligne1 est un casier de texte valant "dur" ,"" ,"" ,"", "" , "", "", "", "", "dur" §ligne2 est un casier de texte valant "" ,"dur" ,"" ,"", "" , "", "", "", "dur", "" §ligne3 est un casier de texte valant "" ,"" ,"dur" ,"", "" , "", "", "dur", "", "" §ligne4 est un casier de texte valant "" ,"" ,"" ,"dur", "" , "", "dur", "", "", "" §ligne5 est un casier de texte valant "" ,"" ,"" ,"", "dur" , "dur", "", "", "", "" §lignes est un casier de casier valant ligne1, ligne2, ligne3, ligne4, ligne5, ligne4, ligne3, ligne2, ligne1 Actions : Projette p Pour chaque lignes, lis c vaut 0 Pour chaque joker, lis Parcours afficher avec #p, c , l, joker c vaut c + 1 Ferme l vaut l + 1 Ferme Reviens Niveau5 : Rôles : §c est un nombre valant 0 §l est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 10 * zoom, largeur vaut 20 * zoom, position vaut 2 §ligne1 est un casier de texte valant "dur" ,"dur" ,"dur" ,"dur", "dur" , "dur", "dur", "dur", "dur", "dur" §ligne2 est un casier de texte valant "dur" ,"" ,"" ,"", "" , "", "", "", "", "dur" §lignes est un casier de casier valant ligne1, ligne2, ligne2, ligne2, ligne2, ligne2, ligne2, ligne2,ligne2, ligne1,ligne1 Actions : Projette p Pour chaque lignes, lis c vaut 0 Pour chaque joker, lis si joker est différent de "" alors lis Parcours afficher avec #p, c , l, joker ferme c vaut c + 1 Ferme l vaut l + 1 Ferme Reviens Niveau6 : Rôles : §c est un nombre valant 0 §l est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 10 * zoom, largeur vaut 10 * zoom, position vaut 2 §ligne1 est un casier de texte valant "dur" ,"vide" ,"dur" ,"vide", "dur" , "vide", "dur", "vide", "dur", "vide" §lignes est un casier de casier valant ligne1, ligne1, ligne1, ligne1, ligne1, ligne1, ligne1, ligne1 Actions : Projette p Pour chaque lignes, lis c vaut 0 Pour chaque joker, lis si joker est différent de "vide" alors lis Parcours afficher avec #p, c , l, joker ferme c vaut c + 1 Ferme l vaut l + 1 Ferme y de joueur1 vaut 90 * zoom Reviens Niveau7 : Rôles : §c est un nombre valant 0 §l est un nombre valant 0 §p est une brique, plein vaut "oui", x vaut -200, y vaut -200, hauteur vaut 5 * zoom, largeur vaut 5 * zoom, position vaut 2 §ligne1 est un casier de texte valant "vide" ,"vide" ,"vide" ,"vide", "vide" , "vide", "vide", "vide", "vide", "vide" §ligne2 est un casier de texte valant "vide" ,"vide" ,"dur" ,"vide", "vide" , "vide", "vide", "vide", "dur", "vide" §lignes est un casier de casier valant ligne1, ligne1, ligne1, ligne2, ligne1, ligne1, ligne1, ligne1 Actions : Projette p Pour chaque lignes, lis c vaut 0 Pour chaque joker, lis si joker est différent de "vide" alors lis Parcours afficher avec #p, c , l, joker ferme c vaut c + 1 Ferme l vaut l + 1 Ferme y de joueur1 vaut 90 * zoom Reviens