Break out by laurent mrejen15th May 2006 4:28
|
---|
Summary It is a small way to make a break out. I hope it would be helpful for anyone who wants to make that kind of game Description A clone of Arkanoid. You move the panel with your mouse. Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com `Casse pas des briques `Jeu de casse briques `Mai 2006 `######################################################### `# Initialisation du jeu # `######################################################### `On cache le curseur de la souris hide mouse `On initialise les variables gosub Init_VarGlobales `On charge les objets gosub Charge_Balle gosub Charge_Decor gosub Charge_Raquette gosub Charge_Briques gosub Charge_Musique `######################################################### `# fin de l'initialisation du jeu # `######################################################### `######################################################### `# Méthodes de gestion du menu # `######################################################### Show_Menu: `On affiche le menu gosub Affiche_Menu `On joue la musique du menu loop music Musique_Menu `On vérifie que la touche appuyé est Espace ou escape repeat `Si on appuie sur Echape alors on termine le programme if escapekey() then end until spacekey() return `######################################################### `# Fin de la gestion du menu # `######################################################### `######################################################### `# boucle principale # `######################################################### Jeu: `Changement de la musique stop music Musique_Menu loop music Musique_Jeu `Initialisation de l'écran du jeu gosub Init_PanneauJeu gosub Init_Decor gosub Init_Briques gosub Init_Raquette gosub Init_Balle `Initialisation des variables de jeu Balle_HDirection=1 Balle_Vdirection=1 Score=0 NbBrique=40 GameOver=0 ShowAllSprite(200) do `Gestion de la raquette à la souris XMoveObjectWithMouse(Raquette_Sprite, 15, Ecran_PanneauJeuX-sprite width(Raquette_Sprite)-15, Raquette_Image) `Gestion de la balle gosub DetecteCollisionBalleAvecRaquette gosub DetecteCollisionBalleAvecEcran gosub DetecteCollisionBalleAvecBrique gosub Anime_Balle `Gestion de la fin de jeu si il ne reste plus de briques à l'écran if NbBrique=0 gosub Affiche_Victoire goto Show_Menu Endif if GameOver=1 then goto Show_Menu sync loop end `######################################################### `# Fin de la boucle principale # `######################################################### `######################################################### `# Méthodes Gosub # `######################################################### `Méthode d'initialisation des variables globales Init_VarGlobales: `Constantes des couleurs GRIS = rgb(168,168,168) BLANC = rgb(255,255,255) ORANGE = rgb(250,100,20) NOIR = rgb(0,0,0) `Constante indiquant l'écran ECRAN=0 `Constante pour la taille de la zone de jeu Ecran_PanneauJeuX=screen width()-130 `Constante de bitmap du décor Bitmap_Decor=1 Decor_Image=1 `Constante de bitmap de la raquette Bitmap_Raquette=2 Raquette_Image=2 Raquette_Sprite=10 Raquette_Son=2 `Constante de bitmap pour les briques Bitmap_Briques=3 `Les images vont de 3 à 6 Brique_Image=3 Brique_Sprite=100 Brique_Son=3 `Constante d'affichage de la balle Bitmap_Balle=7 Balle_Image=7 Balle_Sprite=200 Balle_Speed=3 `Constantes pour les musiques Musique_Menu=1 Musique_Jeu=2 `Variable de jeu Score=0 NbBrique=40 GameOver=0 return `Méthode d'initialisation du panneau d'affichage des infos du jeu Init_PanneauJeu: set current bitmap ECRAN cls ink ORANGE,BLANC box Ecran_PanneauJeuX,1,Ecran_PanneauJeuX + 130-1,screen height()-1 `On va écrire les scores ink NOIR, BLANC text Ecran_PanneauJeuX +25, 75, "SCORE" text Ecran_PanneauJeuX +25, 100, str$(Score) text Ecran_PanneauJeuX +25, 125, "LEVEL" text Ecran_PanneauJeuX +25, 150, "1" `On affiche les vies text Ecran_PanneauJeuX +25, 175, "VIES" for i=1 to 3 sprite Raquette_Sprite+i, Ecran_PanneauJeuX +5+i*15, 200, Raquette_Image scale sprite Raquette_Sprite+i, 5 next i return `Initialisation des sprites de briques Init_Briques: `On initialise la position des monstres for i=0 to 3 for j=0 to 9 set sprite Brique_Sprite+i*10+j, 1, 1 sprite Brique_Sprite+i*10+j, 30 +45*j, 35+25*i, Brique_Image+i scale sprite Brique_Sprite+i*10+j, 60 next j next i return `Initialisation du décor Init_Decor: `On copie à l'écran l'image copy bitmap Bitmap_Decor, Ecran return `Initialisation de la raquette Init_Raquette: `On affiche la raquette set sprite Raquette_Sprite, 1, 1 sprite Raquette_Sprite, Ecran_PanneauJeuX/2, screen height()-50, Raquette_Image return `Initialisation de la balle Init_Balle: `On affiche la balle set sprite Balle_Sprite, 1, 1 sprite Balle_Sprite, Ecran_PanneauJeuX/2, screen height()-300, Balle_Image scale sprite Balle_Sprite, 40 return `Méthode de construction de l'image du menu Affiche_Menu: set current bitmap ECRAN `On vide l'écran cls `On définit la couleur et la police ink BLANC, NOIR set text font "Comic Sans MS" set text size 60 `On écrit le nom du jeu center text screen width()/2, screen height()/2-40, "Casse pas des BRIQUES" set text size 20 center text screen width()/2, screen height()-200, "Jouer.........Espace" center text screen width()/2, screen height()-180, "Quitter.......Echappe" center text screen width()/2, screen height()-70, "Programmé par Laurent Mrejen Mai 2006" return `Méthode de construction de l'image Game Over Affiche_GameOver: set current bitmap ECRAN `On définit la couleur et la police ink BLANC, NOIR set text font "Comic Sans MS" set text size 60 `On écrit le nom du jeu center text screen width()/2, screen height()/2-40, "GAME OVER" set text size 20 `On écrit le score center text screen width()/2, screen height()/2+50, "Score " center text screen width()/2+50, screen height()/2+50, str$(Score) `On arrête le jeu HideAllSprite(200) sleep 2000 `On stoppe la musique stop music Musique_Jeu GameOver=1 return `Méthode pour afficher le message disant au joueur qu'il a gagné Affiche_Victoire: set current bitmap Ecran `On définit la couleur et la police ink BLANC, NOIR set text font "Comic Sans MS" set text size 60 `On écrit le nom du jeu center text screen width()/2, screen height()/2-40, "You Win" `On arrête le jeu HideAllSprite(200) sleep 2000 `On stoppe la musique stop music Musique_Jeu return `Méthode pour charger le décor Charge_Decor: load bitmap "ImagesDecor.jpg", Bitmap_Decor get image Decor_Image, 0,0,bitmap width(), bitmap height() return `Méthode pour charger la raquette Charge_Raquette: load bitmap "ImagesRaquette.bmp", Bitmap_Raquette `On charge l'image dans le sprite get image Raquette_Image, 0,0,bitmap width(), bitmap height() `on charge le son correspondant load sound "MusiquesRaquette.wav", Raquette_Son return `Méthode de chargement des briques Charge_Briques: for i=0 to 3 load bitmap GetNomFichier("ImagesBrique",i+1,"bmp"), Bitmap_Briques+i get image Brique_Image+i, 0, 0, bitmap width(), bitmap height() next i `On charge le son coorespondant load sound "MusiquesBrique.wav", Brique_Son return `Méthode de chargement de la balle Charge_Balle: load bitmap "ImagesBalle.bmp" get image Balle_Image, 0, 0, bitmap width(), bitmap height() return `Méthode de chargement des musiques Charge_Musique: load music "MusiquesIntro.mid", Musique_Menu Load music "MusiquesJeu.mid", Musique_Jeu return `Méthode de gestion du mouvement de la balle Anime_Balle: `On déplace la balle suivant la direction sprite Balle_Sprite, sprite X(Balle_Sprite)+Balle_HDirection*Balle_Speed, sprite Y(Balle_Sprite)+ Balle_VDirection*Balle_Speed, Balle_Image return `Méthode de gestion des collisions de la balle avec le bord de l'écran DetecteCollisionBalleAvecEcran: Borne_Sup=Ecran_PanneauJeuX-20 if sprite X(Balle_Sprite)<15 Balle_HDirection=1 sprite Balle_Sprite, 15, Sprite Y(Balle_Sprite), Balle_Image Endif if sprite X(Balle_Sprite)>Borne_Sup Balle_HDirection=-1 sprite Balle_Sprite, Borne_Sup, Sprite Y(Balle_Sprite), Balle_Image Endif if sprite Y(Balle_Sprite)<15 Balle_VDirection=1 sprite Balle_Sprite,Sprite X(Balle_Sprite), 15, Balle_Image Endif `Si la balle tombe en dessous de la raquette, on perd une vie if sprite Y(Balle_Sprite)>screen height() gosub Affiche_GameOver Endif return `Méthode de gestion des collisions de la balle avec une brique DetecteCollisionBalleAvecBrique: Brique_Detruit=Sprite hit(Balle_Sprite, 0) if Brique_Detruit>=100 AND Brique_Detruit<200 `La balle a touché une brique sprite Brique_Detruit, Ecran_PanneauJeuX+50, screen height(), Brique_Image Hide sprite Brique_Detruit play sound Brique_Son Score=Score+1 NbBrique=NbBrique-1 `On change la direction de la balle if sprite X(Balle_Sprite)<=sprite X(Brique_Detruit) Balle_XDirection=0-Balle_Xdirection Endif if sprite Y(Balle_Sprite)<=sprite Y(Brique_Detruit) then Balle_VDirection=0-Balle_Vdirection Endif return `Méthode de gestion des collisions dela balle avec la raquette DetecteCollisionBalleAvecRaquette: if sprite hit(Balle_Sprite, Raquette_Sprite) Balle_VDirection=0-Balle_VDirection play sound Raquette_Son Endif Return `######################################################### `# Fin des méthodes Gosub # `######################################################### `######################################################### `# Fonctions utiles # `######################################################### `Fonction qui renvoie le nom d'un fichier en concaténant un mot, un chiffre et une extension Function GetNomFichier(NomFichier$, Numero, Extension$) `On crée le nom du fichier NomFichierFinal$=NomFichier$ + str$(Numero) + "." + Extension$ EndFunction NomFichierFinal$ `Fonction qui permet le déplacement d'un objet contrôlé à la souris à l'horizontal Function XMoveObjectWithMouse(Objet, X_Min, X_Max, Image) `On déplace l'objet en fonction de la valeur du déplacement de la souris sprite Objet, sprite X(objet)+MouseMoveX(), Sprite Y(Objet), Image `On ajuste la position if sprite X(Objet)<X_Min then sprite Objet, X_Min, Sprite Y(Objet), Image if sprite X(Objet)>X_Max then sprite Objet, X_Max, Sprite Y(Objet), Image EndFunction `Fonction qui permet de masquer tous les sprites à l'écran Function HideAllSprite(iDernierSprite) for i=1 to iDernierSprite if sprite exist(i) then hide sprite i next i EndFunction `Fonction qui permet d'afficher tous les sprites à l'écran Function ShowAllSprite(iDernierSprite) for i=1 to iDernierSprite if sprite exist(i) then show sprite i next i EndFunction `######################################################### `# data des niveaux # `######################################################### |