Description

Cette librairie vous permet de dessiner facilement sur une fenêtre graphique. Vous pouvez télécharger la dernière version ici :

  fungraphics-v1.5.1.jar (66.9 KiB)

Installation

Les étapes suivantes doivent être réalisées avant de pouvoir exécuter les programmes d’exemple ci-dessous:

  1. Une fois téléchargé, copier le fichier fungraphics_<version>.jar dans le dossier racine de votre projet (au même niveau que le dossier “src” et “bin”).
  2. Dans Eclipse, sélectionner le dossier du projet, puis appuyer sur F5 (ou File->Refresh) pour rendre visible le fichier ajouté.
  3. Bouton droite sur le fichier fungraphics_<version>.jar, puis sélectionner Build Path->Add to Build Path.

Documentation

Vous pouvez accéder à la documentation électronique (la Javadoc) ici : FunGraphics Javadoc.

Un exemple simple

Vous trouverez de nombreux exemples dans le répertoire hevs.samples de l’archive jar. Pour information, une manière très simple de créer une fenêtre est de suivre le code suivant :

import hevs.graphics.FunGraphics;
import java.awt.Color;

/**
 * Draws a simple circle on the screen
 * @author Pierre-André Mudry
 */
public class SimpleShapes {

  public static void main(String[] args) {
    // Instantiate a new window
    FunGraphics s = new FunGraphics(300, 300, "Test drawing simple shapes");

    // Draw simple shapes
    s.setColor(Color.black);
    s.drawCircle(100, 100, 10);
    s.setColor(Color.blue);
    s.drawFillRect(20, 20, 10, 10);
  }
}

Liaison avec les touches

Si vous désirez réaliser une application graphique qui réagisse à l’appui de touches comme la barre d’espacement ou les flèches de direction, vous pouvez suivre l’exemple suivant :

import hevs.graphics.FunGraphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
 * This class demonstrate how to implement keyboard events
*  using the FunGraphics library.
 */
public class Demo {

  int offset = 0;

  FunGraphics funGraphics;

  public Demo() {
    // Inits the graphic window
    funGraphics = new FunGraphics(640, 480);

    // Do something when a key has been pressed
    funGraphics.setKeyManager(new KeyAdapter() {

      // Will be called when a key has been pressed
      public void keyPressed(KeyEvent e) {
        if(e.getKeyChar() == 'a'){
          System.out.println("a pressed");
        }

        if(e.getKeyCode() == KeyEvent.VK_RIGHT){
          offset++;
        }
      }
    });

    while(true)
    {
      funGraphics.clear();

      //draw our object
      funGraphics.drawRect(50+offset*2, 50+offset*2, 75, 75);

      //refresh the screen at 60 FPS
      funGraphics.syncGameLogic(60);
    }
  }

  public static void main(String[] args) {
    Demo d = new Demo();
  }
}

 

Jouer de la musique

Pour player des sons, vous pouvez utiliser la méthode suivante qui permet d’accéder à des fichier WAV uniquement.

import java.net.URL;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class AudioPlayer {
  public Clip audioClip;

  AudioPlayer(String path) {
    try {
      // Create audio input
          URL url = this.getClass().getClassLoader().getResource(path);
      AudioInputStream audioStream = AudioSystem.getAudioInputStream(url);
      // Obtain clip
      audioClip = (Clip) AudioSystem.getClip();
      audioClip.open(audioStream);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  void play() {
    // Open stream and play
    try {
      if(!audioClip.isOpen())
        audioClip.open();
      audioClip.stop();
      audioClip.setMicrosecondPosition(0);
      audioClip.start();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

 

Jouer de la musique, format mp3

Pour jouer de la musique dans votre jeu sous forme de fichier MP3 par exemple, il est nécessaire d’importer certaines classes provenant de JavaFX. Vous pouvez vous inspirer de l’exemple suivant :

package hevs.graphics.samples.animations;

import java.awt.Color;

import hevs.graphics.FunGraphics;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

/**
 * Show the usage of a media player that can also play MP3 files
 * 
 * @author Pierre-André Mudry
 * @date January 2018
 */

class AudioPlayer {
  public MediaPlayer player;
  AudioPlayer(String fileName) {
    new JFXPanel(); // Required to boot the JavaFX thingy
    Media hit = new Media(getClass().getResource(fileName).toString());
    player = new MediaPlayer(hit);
  }
}

public class MusicLoop {

  public static void main(String[] args) {
    FunGraphics display = new FunGraphics(400, 400, "Play some music");

    int direction = 1;
    int i = 1;

    // Let's play some music
    AudioPlayer a = new AudioPlayer("/Blues-Loop.mp3");
    a.player.play();

    while (true) {
      // To avoid blinking
      synchronized (display.frontBuffer) {

        // Erase previous content
        display.clear(Color.white);

        // Display an animated circle
        display.setColor(Color.yellow);
        display.drawFilledCircle(100, 100, 100 + i);
        display.setColor(Color.black);
        display.setPenWidth(4.0f);
        display.drawCircle(100, 100, 100 + i);
        direction = i == 0 || i == 100 ? direction * -1 : direction;
        i = i + direction;
      }
      display.syncGameLogic(60);
    }
  }
}