import processing.core.*; 
import processing.data.*; 
import processing.event.*; 
import processing.opengl.*; 

import java.util.HashMap; 
import java.util.ArrayList; 
import java.io.File; 
import java.io.BufferedReader; 
import java.io.PrintWriter; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.IOException; 

public class Galack_lick extends PApplet {

/*Creation des Vaisseau gentil est méchant*/
Vaisseau_Gentil gentil;
Vaisseau_Mechant Vmechant;

/*Création des variables*/
PImage fond;
ArrayList<Tir> tir = new ArrayList<Tir>();
float r;
float g;
float b;
int pixel;
int compteur = 0;

public void setup()
{
   
  /*Création du fond du background et de la taille de l'écran*/
  fond = loadImage("fond.PNG");
  
  
  /*Création des vaisseau gentil et méchant avec leurs aspect*/
  gentil = new Vaisseau_Gentil("data/gentilDroite.png", x, y);
  Vmechant = new Vaisseau_Mechant("mechant.png", width, random(10, 900));
  Vmechant.aleatoire();
  
}

public void draw()
{


  /*Chargement du background*/
  background(fond);
  
  /*Apparition du vausseau gentil*/
  gentil.apparaitre();
  
  /*Apparition du vaiseau méchant plus de ces fontions*/
  Vmechant.apparaitre();
  Vmechant.move(); 
  if (retour == 1)
  {
    Vmechant.replacer();
  }
  
  /*Création du tir et des ces caractéristiques plus creation du score*/
  for (int i = 0; i < tir.size(); i++)
  {
  Tir t = (Tir) tir.get(i);
  t.style();
  t.move();
  t.touche();
  text("Score : "+ t.score, 100, 100);
 }
}
public void keyPressed()
{
  /*Fonction de déplcement du vaiseau*/
  gentil.deplacer();
  
  /*Création des tirs avec la touche espace*/
  if (key == ' '){
  tir.add(new Tir("tir_bleu.png", x, y));
  }
}
/*Création de variables*/
int x;
int y;
int vitessex = 20;
int vitessey = 30;
PImage ImageHero;
String image;
int positionx;
int positiony;

/*Crétion de la classe Vaisseau gentil*/
class Vaisseau_Gentil
{
  Vaisseau_Gentil(String image, int positionx, int positiony)
  {
  ImageHero = loadImage(image);
  x = positionx;
  y = positiony;
  }  
  
  /*Foncyion pour faire apparaitre le vaisseau*/
  public void apparaitre() {
   image(ImageHero, x, y, 200, 200);
   }
   
   /*Foncyion pour faire déplacer le vaisseau*/
  public void deplacer() {
  if (keyPressed)
   {
    if (key == 'z'||key == 'Z')
    {
     y = y - vitessey;
    }
    if (key == 'd'||key == 'D')
    {
     x = x + vitessex;
    }
    if (key == 'q'||key == 'Q')
    {
     x = x - vitessex;
    }
    if (key == 's'||key == 'S')
    {
     y = y + vitessey;
    }
  }
  }
}
/*Création de la classe vaisseau méchant*/
class Vaisseau_Mechant
{
  int i;
  int x;
  float y;
  int speed;
  PImage ImageMechant;
  Vaisseau_Mechant(String image, int positionx,float positiony)
  {
    ImageMechant = loadImage(image);
    x = positionx;
    y = positiony;
  }
  
  /*Fonction pour faire apparaitre le vaisseau*/
  public void apparaitre(){
   image(ImageMechant, x , y, 250, 250);
  }
  
  /*Fonction pour faire que le vaisseau est une vitesse aléatoire*/
  public void aleatoire(){
  speed = PApplet.parseInt(random(5, 10));
  
  }
  
  /*Fonction pour faire bouger le vaisseau*/
  public void move(){
    x = x - speed;
  }
  public void replacer(){
    Vmechant = new Vaisseau_Mechant("mechant.png", width, random(10, 900));
    aleatoire();
  }
}
int retour = 0;
int t = 0;

/*Création de la classe Tir*/
class Tir
{
  int score = 0;
  PImage imagetir;
  String style;
  int tirx;
  int tiry;
  int sortie = 0;
  float r;
  float g;
  float b;
  int pixel;
   Tir(String style, int positiontirx, int positiontiry)
   {
   imagetir = loadImage(style);
   tirx = positiontirx;
   tiry = positiontiry;
   }
   
   /*Fonction pour faire apparaitre le tir*/
   public void style()
   {
    image(imagetir, tirx, tiry, 200, 200);
   }
   
    /*Fonction pour faire déplacer le tir*/
   public void move()
   {
     tirx = tirx + 10;
     if (tirx >= width)
     {
       sortie = 1;
     } 

    }
     /*Fonction pour faire apparaitre le tir*/
     public void touche()
  {
  pixel = get(tirx+ 201, tiry + 100);
  r = red(pixel);
  g = green(pixel);
  b = blue(pixel);
    if (r >= 142 && r<=189 && g >= 142 && g <=189 && b >= 158 && b <= 189)
       {
      println("touché");
      Vmechant.replacer();
      score = score +100;
       }
  
     }
     public int creeScore(){
     return score;
  }
}
  public void settings() {  fullScreen(); }
  static public void main(String[] passedArgs) {
    String[] appletArgs = new String[] { "Galack_lick" };
    if (passedArgs != null) {
      PApplet.main(concat(appletArgs, passedArgs));
    } else {
      PApplet.main(appletArgs);
    }
  }
}
