k Eric, im going to trt to tackle as many problems as possible.
first, the "flicker problem."
what you need to do is create a buffered image. aquire a Graphics2D object that paints onto the buffered image, then set the paint method.
import java.awt.image.BufferedImage;//import statement
BufferedImage bi = new BufferedImage(xDimension,Ydimension,BufferedImage.TYPE_INT_RGB);//make a back buffer. the 3'ed parameter is just a constent, just copy that word for word
Graphics2D g2d = bi.createGraphics();//where your painting on to
public void paint(Graphics g)
{
g2d.drawImage(image,x,y,this);//draw your image on to the buffered image
g.drawImage(bi,0,0,this);//draw the buffered image onto the screen
} as far as the image over createing all the squares. if you want to use you images the only problem is... they're rectangles, not wacky shapes. you would have to make the polygon points to represent the collisions. the thing that would be easiest is to construct a 2d array that holds int's to represent one type of shape, then over time would transpose itself down.
just tying to throw some ideas your way to make coding easier. if u need anymore help im happy to share ideas and code.