Réplique d'arkanoid

Description

Ce casse-brique est issu d'un projet JAVA que j'ai réalisé dans le courant de ma deuxième année d'apprentissage d'analyste programmeur (d'où le nom APAnoid)
Il m'a fallu 4 journées de cours et toute l'aide de mon prof pour en venir à bout mais vous avez là la réplique exacte des 31 niveaux de l'Arkanoid original.

Source / Exemple :


import java.applet.Applet;
import java.awt.Image;
import java.awt.Graphics;
import java.awt.event.*;
import java.awt.Color;
import java.awt.Cursor;

public class ApaNoid extends Applet implements MouseListener, MouseMotionListener, KeyListener, Runnable
{
    //Déclarations
    Image fond;
    Image raquette;
    Image offScreen;
    Image balle;
    Image[][] Briques = new Image[15][13];
    Image[] vies = new Image[10];
    Image gameover;
    Image[] Num_Score = new Image[10];
    Image[] Opt = new Image[4];

    String[] tableau=new String[15];
  
    boolean[][] flash = new boolean[15][13];
    boolean fin_niveau;
    boolean est_lance;
    boolean toujours_coller;
 
    int[][] Nb_Coups = new int[15][13];
    int l,h;
    int niveau;
    int Score;
    int max_niv;
    int position_raquette;
    int position_balle_x, position_balle_y;
    int dx,dy;
    int pas;
    int pos_init_balle = 55;
    int vie;
    int r_1, r_2, r_3;
    int nb_brikk;   
    int Opt_X,Opt_Y;
    int Opt_Num;
    int delta_x;
    boolean NoOneCanCheatLikeIDo;

    Thread jouer;
    
    float[] sinus = new float[360];
    float[] cosinus = new float[360];
    
    //=========================================================================================\\            
    public void ChargerNiveau(int n)
    {
      toujours_coller = false;
      position_raquette = (int) (getSize().width / 2) - (raquette.getWidth(this) /2);
      delta_x = 40;
      Opt_X = 0;
      position_balle_x = position_raquette + delta_x;
      position_balle_y = getSize().height - pos_init_balle;
      raquette = getImage(getDocumentBase(), "Rakette.gif");
      int a,b;
      for (a = 0; a < h ; a++) { for (b = 0 ; b < l ; b++) { flash[a][b] = false; }}
      int f = n % 4;
    	fond = getImage(getDocumentBase(),"FOND" +String.valueOf(f) + ".JPG");
    	prepareImage(fond, this);
      switch(n)
      {         
          case 1:
              tableau[0] = "0000000000000";
              tableau[1] = "0000000000000";
              tableau[2] = "9999999999999";
              tableau[3] = "6666666666666";
              tableau[4] = "5555555555555";
              tableau[5] = "4444444444444";
              tableau[6] = "1111111111111";
              tableau[7] = "2222222222222";
              tableau[8] = "0000000000000";
              tableau[9] = "0000000000000";
              tableau[10]= "0000000000000";
              tableau[11]= "0000000000000";
              tableau[12] ="0000000000000";
              tableau[13] ="0000000000000";
              tableau[14] ="0000000000000";
              nb_brikk = 78;
              break;
          case 2: 
              tableau[0] = "7000000000000";
              tableau[1] = "7500000000000";
              tableau[2] = "75A0000000000";              
              tableau[3] = "75A2000000000";
              tableau[4] = "75A2600000000";
              tableau[5] = "75A2640000000";
              tableau[6] = "75A2641000000";
              tableau[7] = "75A2641300000";
              tableau[8] = "75A2641370000";
              tableau[9] = "75A2641375000";
              tableau[10]= "75A2641375A00";
              tableau[11]= "75A2641375A20";
              tableau[12]= "9999999999996";
              tableau[13]= "0000000000000";
              tableau[14]= "0000000000000";
              nb_brikk = 91;
              break;
          case 3:
              tableau[0] = "2222222222222"; //13
              tableau[1] = "0000000000000";
              tableau[2] = "7778888888888"; //3
              tableau[3] = "0000000000000";
              tableau[4] = "6666666666666"; //13
              tableau[5] = "0000000000000";
              tableau[6] = "8888888888777"; //3
              tableau[7] = "0000000000000";
              tableau[8] = "1111111111111"; //13
              tableau[9] = "0000000000000";
              tableau[10]= "4448888888888"; //3
              tableau[11]= "0000000000000";
              tableau[12]= "AAAAAAAAAAAAA"; //13
              tableau[13]= "0000000000000";
              tableau[14]= "8888888888AAA"; //3
              nb_brikk = 64;
              break;
          case 4:
              tableau[0] = "05A2940375A20";
              tableau[1] = "0A2941075A290";
              tableau[2] = "02941305A2940";
              tableau[3] = "0941370A29410";
              tableau[4] = "0413750294130";
              tableau[5] = "01375A0941370";
              tableau[6] = "0375A20413750";
              tableau[7] = "075A2901375A0";
              tableau[8] = "05A2940375A20";
              tableau[9] = "0A2941075A290";
              tableau[10]= "02941305A2940";
              tableau[11]= "0941370A29410";
              tableau[12]= "0413750294130";
              tableau[13]= "01375A0941370";
              tableau[14]= "0375A20413750";
              nb_brikk = 150;
              break;
        case 5:
              tableau[0] = "0003000003000"; //2
              tableau[1] = "0003000003000"; //2
              tableau[2] = "0000300030000"; //2
              tableau[3] = "0000300030000"; //2
              tableau[4] = "0009999999000"; //7
              tableau[5] = "0009999999000"; //7
              tableau[6] = "0099699969900"; //9
              tableau[7] = "0099699969900"; //9
              tableau[8] = "0999999999990"; //11
              tableau[9] = "0999999999990"; //11
              tableau[10]= "0909999999090"; //9
              tableau[11]= "0909000009090"; //4
              tableau[12]= "0909000009090"; //4
              tableau[13]= "0000990990000"; //4
              tableau[14]= "0000990990000"; //4
              nb_brikk = 87;
              break;
        case 6:
            tableau[0] = "406020A020604"; //7
            tableau[1] = "406020A020604"; //7
            tableau[2] = "406020A020604"; //7
            tableau[3] = "406020A020604"; //7
            tableau[4] = "406020A020604"; //7
            tableau[5] = "4085858585804"; //6
            tableau[6] = "406020A020604"; //7
            tableau[7] = "406020A020604"; //7
            tableau[8] = "406020A020604"; //7
            tableau[9] = "406020A020604"; //7
            tableau[10]= "5050805080505"; //5
            tableau[11]= "406020A020604"; //7
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 81;
            break;
        case 7:
            tableau[0] = "0000033100000"; //3
            tableau[1] = "0000331140000"; //5
            tableau[2] = "0003311446000"; //7
            tableau[3] = "0003114466000"; //7
            tableau[4] = "0031144662200"; //9
            tableau[5] = "0011446622A00"; //9
            tableau[6] = "001446622AA00"; //9
            tableau[7] = "00446622AA500"; //9
            tableau[8] = "0046622AA5500"; //9
            tableau[9] = "006622AA55700"; //9
            tableau[10]= "00022AA557000"; //7
            tableau[11]= "0002AA5577000"; //7
            tableau[12]= "0000A55770000"; //5
            tableau[13]= "0000057700000"; //3
            tableau[14]= "0000000000000";
            nb_brikk = 98;
            break;
        case 8:
            tableau[0] = "0008080808000";
            tableau[1] = "0800000000080";
            tableau[2] = "0880800080880";
            tableau[3] = "0000007000000";
            tableau[4] = "0800085800080";
            tableau[5] = "000800A008000";
            tableau[6] = "0000002000000";
            tableau[7] = "0008006008000";
            tableau[8] = "0800084800080";
            tableau[9] = "0000001000000";
            tableau[10]= "0880800080880";
            tableau[11]= "0800000000080";
            tableau[12]= "0008080808000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 7;
            break;
        case 9:
            tableau[0] = "0000000000000";
            tableau[1] = "0808000008080";
            tableau[2] = "0828000008280";
            tableau[3] = "08A8000008A80";
            tableau[4] = "0888000008880";
            tableau[5] = "0000000000000";
            tableau[6] = "0000177730000";
            tableau[7] = "0000155530000";
            tableau[8] = "00001AAA30000";
            tableau[9] = "0000122230000";
            tableau[10]= "0000166630000";
            tableau[11]= "0000144430000";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 34;
            break;
       case 10:
            tableau[0] = "0000000000000";
            tableau[1] = "0800000000000";
            tableau[2] = "0800000000000";
            tableau[3] = "0800000400000";
            tableau[4] = "0800004A40000";
            tableau[5] = "080004A7A4000";
            tableau[6] = "08004A7A7A400";
            tableau[7] = "0804A7A9A7A40";
            tableau[8] = "08004A7A7A400";
            tableau[9] = "080004A7A4000";
            tableau[10]= "0800004A40000";
            tableau[11]= "0800000400000";
            tableau[12]= "0800000000000";
            tableau[13]= "0800000000000";
            tableau[14]= "0888888888888";
            nb_brikk = 41;
            break;
        case 11:
            tableau[0] = "0000000000000";
            tableau[1] = "0999999999990"; //11
            tableau[2] = "0900000000090"; //2
            tableau[3] = "0909999999090"; //9
            tableau[4] = "0909000009090"; //4
            tableau[5] = "0909099909090"; //7
            tableau[6] = "0909090909090"; //6
            tableau[7] = "0909099909090"; //7
            tableau[8] = "0909000009090"; //4
            tableau[9] = "0909999999090"; //9
            tableau[10]= "0900000000090"; //2
            tableau[11]= "0999999999990"; //11            
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 72;
            break;
        case 12:
            tableau[0] = "7000000000000";
            tableau[1] = "8888888888800";
            tableau[2] = "0000800000810";
            tableau[3] = "0000800000800";
            tableau[4] = "0870800800800";
            tableau[5] = "0800820800800";
            tableau[6] = "0800800800800";
            tableau[7] = "0805800840800";
            tableau[8] = "0800800800800";
            tableau[9] = "0800806800800";
            tableau[10]= "0800800800800";
            tableau[11]= "08A0000800000";
            tableau[12]= "0800000800003";
            tableau[13]= "0888888888888";
            tableau[14]= "0000000000000";
            nb_brikk = 9;
            break;
        case 13:
            tableau[0] = "0000000000000";
            tableau[1] = "0333077703330";
            tableau[2] = "0111055501110";
            tableau[3] = "04440AAA04440";
            tableau[4] = "0666022206660";
            tableau[5] = "0222066602220";
            tableau[6] = "0AAA04440AAA0";
            tableau[7] = "0555011105550";
            tableau[8] = "0777033307770";
            tableau[9] = "0000000000000";
            tableau[10]= "0000000000000";
            tableau[11]= "0000000000000";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 72;
            break;
        case 14:
            tableau[0] = "0000000000000";
            tableau[1] = "4444444444444";
            tableau[2] = "8000000000008";
            tableau[3] = "4444444444444";
            tableau[4] = "0000000000000";
            tableau[5] = "5999999999995";
            tableau[6] = "8000000000008";
            tableau[7] = "7777777777777";
            tableau[8] = "0000000000000";
            tableau[9] = "A99999999999A";
            tableau[10]= "8000000000008";
            tableau[11]= "6666666666666";
            tableau[12]= "0000000000000";
            tableau[13]= "6666666666666";
            tableau[14]= "8000000000008";
            nb_brikk = 91;
            break;
        case 15:
            tableau[0] = "0000000000000";
            tableau[1] = "A78AAAAAAA87A";
            tableau[2] = "A738AAAAA827A";
            tableau[3] = "A7338AAA8227A";
            tableau[4] = "A73338782227A";
            tableau[5] = "A73333722227A";
            tableau[6] = "A73333722227A";
            tableau[7] = "A73333722227A";
            tableau[8] = "A93333722229A";
            tableau[9] = "AA933372229AA";
            tableau[10]= "AAA9337229AAA";
            tableau[11]= "AAAA93729AAAA";
            tableau[12]= "AAAAA979AAAAA";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 148;
            break;
        case 16:
            tableau[0] = "0000000000000";
            tableau[1] = "0000008000000";
            tableau[2] = "0000770770000"; //4
            tableau[3] = "0077008007700"; //4
            tableau[4] = "7700550550077"; //8
            tableau[5] = "0055008005500"; //4
            tableau[6] = "5500330330055"; //8
            tableau[7] = "0033008003300"; //4
            tableau[8] = "3300220220033"; //8
            tableau[9] = "0022008002200"; //4
            tableau[10]= "2200660660022"; //8
            tableau[11]= "0066008006600"; //4
            tableau[12]= "6600440440066"; //8
            tableau[13]= "0044000004400"; //4
            tableau[14]= "4400000000044"; //4
            nb_brikk = 72;
            break;
        case 17:
            tableau[0] = "0000000000000";
            tableau[1] = "0000009000000"; //1
            tableau[2] = "0004449222000"; //7
            tableau[3] = "0044477722200"; //9
            tableau[4] = "0044777772200"; //9
            tableau[5] = "0444777772220"; //11
            tableau[6] = "0444777772220"; //11
            tableau[7] = "0444777772220"; //11
            tableau[8] = "0900909090090"; //5
            tableau[9] = "0000009000000"; //1
            tableau[10]= "0000009000000"; //1
            tableau[11]= "0000009000000"; //1
            tableau[12]= "0000808000000";
            tableau[13]= "0000888000000";
            tableau[14]= "0000080000000";
            nb_brikk = 67;
            break;
        case 18:
            tableau[0] = "0000000000000";
            tableau[1] = "0000000000000";
            tableau[2] = "5083333333805"; //9
            tableau[3] = "5088333338805"; //7
            tableau[4] = "5080833380805"; //5
            tableau[5] = "50801838A0805"; //5
            tableau[6] = "50801090A0805"; //5
            tableau[7] = "50801020A0805"; //5
            tableau[8] = "50801020A0805"; //5
            tableau[9] = "50801020A0805"; //5
            tableau[10]= "50801020A0805"; //5
            tableau[11]= "58881020A8885"; //5
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 56;
            break;
        case 19:
            tableau[0] = "0000000000000";
            tableau[1] = "0088888888800";
            tableau[2] = "0023418143200"; //8
            tableau[3] = "0023418143200"; //8
            tableau[4] = "0023418143200"; //8
            tableau[5] = "0023413143200"; //9
            tableau[6] = "0023418143200"; //8
            tableau[7] = "0023418143200"; //8
            tableau[8] = "0023418143200"; //8
            tableau[9] = "0088888888800";
            tableau[10]= "0000000000000";
            tableau[11]= "0000000000000";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 57;
            break;
        case 20:
            tableau[0] = "87858A8283848"; //6
            tableau[1] = "8189898989838"; //6
            tableau[2] = "0000000000000";
            tableau[3] = "8180808080808";
            tableau[4] = "8081808080808";
            tableau[5] = "8080818080808";
            tableau[6] = "8080808180808";
            tableau[7] = "8080808081808";
            tableau[8] = "0000000000010";
            tableau[9] = "0080808081800";
            tableau[10]= "0080808180800";
            tableau[11]= "0080818080800";
            tableau[12]= "0001808080000";
            tableau[13]= "0100008000000";
            tableau[14]= "0000000000000";
            nb_brikk = 23;
            break;
        case 21:
            tableau[0] = "0000000000000";
            tableau[1] = "0855555555580";
            tableau[2] = "0800000000080";
            tableau[3] = "0808888888080";
            tableau[4] = "0808000008080";
            tableau[5] = "0808000008080";
            tableau[6] = "0808066608080";
            tableau[7] = "0808022208080";
            tableau[8] = "0808044408080";
            tableau[9] = "0808077708080";
            tableau[10]= "0808000008080";
            tableau[11]= "0808AAAAA8080";
            tableau[12]= "0800000000080";
            tableau[13]= "0888888888880";
            tableau[14]= "0000000000000";
            nb_brikk = 26;
            break;
        case 22:
            tableau[0] = "0000000000000";
            tableau[1] = "3333333333333"; //13
            tableau[2] = "3333333333333"; //13
            tableau[3] = "0000000000000";
            tableau[4] = "6680866680866";//7
            tableau[5] = "6680866680866";//7
            tableau[6] = "6680866680866";//7
            tableau[7] = "0000000000000";
            tableau[8] = "7777777777777";//13
            tableau[9] = "7777777777777";//13
            tableau[10]= "0000000000000";
            tableau[11]= "0000000000000";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 73;
            break;
        case 23:
            tableau[0] = "AAAAAAAAAAAAA"; //13
            tableau[1] = "0000000000000";
            tableau[2] = "0099909990999";
            tableau[3] = "0092909290929";
            tableau[4] = "0099909990999";
            tableau[5] = "0000000000000";
            tableau[6] = "0999099909990";
            tableau[7] = "0969096909690";
            tableau[8] = "0999099909990";
            tableau[9] = "0000000000000";
            tableau[10]= "9990999099900";
            tableau[11]= "9490949094900";
            tableau[12]= "9990999099900";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 94;
            break;
        case 24:
            tableau[0] = "0000000000000";
            tableau[1] = "0000000000000";
            tableau[2] = "0000000000000";
            tableau[3] = "0000077700000"; //3
            tableau[4] = "0000077700000"; //3
            tableau[5] = "0000777770000"; //5
            tableau[6] = "0000747470000"; //5
            tableau[7] = "0007447447000"; //7
            tableau[8] = "0004444444000"; //7
            tableau[9] = "0044444444400"; //9
            tableau[10]= "0044444444400"; //9
            tableau[11]= "0444444444440"; //11
            tableau[12]= "4444444444444"; //13
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 72;
            break;
        case 25:
            tableau[0] = "0000000000000";
            tableau[1] = "6666666666666"; //13
            tableau[2] = "2222222222222"; //13
            tableau[3] = "4444444444444"; //13
            tableau[4] = "8888899988888"; //3
            tableau[5] = "8666800084448"; //6
            tableau[6] = "8666800084448"; //6
            tableau[7] = "8000000000008";
            tableau[8] = "8000000000008";
            tableau[9] = "8000822280008"; //3
            tableau[10]= "8000822280008"; //3
            tableau[11]= "8999888889998"; //6
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 66;
            break;
        case 27:
            tableau[0] = "0000000000000";
            tableau[1] = "0000000000000";
            tableau[2] = "0000000000000";
            tableau[3] = "0000000000000";
            tableau[4] = "0000000000000";
            tableau[5] = "0000000000000";
            tableau[6] = "9999999999999";
            tableau[7] = "3333333333333";
            tableau[8] = "9999999999999";
            tableau[9] = "0000000000000";
            tableau[10]= "9999999999999";
            tableau[11]= "6666666666666";
            tableau[12]= "9999999999999";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 78;
            break;
        case 26:
            tableau[0] = "0000000000000";
            tableau[1] = "0089998000000";
            tableau[2] = "0800000800000";
            tableau[3] = "800AAA0080000";
            tableau[4] = "8022222080000";
            tableau[5] = "8044444080000";
            tableau[6] = "8001110080000";
            tableau[7] = "0800000800000";
            tableau[8] = "0088888000000";
            tableau[9] = "0000000000000";
            tableau[10]= "0000000000000";
            tableau[11]= "0000000000000";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 19;
            break;
        case 28:
            tableau[0] = "4444444444444";//13
            tableau[1] = "4888818188884";//4
            tableau[2] = "4800000000084";//2
            tableau[3] = "4810000000184";//4
            tableau[4] = "4811000001184";//6
            tableau[5] = "4811100011184";//8
            tableau[6] = "0481110111840";//8
            tableau[7] = "0048111118400";//7
            tableau[8] = "0004811184000";//5
            tableau[9] = "0000481840000";//3
            tableau[10]= "0000041400000";//3
            tableau[11]= "0000004000000";//1
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 64;
            break;
        case 29:
            tableau[0] = "0000000000000";
            tableau[1] = "0000000000000";
            tableau[2] = "3333380833333";
            tableau[3] = "1111180811111";
            tableau[4] = "8878880888788";
            tableau[5] = "4444480844444";
            tableau[6] = "6666680866666";
            tableau[7] = "2222280822222";
            tableau[8] = "9979980899799";
            tableau[9] = "AAAAA808AAAAA";
            tableau[10]= "5555580855555";
            tableau[11]= "7777780877777";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 92;
            break;
        case 30:
            tableau[0] = "3100000000000"; //2
            tableau[1] = "3146000000000"; //4
            tableau[2] = "31462A0000000"; //6
            tableau[3] = "31462A5700000"; //8
            tableau[4] = "31462A5731000"; //10
            tableau[5] = "91462A5731460"; //12
            tableau[6] = "08962A5731462"; //11
            tableau[7] = "00089A5731462"; //9
            tableau[8] = "0000089731462"; //7
            tableau[9] = "0000000891462"; //5
            tableau[10]= "0000000008962"; //3
            tableau[11]= "0000000000089"; //1
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 78;
            break;
        case 32:
            tableau[0] = "0000000000000";
            tableau[1] = "0080808080800";
            tableau[2] = "0080808080800";
            tableau[3] = "0080808082200"; //2
            tableau[4] = "0080808080800";
            tableau[5] = "0080808666600"; //4
            tableau[6] = "0080808080800";
            tableau[7] = "0080844444400"; //6
            tableau[8] = "0080808080800";
            tableau[9] = "0081111111100"; //8
            tableau[10]= "0080808080800";
            tableau[11]= "0033333333300"; //9
            tableau[12]= "0099999999900"; //9
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 38;
            break;
        case 31:
            tableau[0] = "2060401030705"; //7
            tableau[1] = "9090909090909"; //7
            tableau[2] = "0401020705040"; //6
            tableau[3] = "0909090909090"; //6
            tableau[4] = "7020604010307"; //7
            tableau[5] = "9090909090909"; //7
            tableau[6] = "0104060207050"; //6
            tableau[7] = "0909090909090"; //6
            tableau[8] = "5070206040103"; //7
            tableau[9] = "9090909090909"; //7
            tableau[10]= "0301040602070"; //6
            tableau[11]= "0909090909090"; //6
            tableau[12]= "7050702060401"; //7
            tableau[13]= "9090909090909"; //7
            tableau[14]= "0000000000000";
            nb_brikk = 92;
            break;
        default:
            tableau[0] = "0000000000000";
            tableau[1] = "0000000000000";
            tableau[2] = "0000000000000";
            tableau[3] = "0000000000000";
            tableau[4] = "0000000000000";
            tableau[5] = "0000000000000";
            tableau[6] = "0000000000000";
            tableau[7] = "0000000000000";
            tableau[8] = "0000000000000";
            tableau[9] = "0000000000000";
            tableau[10]= "0000000000000";
            tableau[11]= "0000000000000";
            tableau[12]= "0000000000000";
            tableau[13]= "0000000000000";
            tableau[14]= "0000000000000";
            nb_brikk = 0;
            break;
      } //fin du switch;
      char c;
      for (a=0;a<h;a++)
      {
          for (b=0;b<l;b++)
          {
            c = tableau[a].charAt(b);
            Briques[a][b] = getImage(getDocumentBase(),"b" + c + ".gif");
            prepareImage(Briques[a][b], this);
            switch(c)
            {
               case '0':Nb_Coups[a][b] = 0; break;
               case '1':Nb_Coups[a][b] = 1; break;
               case '2':Nb_Coups[a][b] = 1; break;
               case '3':Nb_Coups[a][b] = 1; break;
               case '4':Nb_Coups[a][b] = 1; break;
               case '5':Nb_Coups[a][b] = 1; break;
               case '6':Nb_Coups[a][b] = 1; break;
               case '7':Nb_Coups[a][b] = 1; break;
               case '8':Nb_Coups[a][b] = 65535; break;
               case '9':Nb_Coups[a][b] = 2; break;
               case 'A':Nb_Coups[a][b] = 1; break;
            }
         }
      }

      repaint();
    } // find de charger niveau
    //=========================================================================================\\    
    //gestion de la souris
    public void mouseClicked( MouseEvent m ) {}
    public void mousePressed( MouseEvent m ) 
    {
        if ( niveau == 0 )
        {
               niveau=1;
               ChargerNiveau(niveau);
               repaint();   
               Score = 0;             
        }
        else if ( vie != 0 ) { est_lance = true; }
        else //Fin de la partie
        { 
            vie = 4;
            niveau=1;
            Score = 0;
            ChargerNiveau(niveau);
            repaint(); 
        }
    }
    public void mouseReleased( MouseEvent m ) {}
    public void mouseEntered( MouseEvent m ){setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));}
    public void mouseExited( MouseEvent m ) {}
    // Gestion des mouvements de la souris
    public void mouseDragged(MouseEvent e) {}
    public void mouseMoved(MouseEvent e) 
    { 
        position_raquette =(int) e.getX() - raquette.getWidth(this) / 2; 
        if (position_raquette < 15) { position_raquette = 15; }
        else if (position_raquette > (535 - raquette.getWidth(this))) { position_raquette = 535 - raquette.getWidth(this);}
        if (( ! est_lance) && ( ! NoOneCanCheatLikeIDo))
        {
            if ( position_balle_x > (position_raquette + (raquette.getWidth(this) - 5) ))
            { position_balle_x = position_raquette + raquette.getWidth(this) -5; }
            else if ( position_balle_x < (position_raquette + 5))
            { position_balle_x = position_raquette + 5;}
            position_balle_x = position_raquette + delta_x;
            position_balle_y = getSize().height - pos_init_balle;
        }
        else if (NoOneCanCheatLikeIDo)
        { 
            position_balle_x = e.getX() -10;
            position_balle_y = e.getY() -10;
        }
        repaint();    
    }
    //=========================================================================================\\    
    //gestion du clavier
    public void keyPressed( KeyEvent k )
    {
        int kc;
        if (niveau != 0)
        {
            kc = k.getKeyCode();
            switch(kc)
            {
                case KeyEvent.VK_PAGE_UP:    niveau++; if (niveau > max_niv) { niveau = 1; } ChargerNiveau(niveau); break;
                case KeyEvent.VK_PAGE_DOWN:  niveau--; if (niveau < 1 ) { niveau = max_niv; } ChargerNiveau(niveau); break;
                case KeyEvent.VK_LEFT:       position_raquette = position_raquette - pas ; repaint(); break; //BOF
                case KeyEvent.VK_RIGHT:      position_raquette = position_raquette + pas ; repaint(); break; //BOF
                case KeyEvent.VK_ESCAPE:     est_lance = false; delta_x = 40; repaint(); dx = Math.abs(dx); dy = Math.abs(dy) * -1; break; 
                case KeyEvent.VK_L: Opt_X = 260; Opt_Y = 60; Opt_Num = 0; break;
                case KeyEvent.VK_N: Opt_X = 260; Opt_Y = 60; Opt_Num = 1; break;
                case KeyEvent.VK_V: Opt_X = 260; Opt_Y = 60; Opt_Num = 3; break;
                case KeyEvent.VK_C: Opt_X = 260; Opt_Y = 60; Opt_Num = 2; break;
                case KeyEvent.VK_X: if (NoOneCanCheatLikeIDo) {NoOneCanCheatLikeIDo = false;} else {NoOneCanCheatLikeIDo = true;} est_lance = true; break;
            }
            repaint();
        }
    
    }
    public void keyReleased( KeyEvent k ) {}
    public void keyTyped( KeyEvent k ) {}
    //=========================================================================================\\    
    //dessiner
    public void paint(Graphics g)
    {
        int a,b;    
        char c;
//=============>Dessiner le fond
        g.drawImage(fond,0,0,this);

        if ( niveau != 0 ) 
        {
//=============>Dessiner les vies
            for(a = 0;a < vie-1; a++) { g.drawImage(vies[a], (a*52) + 20 , getSize().height -20, this); }
//=============>Dessiner la raquette
            g.drawImage(raquette, position_raquette, getSize().height - 40, this);
            fin_niveau = true;
        
//=============>Dessiner les briques
            for(a=0;a<h;a++){for(b=0;b<l;b++)
            {
                    if ( Nb_Coups[a][b] > 0)
                    {
                        g.drawImage(Briques[a][b], 15 + b*40, 35 + a*20, this);
                        if ( nb_brikk != 0 ) { fin_niveau = false; }
                    } //Fin if
            }} //Fin des FOR
           
//=============>Dessiner la balle
           if (vie != 0) 
           {
               g.drawImage(balle, position_balle_x, position_balle_y, this);
               if (fin_niveau) 
               { 
                   niveau++; 
                   if (niveau > max_niv) { niveau = 1; }
                   ChargerNiveau(niveau);
                   est_lance = false;   
               }//fin fin_niveau;           
            } 
            else 
//=============>Dessiner FIN DE LA PARTIE
            {
               g.setColor(Color.white);
               g.drawImage(gameover,0,150,this);
            } //Fin du else 
//=============>Dessiner le Score
            String s = new String();
            s = String.valueOf(Score);
            for (a = 0; a <= s.length()-1 ; a++) 
            {         
                b = (int) s.charAt(a)-48;
                g.drawImage(Num_Score[b], 20 + (a*16), 5, this);
                int r,t;
                for (r = 0; r < h ; r++) { for(t = 0; t < l; t++) 
                {
                     if ( flash[r][t] )
                     {
                         Briques[r][t] = getImage(getDocumentBase(), "B8.gif");
                         prepareImage(Briques[r][t], this);
                         flash[r][t] = false;
                     }
               }}//Fin du For r
            } //Fin du for a
//=============>Dessiner les options;
        if ( Opt_X != 0 ) 
        {
            g.drawImage(Opt[Opt_Num],Opt_X,Opt_Y,this);
            Opt_Y++;
            if ( Opt_Y > 415 ) { Opt_X = 0; Opt_Y = 0; }
        }

        }//Fin du If niveau
        else
        {    
            g.drawImage(raquette,640,480,this);
            raquette = getImage(getDocumentBase(), "Rakkkkette.gif");
            g.drawImage(raquette,640,480,this);
            raquette = getImage(getDocumentBase(), "RaKette.gif");
        }
        
    }//Fin du paint
    //=========================================================================================\\    
    //updtater
    public void update(Graphics g)
    {
        if (offScreen == null)  { offScreen = createImage(getSize().width, getSize().height); }
        Graphics offScr = offScreen.getGraphics();
        paint(offScr);
        g.drawImage(offScreen,0,0,this);
    }           
    //=========================================================================================\\
    //Initialisation
    public void init()
    {
       int a;
       addMouseListener(this);
       addKeyListener(this);
       addMouseMotionListener(this);
       jouer = new Thread(this);
       jouer.start();
       l        = 13;
       h        = 15;
       Score    = 0;
       dx       = 2;
       dy       = -2;
       niveau   = 0;
       max_niv  = 32;
       pas      = 20;
       vie      = 4;
       Opt_X    = 0;
       Opt_Y    = 0;
       NoOneCanCheatLikeIDo = false;
       fond     = getImage(getDocumentBase(), "apanoid.jpg");
       raquette = getImage(getDocumentBase(), "raKette.gif");
       balle    = getImage(getDocumentBase(), "balle.gif");
       gameover = getImage(getDocumentBase(), "gameover.jpg");
       Opt[0]   = getImage(getDocumentBase(), "Opt_L.jpg");
       Opt[1]   = getImage(getDocumentBase(), "Opt_N.jpg");
       Opt[2]   = getImage(getDocumentBase(), "Opt_C.jpg");
       Opt[3]   = getImage(getDocumentBase(), "Opt_U.jpg");
       for (a=0; a<4; a++) { prepareImage(Opt[a], this); }
       prepareImage(fond, this);
       prepareImage(raquette, this);
       prepareImage(balle, this);
       prepareImage(gameover, this);
       for (a = 0; a < 10 ; a++) { vies[a] = getImage(getDocumentBase(), "vie.gif"); prepareImage(vies[a], this); }
       est_lance = false;       
       for (a = 0; a < 10 ; a++) { Num_Score[a] = getImage(getDocumentBase(), String.valueOf(a+48) + ".JPG"); prepareImage(Num_Score[a], this);}      
    }
    //=========================================================================================\\
    public void AlerteKollision()
    {
        int a,b,u,v,cpt;
        int m,n,w;
        int d,e,f,g;
        char c;
         
        for (cpt=0;cpt<4;cpt++)
        {
            switch(cpt)
            {
                case 0:u = position_balle_x+10; v = position_balle_y; break;
                case 1:u = position_balle_x; v = position_balle_y +10; break;
                case 2:u = position_balle_x +20; v = position_balle_y +10; break;
                default:u = position_balle_x +10; v = position_balle_y+20 ; break;
            }
            
            //=====>Tout d'abord, les briques
            for(a=0;a<h;a++)
            {
                for(b=0;b<l;b++) 
                {
                     c = tableau[a].charAt(b);
                     if (c != '0')
                    {
                         m = 15 + b*40; //position verticale
                         n = 35 + a*20; //position horizontale
                         if ( ((u+dx >= m) && (u+dx <= m+40)) &&
                              ((v+dy >= n) && (v+dy <= n+20)) && 
                              ((Nb_Coups[a][b] > 0 )) )
                             { 
                                 Nb_Coups[a][b]--;
                                 switch (cpt)
                                 {
                                     case 0:dy=-dy;break;
                                     case 1:dx=-dx;break;
                                     case 2:dx=-dx;break;
                                     case 3:dy=-dy;break;
                                 }
                                 if ( c == '9' ) { Briques[a][b] = getImage(getDocumentBase(), "B9_.gif"); }
                                 if ( c == '8' ) { Briques[a][b] = getImage(getDocumentBase(), "B8_.gif"); flash[a][b] = true; }
                                 if (Nb_Coups[a][b] == 0) 
                                 {
                                      nb_brikk--; 
                                      if ( c == '9' ) { Score += 200; }
                                      else { 
                                          Score += 100;
                                          if (Opt_X == 0)
                                          {
                                              w = (int) (Math.random() * 50);
                                              switch(w)
                                              {
                                                  case 1: Opt_X = m; Opt_Y = n; Opt_Num = 1; break;
                                                  case 2: Opt_X = m; Opt_Y = n; Opt_Num = 3; break;
                                                  case 3: Opt_X = m; Opt_Y = n; Opt_Num = 0; break;
                                                  case 4: Opt_X = m; Opt_Y = n; Opt_Num = 0; break;
                                                  case 5: Opt_X = m; Opt_Y = n; Opt_Num = 0; break;
                                                  case 7: Opt_X = m; Opt_Y = n; Opt_Num = 2; break;
                                                  case 8: Opt_X = m; Opt_Y = n; Opt_Num = 2; break;
                                                  case 9: Opt_X = m; Opt_Y = n; Opt_Num = 2; break;
                                                  default: Opt_X = 0; Opt_Y = 0; break;
                                              } //fin switch
                                          } //fin si opt_x
                                        }//fin Else
                                      } //fin Nbcoups
                             } //fin if taper brique
                    }//fin if c != 0
                 }// fin du for b
             }//fin du for a
             //=====>Ensuite, la raquette
             if ((u > position_raquette) && 
                 (u < position_raquette + raquette.getWidth(this)) && 
                 ( ( v > getSize().height - 35) && 
                 ( v < getSize().height - 32 )))
                 {
                    r_1 = (int) raquette.getWidth(this) / 4;
                    r_2 = (int) raquette.getWidth(this) / 2;
                    r_3 = (int) ( raquette.getWidth(this) / 4 ) * 3;

                    d = r_1 + position_raquette;
                    e = r_2 + position_raquette;
                    f = r_3 + position_raquette;
                    
                    if (u < d ) { dy = -1; dx = -3; }
                    else if ((u >= d ) && ( u < e )) { dy = -2; dx = -2; }
                    else if ((u >= e ) && ( u < f )) { dy = -2; dx = 2; }
                    else if (u >= f ){ dy = -1; dx = 3; }
                    if (toujours_coller) { est_lance = false; }
                    delta_x = (position_balle_x - position_raquette) +10;
                 }
             //=====>Enfin, les bords
             if (u+dx+1 >= 535) dx=-dx;
             if (u+dx-1 <= 15  ) dx=-dx;
        
             if  (v+dy-1 <= 26) dy=-dy;
             if (v+dy+1 > 415 ) 
             {
                  est_lance = false;
                  dx = Math.abs(dx); 
                  dy = Math.abs(dy) * -1;
                  position_raquette = (int) (getSize().width / 2) - (raquette.getWidth(this) /2);
                  position_balle_x = (int) (getSize().width / 2 ) - 10;
                  position_balle_y = getSize().height - pos_init_balle;
                  toujours_coller = false;
                  raquette = getImage(getDocumentBase(), "Rakette.gif");
                  vie--;
                  Opt_X = 0; Opt_Y = 0;
                  delta_x = 40;
                  Score = 0;
                  repaint();
              } //fin du if > 415
        } 
        
        
        
        repaint();
    } //fin alerte
    //=========================================================================================\\
    public void run()
    {
         
        while(true)
        {
            if (est_lance)
            {
                position_balle_x += dx;
                position_balle_y += dy;
                AlerteKollision();
            }
        if (Opt_X != 0)
        {
            if (((Opt_X+20 > position_raquette) && (Opt_X <= position_raquette + raquette.getWidth(this)) &&
                ((Opt_Y+20 > getSize().height - 40) && (Opt_Y <= getSize().height - (40 - raquette.getHeight(this))))))
            {
                Opt_X = 0;
                Opt_Y = 0;
                switch(Opt_Num)
                {
                    case 0: 
                        toujours_coller = false; 
                        est_lance = true; 
                        raquette = getImage(getDocumentBase(), "Rakkkkette.gif");  
                        if ((position_raquette + raquette.getWidth(this)) > 535) { position_raquette = 535-raquette.getWidth(this); }
                        break;
                    case 1: 
                        niveau ++;
                        ChargerNiveau(niveau);
                        est_lance = false;
                        toujours_coller = false;
                        raquette = getImage(getDocumentBase(), "Rakette.gif");
                        break;
                    case 2:
                        toujours_coller = true;
                        raquette = getImage(getDocumentBase(), "Rakette.gif");
                        break;
                    case 3:
                        if (vie < 9) 
                        {
                            vie++;
                            toujours_coller = false;
                            est_lance = true;
                            raquette = getImage(getDocumentBase(), "Rakette.gif"); 
                        }
                        break; 
                }
            }
        
        } //fin opt_x

            repaint();
            try {jouer.sleep(5);}
            catch(InterruptedException e){}; 
        }
    }
} //fin grosse classe

Conclusion :


Ce programme restera certainement définitivement dans son état actuel, j'ai fini mes études il y a bien longtemps déjà.
Quelques bugz subsistent pour les courageux qui veulent s'y atteler, notament la bille qui a des sautes d'humeur (vitesse inégale selon la disponibilité du processeur sur ma machine) et un effet de bord génant qui coince la bille dans le décor ou dans les briques indestructibles.

Pour les plus fénéants j'ai laissé les codes pour tricher directement sur la page HTML

Merci de votre indulgence, car c'est, à ce jour, le seul programme JAVA que j'ai jamais écris.

Je tiens à remercier mon prof, tout de même, Mr Bruno Genty, talentueux développeur à Devil Desing (http://devildesign.free.fr/) ;-)

Codes Sources

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.