PImage terrain;//image fond
PImage fond;//image fond
ArrayList uniteB = new ArrayList(); // Tableau des unités bleues
ArrayList uniteR = new ArrayList(); // Tableau des unités rouges
float temps;
float ligne;
float timer1, timer2, timer3;
float val = 500;
float antispam1 = -1000;
float antispam2 = -1000;
float compB=0;//Variable de comparaison
float compB2=-1;//Variable de comparaison
float compR=1400;//Variable de comparaison
float compR2=-1;//Variable de comparaison
float son;//Variable pour le lancement du son
String testsolo;//Variable de test pour lancer le mode solo
String page;//Variable de référence pour les différentes pages
import ddf.minim.*; //musique
Minim minim; //musique
AudioPlayer player; //musique du jeu
AudioPlayer SonVictoire; //son de victoire
AudioPlayer Jouer; //son de lancement partie
void setup()
{
page="acceuil";
pages(page);
smooth();
minim = new Minim(this);
player = minim.loadFile("musique.mp3"); //Musique du jeu
SonVictoire = minim.loadFile("Son Victoire.mp3"); //Son de Victoire
Jouer = minim.loadFile("Jouer.mp3"); //Son de lancement de la partie
player.loop(); //on lance la music dans le menu
size(1400,600); //taille fenêtre
terrain=loadImage("terrain.jpg"); //image fond
terrain.resize(1400,600); //Définition de la taille du terrain
}
void draw()
{
if (page=="acceuil"){
pages(page);
}//if
if (mouseX>1190 && mouseY>10 && mouseX<1300 && mouseY<100 && mousePressed == true){ //bouton de music
if (player.isPlaying()) {
println("music off");
player.pause();
player.rewind();
}//if
else {
println("music on");
player.loop();
}//else
}//if
if (mouseX>515 && mouseY>150 && mouseX<855 && mouseY<220 && mousePressed == true) {
page="commandes";
pages(page);
}//if
if (mouseX>80 && mouseY>500 && mouseX<250 && mouseY<570 && mousePressed == true && page=="commandes"){
page="acceuil";
pages(page);
}//if
if (mouseX>1170 && mouseY>500 && mouseX<1340 && mouseY<570 && mousePressed == true && page=="commandes"){
page="commandes_2";
pages(page);
}//if
if (mouseX>80 && mouseY>500 && mouseX<250 && mouseY<570 && mousePressed == true && page=="commandes_2"){
page="commandes";
pages(page);
}//if
if (mouseX>590 && mouseY>250 && mouseX<780 && mouseY<320 && mousePressed == true){
page="règles";
pages(page);
}//if
if (mouseX>80 && mouseY>500 && mouseX<250 && mouseY<570 && mousePressed == true && page=="règles"){
page="acceuil";
pages(page);
}//if
if (mouseX>80 && mouseY>500 && mouseX<250 && mouseY<570 && mousePressed == true && page=="rouge"){
page="acceuil";
pages(page);//ecran de win rouge
}//if
if (mouseX>80 && mouseY>500 && mouseX<250 && mouseY<570 && mousePressed == true && page=="bleu"){
page="acceuil";
pages(page);//ecran de win bleu
}//if
if (mouseX>560 && mouseY>350 && mouseX<810 && mouseY<420 && mousePressed == true) {
Jouer.play();
Jouer.rewind();
testsolo="solo";
page="jeu";
}//if
if (mouseX>555 && mouseY>450 && mouseX<820 && mouseY<520 && mousePressed == true) {
Jouer.play();
Jouer.rewind();
page="jeu";
}//if
if (page=="jeu"){ //Lancement de la partie // Jouer la musique en boucle
background(terrain);
if(testsolo=="solo"){
creationennemis(); //Lancement de l'ennemi virtuel
} //if
for (int i = 0; i < uniteB.size(); i++) { //Gestion déplacements des bleus
bleu ball = (bleu) uniteB.get(i);
ball.deplacementB();
ball.display();
}//for
for (int j = 0; j < uniteR.size(); j++) { //Gestion déplacements des rouges
rouge ball = (rouge) uniteR.get(j);
ball.deplacementR();
ball.display();
}//for
//if(compB>compR && compB2==compR2){uniteR.clear();uniteB.clear();}//intéraction entre les unités
if(compB==1400){ //Victore des bleus (nettoyage des unités, reboot des valeurs de test, affichage de l'écran de victoire)
victoireB();
}//if
if(compR==0){ //Victoire des rouges (nettoyage des unités, reboot des valeurs de test, affichage de l'écran de victoire)
victoireR();
}//if
for (int i = uniteB.size()-1; i >= 0; i--) {
bleu ball1 = (bleu) uniteB.get(i);
if (ball1.isAlive) {
for (int i1 = uniteR.size()-1; i1 >= 0; i1--) {
rouge ball2 = (rouge) uniteR.get(i1);
if (ball2.isAlive && dist(ball1.x, ball1.y, ball2.x, ball2.y) < 7) {
text("hit", ball1.x, ball1.y);
ball1.isAlive=false;
ball2.isAlive=false;
print("HIT");
}//if
}//for
}//if
}//for
for (int i = uniteB.size()-1; i>=0; i--) {
bleu ball = (bleu) uniteB.get(i);
if (!ball.isAlive)
uniteB.remove(i);
}
for (int i = uniteR.size()-1; i>=0; i--) {
rouge ball = (rouge) uniteR.get(i);
if (!ball.isAlive)
uniteR.remove(i);
}//for
}//if
}//void
_________________________________________________________________________________________________________________
void pages(String page)
{
if (page=="acceuil"){
smooth();
size(1400,600);//taille fenêtre
fond=loadImage("fond-noir.png");
fond.resize(1400,600);
background(fond);
textSize(100);
text("LITTLE BATTLE", 340,100);
textSize(50);
fill(225,0,0);
rect(565, 350, 240, 70,7);
fill(255,255,255);
text("1 PLAYER",570,400);
fill(9,34,95);
rect(555, 450, 260, 70,7);
fill(255,255,255);
text("2 PLAYERS",560,500);
fill(70, 63, 50);
rect(590, 250, 190, 70,7);
fill(255,255,255);
text("REGLES ",600,300);
fill(70, 63, 50);
rect(515, 150, 340, 70,7);
fill(255,255,255);
text("COMMANDES",525,200);
fill(121, 137, 51);
rect(1190, 10, 105, 70,7);
fill(255,255,255);
text("son",1200,60);
}//if
if (page=="commandes"){
size(1400,600);//taille fenêtre
fond=loadImage("voil.png");
fond.resize(1400,600);
background(fond);
textSize(50);
fill(229,42,9);
text("PLAYER 1",100,70);
fill(9,185,229);
text("PLAYER 2",900,70);
stroke(255,255,255);
fill(0,0,0);
rect(1170, 500, 170, 70,7);
fill(255,255,255);
textSize(40);
text("NEXT→",1190,550);
stroke(255,255,255);
fill(0,0,0);
rect(80, 500, 170, 70,7);
fill(255,255,255);
textSize(40);
text("←BACK",100,550);
}//if
if (page=="commandes_2"){
size(1400,600);//taille fenêtre
fond=loadImage("fond-noir.png");
fond.resize(1400,600);
background(fond);
textSize(30);
fill(229,42,9);
text("PLAYER 1",100,70);
text("A = Ligne du haut ",100,200);
text("Q = Ligne du centre ",100,300);
text("W = Ligne du bas ",100,400);
fill(9,185,229);
text("PLAYER 2",900,70);
text("P = Ligne du haut ",900,200);
text("M = Ligne du centre ",900,300);
text("! = Ligne du bas ",900,400);
stroke(255,255,255);
fill(0,0,0);
rect(80, 500, 170, 70,7);
fill(255,255,255);
textSize(40);
text("←BACK",100,550);
} //if
if (page=="règles"){
size(1400,600);//taille fenêtre
fond=loadImage("fond-noir.png");
fond.resize(1400,600);
background(fond);
textSize(30);
text("But du jeu :",100,100);
text("Vous devez envoyer des balles contre votre adversaire afin de bloquer ses attaques.",100,200);
text("Vous pouvez envoyer des balles sur trois lignes différentes pour défendre votre camp.",100,250);
text("Si l'une de vos balles arrive à atteindre le bord ennemi vous remportez la partie.",100,300);
text("En revanche si une balle adverse atteint votre camp vous perdez.",100,350);
text("N'essayez pas d'appuyer rapidement sur les touches celà bloque le jeu",100,400);
textSize(40);
stroke(255,255,255);
fill(0,0,0);
rect(80, 500, 170, 70,7);
fill(255,255,255);
text("←BACK",100,550);
}//if
if( page=="rouge"){
smooth();
size(1400,600);//taille fenêtre
fond=loadImage("fond-noir.png");
fond.resize(1400,600);
background(fond);
fill(229,42,9);
text("Victoire Rouge", 550, 300);
stroke(255,255,255);
fill(0,0,0);
rect(80, 500, 170, 70,7);
fill(255,255,255);
textSize(40);
text("MENU",100,550);
}//if
if( page=="bleu"){
smooth();
size(1400,600);//taille fenêtre
fond=loadImage("fond-noir.png");
fond.resize(1400,600);
background(fond);
fill(9,185,229);
text("Victoire Bleu", 550, 300);
stroke(255,255,255);
fill(0,0,0);
rect(80, 500, 170, 70,7);
fill(255,255,255);
textSize(40);
text("MENU",100,550);
}//if
}//void
_________________________________________________________________________________________________________________
void keyReleased(){
temps = millis(); // la fonction millis() donne le temps depuis que le programme a démarré (en millisecondes)
for(int i=0; i<temps;i++) { //antispam... est déclaré au debut et est égal à -1000 (-1000 car comme sa on peut cliquer des que le programme se lance)
// car quand on lance le programme "temps" sera égal à 0 et quelques et ducoup sa sera bien, >= à (-1000 +1000 donc 0)
//touches bleues
if (key == 'a'&& temps >= antispam1 +val){
uniteB.add( new bleu(50,200,color(30,144,255))); // On cree une unité qui s'ajoute dans le tableau "bleu" avec une posX, posY, une variable de comparaison et une couleur
}//if
if (key == 'q'&& temps >= antispam1 +val){
uniteB.add( new bleu(50,300,color(30,144,255))); // On cree une unité qui s'ajoute dans le tableau "bleu" avec une posX, posY, une variable de comparaison et une couleur
}//if
if (key == 'w'&& temps >= antispam1 +val){
uniteB.add( new bleu(50,400,color(30,144,255))); // On cree une unité qui s'ajoute dans le tableau "bleu" avec une posX, posY, une variable de comparaison et une couleur
}//if
antispam1 = temps; //Empêche le joueur bleu d'envoyer trop de balles
//touches rouges
if (key == 'p'&& temps >= antispam2 +val){
uniteR.add( new rouge(1350,200, color(237,0,0))); // On cree une unité qui s'ajoute dans le tableau "rouge" avec une posX, posY, une variable de comparaison et une couleur
}//if
if (key == 'm'&& temps >= antispam2 +val){
uniteR.add( new rouge(1350,300, color(237,0,0))); // On cree une unité qui s'ajoute dans le tableau "rouge" avec une posX, posY, une variable de comparaison et une couleur
}//if
if (key == '!'&& temps >= antispam2 +val){
uniteR.add( new rouge(1350,400,color(237,0,0))); // On cree une unité qui s'ajoute dans le tableau "rouge" avec une posX, posY, une variable de comparaison et une couleur
}//if
antispam2 = temps; //Empêche le joueur rouge d'envoyer trop de balles
}//for
}//void
_________________________________________________________________________________________________________________
class bleu{ // On crée une classe (ou un objet) unité allié qui aura tous ces paramètres
//Déclaration des paramètres de base de la balle
float x;
float y;
color couleur;
float deplacement;
boolean isAlive=true;
//Constructeur de l'unité
bleu (float nouvX, float nouvY, color nouvCouleur) { //Pos x, Pos y, vérification, Couleur (Pour chaque unité créer il faudra lui donner en parametre une posx, une pos y ... (exemple : new unite(50,100,1,color(30,144,255))
this.x = nouvX; //position X
this.y = nouvY; //position Y
this.couleur = nouvCouleur; //couleur de l'unité
}
void deplacementB(){
deplacement++;
for (int i = 0; i < uniteB.size(); i++) {
bleu ball = (bleu) uniteB.get(i);
ball.display();
}//for
}//void
void display() {
fill(couleur);
ellipse(compB=deplacement*2,compB2= y, 40, 40);
}//void
}//class
void victoireB(){
uniteR.clear();uniteB.clear();
compB=0;
page="bleu";
testsolo="rien";
SonVictoire.play();
SonVictoire.rewind();
player.pause();
player.rewind();
pages(page);
}//void
_________________________________________________________________________________________________________________
class rouge{ // On crée une classe (ou un objet) unité allié qui aura tous ces paramètres
//Déclaration des paramètres de base de la balle
float x;
float y;
color couleur;
float deplacement;
boolean isAlive=true;
//Constructeur de l'unité
rouge (float nouvX, float nouvY, color nouvCouleur) { //Pos x, Pos y, Couleur (Pour chaque unité créer il faudra lui donner en parametre une posx, une pos y ... (exemple : new unite(50,100,color(30,144,255))
this.x = nouvX; //position X
this.y = nouvY; //position Y
this.couleur = nouvCouleur; //couleur de l'unité
}
void deplacementR(){
deplacement++;
for (int i = 0; i < uniteR.size(); i++) {
rouge ball = (rouge) uniteR.get(i);
ball.display();
}//for
}//void
void display() {
fill(couleur);
ellipse(compR=1350-deplacement*2,compR2= y, 40, 40);
}//void
}//class
void victoireR(){
uniteR.clear();uniteB.clear();
compR=1400;
page="rouge";
testsolo="rien";
SonVictoire.play();
SonVictoire.rewind();
player.pause();
player.rewind();
pages(page);
}//void
_________________________________________________________________________________________________________________
void creationennemis() {
temps= random(100); // temps aleatoire
ligne=int(random(1, 4)); //lignes aleatoire
if (temps>1)
return; //on laisse passer 99% plus on augmente plus compliqué
int yValue=0;
if (ligne == 1) {
if (millis()-timer1<700) //on lance seulement si temps moin celui davant<700 sinon chevauchement
return; // on lance une balle
yValue=200; //lignes du haut
timer1=millis(); // on prend comme donné la derniere balle de la ligne
}//if ligne 1
else if (ligne == 2) {
if (millis()-timer2<700) //on lance seulement si temps moin celui davant<700 sinon chevauchement
return; // on lance une balle
yValue=300; //lignes du milieu
timer2=millis(); // on prend comme donné la derniere balle de la ligne
}//if ligne 2
else if (ligne == 3) {
if (millis()-timer3<700) //on lance seulement si temps moin celui davant<700 sinon chevauchement
return; // on lance une balle
yValue=400; //lignes du bas
timer3=millis(); // on prend comme donné la derniere balle de la ligne
}//if ligne 3
else {
// //sinon rien
}//else
uniteR.add( new rouge(1350,yValue, color(237,0,0))); // On cree une unité qui s'ajoute dans le tableau "uniteJ" avec une posX, lignes aleatoire, une variable de comparaison et une couleur
}//void
_________________________________________________________________________________________________________________