Tujuan
● Setelah mempelajari modul ini peserta diharapkan dapat:
● Mengetahui jenis-jenis format image
● Mengetahui cara meload file image
● Memuat gambar strip atau gambar bernomor
2. Latar Belakang
Inti dari game 2 dimensi sebenarnya terletak pada image, dimana image yang telah
dibuat ataupun diedit dari program seperti adobe photoshop, corel draw dll, kemudian
diurutkan menjadi satu bentuk. Sebagai contoh sebuah pesawat yang untuh sampai pada
pesawat yang hancur atau meledak dikumpulkan menjadi satu kesatuan dan akan dipanggil
saat dibutuhkan (apabila terkena bom maka gambar pesawat yang ditampilkan meledak)
ilustrasinya seperti itu dan masih banyak lagi yang lain sesuai dengan game yang anda buat.
3. Percobaan
Percobaan 1: Membuat interface ImageSequenceListener
package jeni6;
package jeni6;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import java.io.*;
import javax.imageio.*;
public ImageManager()
{ initManager(); }
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
path=IMAGE_DIR;
}
if (imagesMap.containsKey(name)) {
System.out.println( "Error: " + name + "sudah digunakan");
return false;
}
String imFnm;
BufferedImage bi;
ArrayList imsList = new ArrayList();
int loadCount = 0;
if (imagesMap.containsKey(prefix)) {
System.out.println( "Error: " + prefix + "sudah digunakan");
return 0;
}
if (number <= 0) {
System.out.println("Error: Number <= 0: " + number);
imFnm = prefix + postfix;
if ((bi = loadImage(imFnm)) != null) {
loadCount++;
imsList.add(bi);
System.out.println(" disimpan " + prefix + "/" + imFnm);
}
}
else { // load prefix + <i> + postfix, where i = 0 to <number-1>
System.out.print(" Menambahkan " + prefix + "/" +
prefix + "*" + postfix + "... ");
for(int i=0; i < number; i++) {
imFnm = prefix + i + postfix;
if ((bi = loadImage(imFnm)) != null) {
loadCount++;
imsList.add(bi);
if (imagesMap.containsKey(name)) {
System.out.println( "Error: " + name + "sudah digunakan");
return false;
}
BufferedImage bi = loadImage(fnm);
if (bi != null) {
ArrayList imsList = new ArrayList();
imsList.add(bi);
imagesMap.put(name, imsList);
System.out.println(" disimpan " + name + "/" + fnm);
return true;
}
else
return false;
}
String imFnm;
BufferedImage bi;
ArrayList imsList = new ArrayList();
int loadCount = 0;
if (imagesMap.containsKey(prefix)) {
System.out.println( "Error: " + prefix + "sudah digunakan");
return 0;
}
if (number <= 0) {
System.out.println("Error: Number <= 0: " + number);
imFnm = prefix + postfix;
if ((bi = loadImage(imFnm)) != null) {
loadCount++;
imsList.add(bi);
System.out.println(" disimpan " + prefix + "/" + imFnm);
}
}
else { // load prefix + <i> + postfix, where i = 0 to <number-1>
if (loadCount == 0)
System.out.println("Tidak ada image dengan prefix " + name);
else
imagesMap.put(name, imsList);
return loadCount;
} // end of loadStripImages()
BufferedImage stripIm;
if ((stripIm = loadImage(fnm)) == null) {
System.out.println("Return null");
return null;
}
stripGC = strip[j].createGraphics();
stripGC.setComposite(AlphaComposite.Src);
stripGC.drawImage(stripIm,0,0, imWidth,imHeight,
fx,fy, fx+imWidth,fy+imHeight,null);
stripGC.dispose();
}
}
return strip;
} // end of loadStripImageArray()
return imsList;
}
//
g2d.drawImage(im,0,0,null);
g2d.dispose();
return copy;
}
catch(IOException e) {
System.out.println("Gagal memuat " +
path + "/" + fnm + ":\n" + e);
return null;
}
}
}
import java.awt.image.*;
public ImageAnimator(String nm, int ap, double d,boolean isr, ImageManager il)
{
imName = nm;
animTotalTime = 0L;
if (!imsMgr.isLoaded(imName)) {
System.out.println(imName + " Tidak diketahui oleh imageManager");
numImages = 0;
imPosition = -1;
ticksIgnored = true;
}
else {
numImages = imsMgr.numImages(imName);
imPosition = 0;
ticksIgnored = false;
showPeriod = (int) (1000 * seqDuration / numImages);
}
}
imPosition = imPosn;
package jeni6;
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
Image Background,JeniOpaque,JeniTransparant,JeniTranscluent,JeniAATranscluent;
BufferedImage im;
public ImageTest1(){
super("ImageTest");
this.setSize(420,500);
try{
im = ImageIO.read(getClass().getResource("images/Background.png"));
Background =
ImageIO.read(getClass().getResource("images/Background.png"));
JeniOpaque=
ImageIO.read(getClass().getResource("images/JeniOpaque.png"));
JeniTransparant=
ImageIO.read(getClass().getResource("images/JeniTransparant.png"));
JeniTranscluent=
ImageIO.read(getClass().getResource("images/JeniTranscluent.png"));
JeniAATranscluent=
ImageIO.read(getClass().getResource("images/JeniAATranscluent.png"));
}catch(IOException e){
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
package jeni6;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;
import java.io.*;
import java.text.DecimalFormat;
public ImagesTest2()
{
setBackground(Color.white);
setPreferredSize( new Dimension(PWIDTH, PHEIGHT) );
try{
imsLoader.loadNumImages("25_04_.gif",15);
imsLoader.loadNumImages("numbers.gif",6);
imsLoader.loadStripImages("boom.png", 5,1);
imsLoader.loadStripImages("ball.png", 8,4);
imsLoader.loadStripImages("cats.gif",6,1);
}catch (Exception e){System.out.println(e.toString());}
initImages();
t=new Thread(this);
catsPlayer.updateTick();
kaboomPlayer.updateTick();
jeballPlayer.updateTick();
ttPanel.start();
imagesUpdate();
repaint();
}
}