Vencendo o Pong!

Olá pessoal, é o seguinte, eu jé tentei fazer isso de algumas formas, aprendi a fazer um placar, para o meu jogo Pong. Mas quando a quantidade de pontos dos jogadores “raquete” 1 ou 2 for 12 (doze), eu, através de ImageIO, quero que o jogo passe uma imagem de “Game Over”, coisa assim.

Segue a classe:

package pong;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import javax.swing.Timer;

@SuppressWarnings("serial")

public class Fundo extends JPanel implements ActionListener {
  
private Image fundo;
private boolean gaming = true;
private Paddleft pad = new Paddleft(); 
private Paddleright pad2 = new Paddleright();
private Ball Ball = new Ball();
private Timer timer;
    
 public Fundo() throws IOException{
       setDoubleBuffered(true);
       setFocusable(true);
       this.addKeyListener(new Fundo.KeyboardAdapter());
    
        try {
			fundo = ImageIO.read(getClass().getResource(
					"backg.png"));
		} catch (IOException e) {
			throw new RuntimeException(
					"A imagem de fundo não pode ser carregada!", e);
		}
        
    timer = new Timer(5, this);
    timer.start();
    
}
public void padScore(){
        
     while(pad.point < 12){
            gaming = true;
                                          
     }if(pad.point == 12){
         gaming = false;
          try {
			fundo = ImageIO.read(getClass().getResource(
					"game_over.png"));
		} catch (IOException e) {
			throw new RuntimeException(
					"A imagem de fundo não pode ser carregada!", e);
		}
        
        
    
     }
}        
    public void pad2Score(){
      while(pad2.point < 12){
            gaming = true;
     
     }if(pad2.point == 12){
         gaming = false;
          try {
			fundo = ImageIO.read(getClass().getResource(
					"game_over.png"));
		} catch (IOException e) {
			throw new RuntimeException(
					"A imagem de fundo não pode ser carregada!", e);
		}
       
        
    
         
     }
}
 
    @Override
    public void paintComponent(Graphics g){

	Graphics2D g2d = (Graphics2D) g;        
        
        g2d.drawImage(fundo, 0, 0, null);
        
  if(gaming){
        g2d.drawImage(pad.getImage(), pad.getX(), pad.getY(), this);
        g2d.drawImage(pad2.getImage(), pad2.getX(), pad2.getY(), this);
        g2d.drawImage(Ball.getImage(), Ball.getX(), Ball.getY(), this);
        g2d.setColor(Color.WHITE);
        g2d.drawLine(350, 10, 350, 399);
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        Font font = new Font("hooge 05_55", Font.BOLD, 24);
        g2d.setFont(font);
        g2d.setColor(Color.WHITE);
        g2d.drawString((new StringBuilder("")).append(pad.point).toString(), 70, 20);
        g2d.drawString((new StringBuilder("")).append(pad2.point).toString(), 610, 20);
       
     if(Ball.x == 0){
         
        pad2.point++;
         
        Ball.x = 350;
        Ball.y = 205;
        Ball.dx = 0;
        Ball.dy = 0;
        pad.y = 205;
        pad2.y = 205;    
     
     }if(Ball.x == 700){
         
         pad.point++; 
         
         Ball.x = 350;
         Ball.y = 205;
         Ball.dx = 0;
         Ball.dy = 0;
         pad.y = 205;
         pad2.y = 205;       
     }
     }else {
      
                        
 try {
			fundo = ImageIO.read(getClass().getResource(
					"game_over.png"));
		} catch (IOException e) {
			throw new RuntimeException(
					"A imagem de fundo não pode ser carregada!", e);
		}
        g2d.drawImage(fundo, 0, 0, null);
        
    }   
     g.dispose();
 }
@Override
public void actionPerformed(ActionEvent e) {
    pad.move();
    pad2.move();
    Ball.move();
    checkCollisions();
    repaint();
}  

public void checkCollisions(){
        Rectangle ball = Ball.getBounds();
        Rectangle Pad1 = pad.getBounds();
        if(Pad1.intersects(ball)){
           Ball.dx = 2;
        }
         Rectangle Pad2 = pad2.getBounds();  
        if(Pad2.intersects(ball)){
           Ball.dx = -2;
        }}

private class KeyboardAdapter extends KeyAdapter{

	@Override
	public void keyPressed(KeyEvent e) {
            pad.keyPressed(e);
	    pad2.keyPressed(e);
            Ball.keyPressed(e);
        }
        
        @Override
        public void keyReleased(KeyEvent e){
            pad.keyReleased(e);
            pad2.keyReleased(e);
        
	 
       }
   }
}