Nos partenaires et nous-mêmes utilisons différentes technologies, telles que les cookies, pour personnaliser les contenus et les publicités, proposer des fonctionnalités sur les réseaux sociaux et analyser le trafic. Merci de cliquer sur le bouton ci-dessous pour donner votre accord. Vous pouvez changer d’avis et modifier vos choix à tout moment. Informations RGPD
package TM; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import java.awt.Component; import java.awt.Container; import java.awt.Point; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MidiSystem; import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.Sequence; import javax.sound.midi.Sequencer; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.LinkedList; import java.util.Timer; import java.util.TimerTask; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.imageio.ImageReader; import java.awt.Component; import java.awt.Container; import java.awt.GridLayout; import java.awt.Point; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MidiSystem; import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.Sequence; import javax.sound.midi.Sequencer; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Timer; import java.util.TimerTask; import javax.swing.AbstractButton; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class fenetrePrincipale { //PRINCIPAUX COMPOSANTS public static boolean begin = true; JButton mario = new JButton(); int marioX = mario.getX(); int marioY = mario.getY(); JButton ennemi[] = new JButton[25]; int eX[] = new int[25]; int eY[] = new int[25]; JButton peach = new JButton(); int peachX = peach.getX(); int peachY = peach.getY(); JButton bas = new JButton(); int basY = bas.getY(); JButton etage1 = new JButton(); int etage1Y = etage1.getY(); JButton etage2 = new JButton(); int etage2Y = etage2.getY(); JButton bloc[] = new JButton[69]; int bX[] = new int[69]; int bY[] = new int[69]; JButton pieces = new JButton(); JButton vies = new JButton(); JButton countdown = new JButton(); JButton Score = new JButton(); int secondes; int totalPieces = 0; int vie = 3; int score = 0; int w = 19; int h = 20; int wE = 17; int hE = 16; int wP = 24; int hP = 39; int wPi = 12; int hPi = 12; int wC = 20; int hC = 20; int wT = 20; int hT = 33; int wB = 16; int hB = 16; int i; int j; boolean tortueDebout = true; boolean marioDroite; boolean marioToucheEnnemi = false; boolean marioToucheTortue = false; boolean marioTouchePiece = false; boolean marioToucheChampi = false; boolean marioToucheBlocDroite = false; boolean marioToucheBlocGauche = false; boolean marioATerre = true; boolean marioPetit = true; boolean marioBas = true; boolean marioEtage1; boolean marioEtage2; Point p = mario.getLocation(); //METHODE DE LA FENETRE PRINCIPALE (CONSTRUCTEURS) public fenetrePrincipale() { JFrame fenetre = new JFrame(); JPanel panneauPrincipal = new JPanel(){ /** * */ private static final long serialVersionUID = 1L; protected void paintComponent(Graphics g) //DESSINE L'IMAGE DE FOND { super.paintComponent(g); ImageIcon m = new ImageIcon("fondBleu.jpg"); Image monImage = m.getImage(); g.drawImage(monImage, 0, 0,this); } }; panneauPrincipal.setLayout(null); fenetre.setTitle("Super Mario 2012"); fenetre.setSize(1680, 1050); fenetre.add(panneauPrincipal); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true); pieces.setText("Total de pieces:" +totalPieces); pieces.setBounds(730,10,150,50); vies.setText("Vies restantes:" +vie); vies.setBounds(940,10,150,50); Score.setText("score:" +score); Score.setBounds(400,10,100,50); countdown.setBounds(560,10,150,50); mario.setIcon(new ImageIcon("petit normal.png")); mario.setBounds(10,904,w,h); marioX = mario.getX(); marioY = mario.getY(); marioDroite = true; p = mario.getLocation(); eX[0] = 50; eX[1] = 150; eX[2] = 250; eX[3] = 350; eX[4] = 450; eX[5] = 550; eX[6] = 650; eX[7] = 750; eX[8] = 850; eX[9] = 50; eX[10] = 150; eX[11] = 250; eX[12] = 350; eX[13] = 450; eX[14] = 550; eX[15] = 650; eX[16] = 750; eX[17] = 50; eX[18] = 150; eX[19] = 250; eX[20] = 350; eX[21] = 450; eX[22] = 550; eX[23] = 650; eX[24] = 750; eY[0] = 908; eY[1] = 908; eY[2] = 908; eY[3] = 908; eY[4] = 908; eY[5] = 908; eY[6] = 908; eY[7] = 908; eY[8] = 908; eY[9] = 624; eY[10] = 624; eY[11] = 624; eY[12] = 624; eY[13] = 624; eY[14] = 624; eY[15] = 624; eY[16] = 624; eY[17] = 340; eY[18] = 340; eY[19] = 340; eY[20] = 340; eY[21] = 340; eY[22] = 340; eY[23] = 340; eY[24] = 340; /*for (i=0; i<0; i++) { ennemi[i] = new JButton(); ennemi[i].setIcon(new ImageIcon("mŽchant.png")); ennemi[i].setFocusable(false); ennemi[i].setBounds(eX[i], eY[i] , wE, hE); eX[i] = ennemi[i].getX(); eY[i] = ennemi[i].getY(); panneauPrincipal.add(ennemi[i]); } */ peach.setIcon(new ImageIcon("peach.png")); peach.setBounds(1640,318,wP, hP); peachX = peach.getX(); peachY = peach.getY(); bas.setBounds(0,924,1700,20); bas.setIcon(new ImageIcon("bas.png")); basY = bas.getY(); etage1.setBounds(0,640,1680,10); etage1.setIcon(new ImageIcon("etage.png")); etage1Y = etage1.getY(); etage2.setBounds(0,356,1680,10); etage2.setIcon(new ImageIcon("etage.png")); etage2Y = etage2.getY(); bX[0] = 105; bX[1] = 121; bX[2] = 137; bX[3] = 153; bX[4] = 272; bX[5] = 288; bX[6] = 302; bX[7] = 318; bX[8] = 334; bX[9] = 350; bX[10] = 366; bX[11] = 382; bX[12] = 570; bX[13] = 586; bX[14] = 586; bX[15] = 602; bX[16] = 602; bX[17] = 602; bX[18] = 618; bX[19] = 618; bX[20] = 618; bX[21] = 618; bX[22] = 634; bX[23] = 634; bX[24] = 634; bX[25] = 634; bX[26] = 634; bX[27] = 1320; bX[28] = 1336; bX[29] = 1336; bX[30] = 1352; bX[31] = 1352; bX[32] = 1352; bX[33] = 1368; bX[34] = 1368; bX[35] = 1384; bX[36] = 135; bX[37] = 175; bX[38] = 215; bX[39] = 255; bX[40] = 295; bX[41] = 335; bX[42] = 375; bX[43] = 415; bX[44] = 431; bX[45] = 447; bX[46] = 455; bX[47] = 471; bX[48] = 487; bX[49] = 495; bX[50] = 527; bX[51] = 550; bX[52] = 590; bX[53] = 630; bX[54] = 670; bX[55] = 710; bX[56] = 750; bX[57] = 790; bX[58] = 830; bX[59] = 870; bX[60] = 910; bX[61] = 950; bX[62] = 1000; bX[63] = 1000; bX[64] = 1084; bX[65] = 1084; bX[66] = 1168; bX[67] = 1168; bX[68] = 1300; bY[0] = 884; bY[1] = 884; bY[2] = 884; bY[3] = 884; bY[4] = 908; bY[5] = 908; bY[6] = 908; bY[7] = 908; bY[8] = 908; bY[9] = 908; bY[10] = 908; bY[11] = 908; bY[12] = 908; bY[13] = 908; bY[14] = 892; bY[15] = 908; bY[16] = 892; bY[17] = 876; bY[18] = 908; bY[19] = 892; bY[20] = 876; bY[21] = 860; bY[22] = 908; bY[23] = 892; bY[24] = 876; bY[25] = 860; bY[26] = 844; bY[27] = 908; bY[28] = 908; bY[29] = 892; bY[30] = 908; bY[31] = 892; bY[32] = 876; bY[33] = 908; bY[34] = 892; bY[35] = 908; bY[36] = 624; bY[37] = 575; bY[38] = 540; bY[39] = 575; bY[40] = 540; bY[41] = 505; bY[42] = 470; bY[43] = 435; bY[44] = 508; bY[45] = 585; bY[46] = 435; bY[47] = 508; bY[48] = 600; bY[49] = 435; bY[50] = 624; bY[51] = 410; bY[52] = 410; bY[53] = 410; bY[54] = 410; bY[55] = 410; bY[56] = 410; bY[57] = 410; bY[58] = 410; bY[59] = 410; bY[60] = 410; bY[61] = 410; bY[62] = 624; bY[63] = 608; bY[64] = 624; bY[65] = 608; bY[66] = 624; bY[67] = 608; bY[68] = 624; for (i=0; i<bloc.length; i++) { bloc[i] = new JButton(); bloc[i].setIcon(new ImageIcon("mur.png")); bloc[i].setBounds(bX[i], bY[i] , wB, hB); bX[i] = bloc[i].getX(); bY[i] = bloc[i].getY(); panneauPrincipal.add(bloc[i]); bloc[i].setFocusable(false); } panneauPrincipal.add(peach); panneauPrincipal.add(vies); panneauPrincipal.add(mario); panneauPrincipal.add(etage2); panneauPrincipal.add(bas); panneauPrincipal.add(etage1); panneauPrincipal.add(countdown); panneauPrincipal.add(Score); panneauPrincipal.add(pieces); vies.setFocusable(false); peach.setFocusable(false); etage2.setFocusable(false); etage1.setFocusable(false); bas.setFocusable(false); pieces.setFocusable(false); Score.setFocusable(false); countdown.setFocusable(false); Thread s = new Thread() { public void run() { for (secondes = 100; secondes >= 0; secondes--) { countdown.setText("temps restant:" +secondes); if (secondes == 0) gameOver(); try { Thread.sleep(1000); } catch (InterruptedException e) { } } } }; s.start(); //DEPLACEMENTS DE MARIO mario.addKeyListener(controleMario()); } // public fenetrePrincipale() //METHODE DE FIN (DEFAITE) public void gameOver() { JFrame gameOver = new JFrame(); JPanel panneauGameOver = new JPanel(); panneauGameOver.setLayout(new GridLayout(4,1)); gameOver.setLocationRelativeTo(null); gameOver.setTitle("Game Over"); gameOver.setSize(447, 600); JButton perdu = new JButton("VOUS AVEZ PERDU!"); perdu.setIcon(new ImageIcon("marioDefaite0.jpg")); perdu.setFocusable(false); JButton enregistrer = new JButton(); enregistrer.setIcon(new ImageIcon("marioDefaite1.jpg")); enregistrer.addActionListener(new Action1()); enregistrer.setFocusable(false); JButton recommencer = new JButton(); recommencer.setIcon(new ImageIcon("marioDefaite2.jpg")); recommencer.addActionListener(new Action2()); recommencer.setFocusable(false); JButton quitter = new JButton(); quitter.setIcon(new ImageIcon("marioDefaite3.jpg")); quitter.addActionListener(new Action3()); quitter.setFocusable(false); panneauGameOver.add(perdu); panneauGameOver.add(enregistrer); panneauGameOver.add(recommencer); panneauGameOver.add(quitter); gameOver.add(panneauGameOver); gameOver.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gameOver.setVisible(true); } //METHODE DE FIN (VICTOIRE) public void victoire(){ JFrame victoire = new JFrame(); JPanel panneauVictoire = new JPanel(); panneauVictoire.setLayout(new GridLayout(4,1)); victoire.setTitle("Victoire!"); victoire.setSize(700,933); victoire.setLocationRelativeTo(null); JButton bravo = new JButton(); bravo.setIcon(new ImageIcon("marioVictoire0.jpg")); JButton enregistrer = new JButton(); enregistrer.setIcon(new ImageIcon("marioVictoire1.jpg")); enregistrer.addActionListener(new Action1()); JButton recommencer = new JButton(); recommencer.setIcon(new ImageIcon("marioVictoire2.jpg")); recommencer.addActionListener(new Action2()); JButton quitter = new JButton(); quitter.setIcon(new ImageIcon("marioVictoire3.jpg")); quitter.addActionListener(new Action3()); panneauVictoire.add(bravo); panneauVictoire.add(enregistrer); panneauVictoire.add(recommencer); panneauVictoire.add(quitter); victoire.getContentPane().add(panneauVictoire); victoire.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); victoire.setVisible(true); } class Action1 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { enregistrerScore(); } } class Action2 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { TM.fenetrePrincipale fenetre3 = new fenetrePrincipale(); } } class Action3 implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } } //METHODE POUR ENREGISTRER LE SCORE public void enregistrerScore() { String nom; String chaine =""; String fichier = "meilleurs scores.txt"; //demande le nom du joueur pour les highscores. nom=(String)JOptionPane.showInputDialog("Entrez votre nom:"); try{ InputStream ips=new FileInputStream(fichier); InputStreamReader ipsr=new InputStreamReader(ips); BufferedReader br=new BufferedReader(ipsr); String ligne; while ((ligne=br.readLine())!=null){ chaine+=ligne+"\n"; } br.close(); } catch (Exception e) { System.out.println(e.toString()); } try { FileWriter fw = new FileWriter (fichier); BufferedWriter bw = new BufferedWriter (fw); PrintWriter fichierSortie = new PrintWriter (bw); fichierSortie.println ("\n" +chaine+ "\n" + nom + " a fait " + score + "points"); fichierSortie.close(); } catch (Exception e) { System.out.println(e.toString()); } } //METHODE DU CONTACT public void contact() { //CONTACT MARIO + ENNEMI /*for (i=0;i<0;i++) if ((marioX + w >= eX[i]) //CONTACT PAR LE HAUT AVEC ENNEMI &!(marioX > eX[i] + wE) &(marioY + h >= eY[i]) &!(marioY > eY[i] + hE) &(marioY + h -5 <= eY[i]) &(ennemi[i].isEnabled())) { ennemi[i].setEnabled(false); ennemi[i].setVisible(false); score = score + 50; Score.setText("score:" +score); } if ((marioX + w >= eX[i]) //CONTACT PAR LE COTE AVEC ENNEMI &!(marioX > eX[i] + wE) &(marioY + h >= eY[i]) &!(marioY > eY[i] + hE) &!(marioY + h -5 <= eY[i]) &(ennemi[i].isEnabled())) { if (marioPetit) { marioToucheEnnemi = true; vie--; vies.setText("Vies restantes:" +vie); if (vie == 0) gameOver(); mario.setBounds(10,904,w,h); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); } else { mario.setSize(w,h); if (marioDroite) mario.setIcon(new ImageIcon("petit normal.png")); else mario.setIcon(new ImageIcon("petit normal 2.png")); } } //CONTACT MARIO + PIECE for (i=0; i<XX; i++) if ((marioX + w >= piX[i]) &!(marioX > piX[i] + wPi) &(marioY + h >= piY[i]) &!(marioY > piY[i] + hPi) &(piece.isEnabled())) { piece[i].setEnabled(false); piece[i].setVisible(false); totalPieces++; pieces.setText("Total de pieces:" + totalPieces); if (totalPieces == 10) { totalPieces = 0; vie++; vies.setText("Vies restantes:" +vie); } score = score + 10; Score.setText("score:" +score); } */ //CONTACT MARIO + PEACH if ((marioX + w >= peachX) &!(marioX > peachX + wP) &(marioY + h >= peachY) &!(marioY > peachY + hP)) victoire(); //CONTACT MARIO + TORTUE //CONTACT DEPUIS DESSUS SUR TORTUE DEBOUT /* for (i=0; i<XX; i++) if ((marioX + w >= tX[i]) &!(marioX > tX[i] + wT) &(marioY + h >= tY[i]) &!(marioY > tY[i] + hT) &(marioY + h -5 <= tY[i]) &(tortue.isEnabled()) &(tortueDebout[i])) { tortueDebout[i] = false; tortue[i].setSize(12,12); tortue[i].setIcon(new ImageIcon("carapace.png")); score = score + 50; Score.setText("score:" +score); } if ((marioX + w >= tX[i]) //CONTACT DEPUIS LE COTE AVEC TORTUE DEBOUT &!(marioX > tX[i] + wT) &(marioY + h >= tY[i]) &!(marioY > tortueY + hT) &!(marioY + h -5 <= tY[i]) &(tortue.isEnabled()) &(tortueDebout[i])) { if (marioPetit) { marioToucheTortue = true; vie--; vies.setText("Vies restantes:" +vie); if (vie == 0) gameOver(); mario.setBounds(10,904,w,h); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); } else { if (marioDroite) mario.setIcon(new ImageIcon("petit normal.png")); else mario.setIcon(new ImageIcon("petit normal 2.png")); mario.setSize(w,h); tortue[i].setEnabled(false); tortue[i].setVisible(false); } } if ((marioX + w >= tX[i]) //CONTACT TORTUE CARAPACE &!(marioX > tX[i] + wT) &(marioY + h >= tY[i]) &!(marioY > tY[i] + hT) &(tortue.isEnabled()) &!(tortueDebout[i]) { tortue[i].setEnabled(false); tortue[i].setVisible(false); score = score + 50; Score.setText("score:" +score); } //CONTACT MARIO + CHAMPI for (i=0; i<champi.length; i++) if ((marioX + w >= cX[i]) &!(marioX > cX[i] + wC) &(marioY + h >= cY[i]) &!(marioY > cY[i] + hC) &(champi.isEnabled()) &(marioATerre)) { champi[i].setEnabled(false); champi[i].setVisible(false); if (marioPetit) { if (marioDroite){ marioPetit =false; mario.setLocation(p.x,p.y-12); mario.setIcon(new ImageIcon("gros normal.png")); mario.setSize(19,32); } else { marioPetit =false; mario.setLocation(p.x,p.y-14); mario.setIcon(new ImageIcon("gros normal 2.png")); mario.setSize(20,34); } } else { score = score + 50; Score.setText("score:" +score); } } */ //CHANGEMENT D'ETAGE if ((marioATerre) &(marioX >= 1630) &(marioY>324)) { if (marioBas) { marioBas = false; marioEtage1 = true; } else if (marioEtage1) { marioEtage1 = false; marioEtage2 = true; } mario.setLocation(p.x-1630, p.y-284); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); } //CONTACT BORD GAUCHE if (marioX<=3) { i = 1; if (marioBas) { if (marioPetit) { while (marioY + h < basY) { mario.setLocation(p.x-4, p.y+i); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } marioATerre = false; i++; } } else { while (marioY + 34 < etage2Y) { mario.setLocation(p.x-4, p.y+i); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } marioATerre = false; i++; } } } if (marioEtage1) { if (marioPetit) { while (marioY + h < etage1Y) { mario.setLocation(p.x-4, p.y+i); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } marioATerre = false; i++; } } else { while (marioY + 34 < etage2Y) { mario.setLocation(p.x-4, p.y+i); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } marioATerre = false; i++; } } } if (marioEtage2) { if (marioPetit){ while (marioY + h < etage2Y) { mario.setLocation(p.x-4, p.y+i); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } marioATerre = false; i++; } } else { while (marioY + 34 < etage2Y) { mario.setLocation(p.x-4, p.y+i); marioX = mario.getX(); marioY = mario.getY(); p = mario.getLocation(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } marioATerre = false; i++; } } } marioATerre = true; } } /** * Déplacement de Mario * @param dx déplacement sur les X * @param dy déplacement sur les Y */ private void deplacementMario(int dx, int dy) { double dxy = Math.sqrt(dx*dx+dy*dy); // distance à parcourir LinkedList<Point> chemin = new LinkedList<Point>(); // points à traverser au cours du déplacement int x = mario.getX(), y = mario.getY(); Point r = null; for (double d=0; d<=dxy; d+=0.5) { Point p = new Point((int) (x+d*dx/dxy),(int) (y+d*dy/dxy)); // le prochain point de déplacement if (!p.equals(r)) // s'il s'agit d'un nouveau point on l'ajoute à la liste { chemin.add(p); r = p; } } r = null; // On contrôle que chaque point de déplacement n'est pas sur un obstacle // Au premier obstacle on s'arrête p: for (Point p : chemin) // pour chaque case du chemin { for (int i=0; i<bloc.length; i++) // pour chaque obstacle { if (((bX[i]>=p.x && bX[i]<=p.x+w) // si le bord gauche d'un obstacle est sur le trajet de Mario