public BufferedImage render() {
		
		BufferedImage res = new BufferedImage(MainPanel.GAME_WIDTH,MainPanel.GAME_HEIGHT,BufferedImage.TYPE_INT_ARGB);
		Graphics g = res.getGraphics();
		g.setFont(MainPanel.font);
		
		// black background for in case of
		g.setColor(Color.black);
		g.fillRect(0, 0, MainPanel.GAME_WIDTH, MainPanel.GAME_HEIGHT);
		
		// image background
		g.drawImage(this.level.getBackground(),(int)this.posX,(int)this.posY,null);
		
		// mobs
		g.setColor(Color.yellow);
		for (int i=0; i<this.level.getMobs().length;i++) {
			g.fillRect((int)(this.level.getMobs()[i].getPosX()+this.posX),(int)(this.level.getMobs()[i].getPosY()+this.posY),this.level.getMobs()[i].getWidth(),this.level.getMobs()[i].getHeight());
		}
		
		g.setColor(Color.red);
		g.fillRect((int)(this.player.getPosX()+this.posX),(int)(this.player.getPosY()+this.posY),this.player.getWidth(),this.player.getHeight());
		
		// we display the timeBonus
		g.setColor(Color.blue);
		for (int i=0; i<this.level.getTimeBonus().size();i++) {
				g.fillRect((int)(this.level.getTimeBonus().get(i).getPosX()+this.posX),(int)(this.level.getTimeBonus().get(i).getPosY()+this.posY),this.level.getTimeBonus().get(i).getWidth(),this.level.getTimeBonus().get(i).getHeight());
		}
		
		// timer display;
		g.drawString(String.valueOf((double) this.timer/1000), 10, 10);
		
		return res;
	}