Un jeu très connu adapté d'une version en visual basic. Il ne possède aucune intelligence artificielle puisque c'est un jeu deux joueurs. Il y a quelques petits défauts et il faudrait le reprogrammer en objet car il tourne parfois lentement sur certain PC !
Source / Exemple :
#include <vcl.h>
#include "Bomberman.h"
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int Bombe1=0;
int Bombe2=0;
int Bombe1Left;
int Bombe1Top;
int Bombe2Left;
int Bombe2Top;
int Music; //Déclaration variable des différentes musics
int J1Left,J1Top; //Déclaration coordonnées Joueur1
int B1Left,B1Top; //Déclaration coordonnées Bombe du Joueur 1
int J2Left,J2Top; //Déclaration coordonnées joueur2
int B2Left,B2Top; //Déclaration coordonnées Bombe du Joueur 2
int ScoreJ1=0,ScoreJ2=0; //Déclaration score joueur 1 et 2
bool Priorite=False; //Déclaration de la variable autorisant ou non le déplacement des joueurs
bool PrioriteB1J1=True;
bool PrioriteB1J2=True;
int x=0; //Déclaration variable mouvement Joueur1
int y=0; //Déclaration variable mouvement Joueur1
int z=0; //Déclaration variable mouvement Joueur1
int w=0; //Déclaration variable mouvement Joueur1
int a=0; //Déclaration variable mouvement Joueur2
int b=0; //Déclaration variable mouvement Joueur2
int c=0; //Déclaration variable mouvement Joueur2
int d=0; //Déclaration variable mouvement Joueur2
int NbBombeJ1=1; //Déclaration variable du nombre de bombe du joueur 1
int NbBombeJ2=1; //Déclaration variable du nombre de bombe du joueur 2
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
BomberManWorld->Caption="BomberManWorld";
Form1->Position=poDesktopCenter; //Centre la fenètre sur le bureau
Form1->Align=alNone; //Désactive l'alignement automatique
Form1->AutoScroll=False; //Désactive les barres de défilement
Form1->AutoSize=False; //Désactive la taille de fenètre automatique
ScoreJoueur1->Caption=ScoreJ1;
ScoreJoueur2->Caption=ScoreJ2;
BombeJoueur1->Caption=NbBombeJ1;
BombeJoueur2->Caption=NbBombeJ2;
Go->Visible=False;
Ready->Visible=False;
Joueur1->Left=16; J1Left=16; //Coordonnée Gauche du Joueur1 affecté à J1Left
Joueur1->Top=48; J1Top=48; //Coordonnée Haut du Joueur1 affecté à J1Top
Joueur2->Left=592; J2Left=592; //Coordonnée Gauche du Joueur2 affecté à J1Left
Joueur2->Top=496; J2Top=496; //Coordonnée Haut du Joueur2 affecté à J1Top
}
//---------------------------------------------------------------------------
void __fastcall TForm1::QuitterClick(TObject *Sender)
{
PostQuitMessage(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NouvellePartieClick(TObject *Sender)
{
BomberManWorld->Caption="BomberManWorld" ;
MediaPlayer1->Stop();
MediaPlayer1->Play();
Priorite=False;
Ready->Visible=True;
TimerReady->Enabled=True;
ScoreJ1=0;
ScoreJ2=0;
ScoreJoueur1->Caption=ScoreJ1;
ScoreJoueur2->Caption=ScoreJ2;
NbBombeJ1=1;
NbBombeJ2=1;
BombeJoueur1->Caption=NbBombeJ1;
BombeJoueur2->Caption=NbBombeJ2;
a=0;b=0;c=0;d=0;
w=0;x=0;y=0;z=0;
Joueur1->Picture->LoadFromFile("Joueur1Face1.bmp");
Joueur2->Picture->LoadFromFile("Joueur2Haut1.bmp");
Joueur1->Left=16; J1Left=16; //Coordonnée Gauche du Joueur1 affecté à J1Left
Joueur1->Top=48; J1Top=48; //Coordonnée Haut du Joueur1 affecté à J1Top
Joueur2->Left=592; J2Left=592; //Coordonnée Gauche du Joueur2 affecté à J1Left
Joueur2->Top=496; J2Top=496; //Coordonnée Haut du Joueur2 affecté à J1Top
//Caisse1->Visible=True;
//Caisse2->Visible=True;
//Caisse3->Visible=True;
//Caisse4->Visible=True;
//Caisse5->Visible=True;
//Caisse6->Visible=True;
NouvellePartie->Enabled=False;
NouvellePartie->Enabled=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerReadyTimer(TObject *Sender)
{
Ready->Visible=False;
TimerReady->Enabled=False;
Go->Visible=True;
TimerGo->Enabled=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerGoTimer(TObject *Sender)
{
Go->Visible=False;
TimerGo->Enabled=False;
Priorite=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Priorite==True) { w++; x++; y++; z++;
if (Key == VK_UP) {
if(w==0) {Joueur1->Picture->LoadFromFile("Joueur1Haut1.bmp");}
if(w==4) {Joueur1->Picture->LoadFromFile("Joueur1Haut2.bmp");}
if(w==8) {Joueur1->Picture->LoadFromFile("Joueur1Haut3.bmp");}
if(w==12){Joueur1->Picture->LoadFromFile("Joueur1Haut4.bmp");}
if(w==16){Joueur1->Picture->LoadFromFile("Joueur1Haut5.bmp");}
if(w==20){Joueur1->Picture->LoadFromFile("Joueur1Haut6.bmp");}
if(w>20) {w=0;}
J1Top=J1Top-4; //Déplacement Joueur1 vers le haut
if (J1Top<=48) J1Top=48; //Blocage joueur1 dans le terrain de jeu
x=0;y=0;z=0;
}
if (Key == VK_DOWN) {
if(x==0) {Joueur1->Picture->LoadFromFile("Joueur1Face1.bmp");}
if(x==4) {Joueur1->Picture->LoadFromFile("Joueur1Face2.bmp");}
if(x==8) {Joueur1->Picture->LoadFromFile("Joueur1Face3.bmp");}
if(x==12) {Joueur1->Picture->LoadFromFile("Joueur1Face4.bmp");}
if(x==16) {Joueur1->Picture->LoadFromFile("Joueur1Face5.bmp");}
if(x==20) {Joueur1->Picture->LoadFromFile("Joueur1Face6.bmp");}
if(x>20) {x=0;}
J1Top=J1Top+4; //Déplacement Joueur1 vers le bas
if (J1Top>=496) J1Top=496; //Blocage joueur1 dans le terrain de jeu
y=0;z=0;w=0;
}
if (Key == VK_LEFT) {
if(y==0) {Joueur1->Picture->LoadFromFile("Joueur1Gauche1.bmp");}
if(y==4) {Joueur1->Picture->LoadFromFile("Joueur1Gauche2.bmp");}
if(y==8) {Joueur1->Picture->LoadFromFile("Joueur1Gauche3.bmp");}
if(y==12){Joueur1->Picture->LoadFromFile("Joueur1Gauche4.bmp");}
if(y==16){Joueur1->Picture->LoadFromFile("Joueur1Gauche5.bmp");}
if(y==20){Joueur1->Picture->LoadFromFile("Joueur1Gauche6.bmp");}
if(y>20) {y=0;}
J1Left=J1Left-4; //Déplacement Joueur1 vers la gauche
if (J1Left<16) J1Left=16; //Blocage joueur1 dans le terrain de jeu
x=0;z=0;w=0;
}
if (Key == VK_RIGHT) {
if(z==0) {Joueur1->Picture->LoadFromFile("Joueur1Droite1.bmp");}
if(z==4) {Joueur1->Picture->LoadFromFile("Joueur1Droite2.bmp");}
if(z==8) {Joueur1->Picture->LoadFromFile("Joueur1Droite3.bmp");}
if(z==12){Joueur1->Picture->LoadFromFile("Joueur1Droite4.bmp");}
if(z==16){Joueur1->Picture->LoadFromFile("Joueur1Droite5.bmp");}
if(z==20){Joueur1->Picture->LoadFromFile("Joueur1Droite6.bmp");}
if(z>20) {z=0;}
J1Left=J1Left+4; //Déplacement Joueur1 vers la droite
if (J1Left>=592) J1Left=592; //Blocage joueur1 dans le terrain de jeu
x=0;y=0;w=0;
}
if (Key == VK_SPACE) {
if (PrioriteB1J1==True) {
TimerB1J1->Enabled=True;
Bombe1J1->Left=J1Left; Bombe1Left=J1Left;
Bombe1J1->Top=J1Top; Bombe1Top=J1Top;
Bombe1J1->Visible=True;
PrioriteB1J1=False;
}
}
a++; b++; c++; d++;
if (Key == VK_NUMPAD8) {
if(a==0) {Joueur2->Picture->LoadFromFile("Joueur2Haut1.bmp");}
if(a==4) {Joueur2->Picture->LoadFromFile("Joueur2Haut2.bmp");}
if(a==8) {Joueur2->Picture->LoadFromFile("Joueur2Haut3.bmp");}
if(a==12){Joueur2->Picture->LoadFromFile("Joueur2Haut4.bmp");}
if(a==16){Joueur2->Picture->LoadFromFile("Joueur2Haut5.bmp");}
if(a==20){Joueur2->Picture->LoadFromFile("Joueur2Haut6.bmp");}
if(a>20) {a=0;}
J2Top=J2Top-4; //Déplacement Joueur2 vers le haut
if (J2Top<=48) J2Top=48; //Blocage joueur2 dans le terrain de jeu
b=0;c=0;d=0;
}
if (Key == VK_NUMPAD5) {
if(b==0) {Joueur2->Picture->LoadFromFile("Joueur2Face1.bmp");}
if(b==4) {Joueur2->Picture->LoadFromFile("Joueur2Face2.bmp");}
if(b==8) {Joueur2->Picture->LoadFromFile("Joueur2Face3.bmp");}
if(b==12) {Joueur2->Picture->LoadFromFile("Joueur2Face4.bmp");}
if(b==16) {Joueur2->Picture->LoadFromFile("Joueur2Face5.bmp");}
if(b==20) {Joueur2->Picture->LoadFromFile("Joueur2Face6.bmp");}
if(b>20) {b=0;}
J2Top=J2Top+4; //Déplacement Joueur2 vers le bas
if (J2Top>=496) J2Top=496; //Blocage joueur2 dans le terrain de jeu
a=0;c=0;d=0;
}
if (Key == VK_NUMPAD4) {
if(c==0) {Joueur2->Picture->LoadFromFile("Joueur2Gauche1.bmp");}
if(c==4) {Joueur2->Picture->LoadFromFile("Joueur2Gauche2.bmp");}
if(c==8) {Joueur2->Picture->LoadFromFile("Joueur2Gauche3.bmp");}
if(c==12){Joueur2->Picture->LoadFromFile("Joueur2Gauche4.bmp");}
if(c==16){Joueur2->Picture->LoadFromFile("Joueur2Gauche5.bmp");}
if(c==20){Joueur2->Picture->LoadFromFile("Joueur2Gauche6.bmp");}
if(c>20) {c=0;}
J2Left=J2Left-4; //Déplacement Joueur2 vers la gauche
if (J2Left<16) J2Left=16; //Blocage joueur2 dans le terrain de jeu
a=0;b=0;d=0;
}
if (Key == VK_NUMPAD6) {
if(d==0) {Joueur2->Picture->LoadFromFile("Joueur2Droite1.bmp");}
if(d==4) {Joueur2->Picture->LoadFromFile("Joueur2Droite2.bmp");}
if(d==8) {Joueur2->Picture->LoadFromFile("Joueur2Droite3.bmp");}
if(d==12){Joueur2->Picture->LoadFromFile("Joueur2Droite4.bmp");}
if(d==16){Joueur2->Picture->LoadFromFile("Joueur2Droite5.bmp");}
if(d==20){Joueur2->Picture->LoadFromFile("Joueur2Droite6.bmp");}
if(d>20) {d=0;}
J2Left=J2Left+4; //Déplacement Joueur2 vers la droite
if (J2Left>=592) J2Left=592; //Blocage joueur2 dans le terrain de jeu
a=0;b=0;c=0;
}
if (Key == VK_NUMPAD0) {
if (PrioriteB1J2==True) {
TimerB1J2->Enabled=True;
Bombe1J2->Left=J2Left; Bombe2Left=J2Left;
Bombe1J2->Top=J2Top; Bombe2Top=J2Top;
Bombe1J2->Visible=True;
PrioriteB1J2=False;
}
}
}
Joueur2->Left=J2Left;
Joueur2->Top=J2Top;
Joueur1->Left=J1Left;
Joueur1->Top=J1Top;
return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NouveauRoundClick(TObject *Sender)
{
if (ScoreJ1==5) BomberManWorld->Caption="Joueur1 Gagnant";
if (ScoreJ2==5) BomberManWorld->Caption="Joueur2 Gagnant";
Priorite=False;
Ready->Visible=True;
TimerReady->Enabled=True;
Joueur1->Left=16; J1Left=16; //Coordonnée Gauche du Joueur1 affecté à J1Left
Joueur1->Top=48; J1Top=48; //Coordonnée Haut du Joueur1 affecté à J1Top
Joueur2->Left=592; J2Left=592; //Coordonnée Gauche du Joueur2 affecté à J1Left
Joueur2->Top=496; J2Top=496; //Coordonnée Haut du Joueur2 affecté à J1Top
a=0;b=0;c=0;d=0;
w=0;x=0;y=0;z=0;
Joueur1->Picture->LoadFromFile("Joueur1Face1.bmp");
Joueur2->Picture->LoadFromFile("Joueur2Haut1.bmp");
//Caisse1->Visible=True;
//Caisse2->Visible=True;
//Caisse3->Visible=True;
//Caisse4->Visible=True;
//Caisse5->Visible=True;
//Caisse6->Visible=True;
NouveauRound->Enabled=False;
NouveauRound->Enabled=True;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerB1J1Timer(TObject *Sender)
{
Bombe1++;
if (Bombe1==1) Bombe1J1->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe1==2) Bombe1J1->Picture->LoadFromFile("Bombe3.bmp");
if (Bombe1==3) Bombe1J1->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe1==4) Bombe1J1->Picture->LoadFromFile("Bombe1.bmp");
if (Bombe1==5) Bombe1J1->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe1==6) Bombe1J1->Picture->LoadFromFile("Bombe3.bmp");
if (Bombe1==7) Bombe1J1->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe1==8) Bombe1J1->Picture->LoadFromFile("Bombe1.bmp");
if (Bombe1==9) {Bombe1J1->Picture->LoadFromFile("Bombe2.bmp");
MediaPlayer2->Play();
ExpDroite1->Left=Bombe1Left+57;
ExpDroite1->Top=Bombe1Top;
ExpGauche1->Left=Bombe1Left-57;
ExpGauche1->Top=Bombe1Top;
ExpHaut1->Left=Bombe1Left;
ExpHaut1->Top=Bombe1Top-57;
ExpBas1->Left=Bombe1Left;
ExpBas1->Top=Bombe1Top+57;
ExpCentre1->Left=Bombe1Left;
ExpCentre1->Top=Bombe1Top;
ExpCentre1->Visible=True;
ExpDroite1->Visible=True;
ExpGauche1->Visible=True;
ExpHaut1->Visible=True;
ExpBas1->Visible=True;
if (J1Left > Bombe1Left-65 && J1Left < Bombe1Left+114)
{
if (J1Top > Bombe1Top-65 && J1Top < Bombe1Top+114)
{Joueur1->Picture->LoadFromFile("grille1.bmp");
Priorite=False;
ScoreJ2++;
ScoreJoueur2->Caption=ScoreJ2;
}
}
if (J2Left > Bombe1Left-65 && J2Left < Bombe1Left+114)
{
if (J2Top > Bombe1Top-65 && J2Top < Bombe1Top+114)
{Joueur2->Picture->LoadFromFile("grille2.bmp");
Priorite=False;
ScoreJ1++;
ScoreJoueur1->Caption=ScoreJ1;
}
}
if (ScoreJ1==5) BomberManWorld->Caption="Joueur1 Gagnant";
if (ScoreJ2==5) BomberManWorld->Caption="Joueur2 Gagnant";
TimerExp1->Enabled=True;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerExp1Timer(TObject *Sender)
{
TimerB1J1->Enabled=False;
TimerExp1->Enabled=False;
ExpCentre1->Visible=False;
ExpDroite1->Visible=False;
ExpGauche1->Visible=False;
ExpHaut1->Visible=False;
ExpBas1->Visible=False;
Bombe1J1->Visible=False;
PrioriteB1J1=True;
Bombe1=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AProposDeClick(TObject *Sender)
{
MediaPlayer1->Eject();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerB1J2Timer(TObject *Sender)
{
Bombe2++;
if (Bombe2==1) Bombe1J2->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe2==2) Bombe1J2->Picture->LoadFromFile("Bombe3.bmp");
if (Bombe2==3) Bombe1J2->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe2==4) Bombe1J2->Picture->LoadFromFile("Bombe1.bmp");
if (Bombe2==5) Bombe1J2->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe2==6) Bombe1J2->Picture->LoadFromFile("Bombe3.bmp");
if (Bombe2==7) Bombe1J2->Picture->LoadFromFile("Bombe2.bmp");
if (Bombe2==8) Bombe1J2->Picture->LoadFromFile("Bombe1.bmp");
if (Bombe2==9) {Bombe1J2->Picture->LoadFromFile("Bombe2.bmp");
MediaPlayer2->Play();
ExpDroite2->Left=Bombe2Left+57;
ExpDroite2->Top=Bombe2Top;
ExpGauche2->Left=Bombe2Left-57;
ExpGauche2->Top=Bombe2Top;
ExpHaut2->Left=Bombe2Left;
ExpHaut2->Top=Bombe2Top-57;
ExpBas2->Left=Bombe2Left;
ExpBas2->Top=Bombe2Top+57;
ExpCentre2->Left=Bombe2Left;
ExpCentre2->Top=Bombe2Top;
ExpCentre2->Visible=True;
ExpDroite2->Visible=True;
ExpGauche2->Visible=True;
ExpHaut2->Visible=True;
ExpBas2->Visible=True;
if (J1Left > Bombe2Left-65 && J1Left < Bombe2Left+114)
{
if (J1Top > Bombe2Top-65 && J1Top < Bombe2Top+114)
{Joueur1->Picture->LoadFromFile("grille1.bmp");
Priorite=False;
ScoreJ2++;
ScoreJoueur2->Caption=ScoreJ2;
}
}
if (J2Left > Bombe2Left-65 && J2Left < Bombe2Left+114)
{
if (J2Top > Bombe2Top-65 && J2Top < Bombe2Top+114)
{Joueur2->Picture->LoadFromFile("grille2.bmp");
Priorite=False;
ScoreJ1++;
ScoreJoueur1->Caption=ScoreJ1;
}
}
if (ScoreJ1==5) BomberManWorld->Caption="Joueur1 Gagnant";
if (ScoreJ2==5) BomberManWorld->Caption="Joueur2 Gagnant";
TimerExp2->Enabled=True;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerExp2Timer(TObject *Sender)
{
TimerB1J2->Enabled=False;
TimerExp2->Enabled=False;
ExpCentre2->Visible=False;
ExpDroite2->Visible=False;
ExpGauche2->Visible=False;
ExpHaut2->Visible=False;
ExpBas2->Visible=False;
Bombe1J2->Visible=False;
PrioriteB1J2=True;
Bombe2=0;
}
//---------------------------------------------------------------------------
Conclusion :
Malheureusement je n'est pû mettre que les images et les sons dans le zip. Si vous voulez tous les fichiers (borland 6) ainsi que l'executable n'hésitez pas a me contacter: florent69@free.fr ou aller sur
http://vyse01.free.fr et télécharger le pack COMPLET "bomberman.rar".
Je sais que le programme est loin d'être parfait mais soyez indulgent c'est mon premier programmme en C++ et il m'a comme même valut un 18 en projet informatique..... Voila je vous laisse le soin de le reprogrammmer tout bien où juste d'y jouer!!!! A noter pour ceux qui voudraient le reprogrammer qu'il faudrait l'orienter objet et utliser une matrice.....Bonne prog!!!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.