TGC Codebase Backup



Break out by laurent mrejen

15th 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.
However, i found a problem by using rhe commands Hide alls sprites and Show all sprites so i rewrite it by myself.

I hope you enjoy it.



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                        #
`#########################################################