codice:
if (attacco)
        {
            fuocon = new JLabel(new ImageIcon(getClass().getResource("/game/graphics/images/fuoco nemico.png")));
            fuocon.setLocation(nem.getLocation().x-40, nem.getLocation().y);
            fuocon.setSize(60, 100);
            jPanel1.add(fuocon);
            fuocon.setVisible(true);
            Point loc = fuocon.getLocation();
            for (int i = 0; i < 400; i++)
            {
              fuocon.setLocation(fuocon.getLocation().x - 2, fuocon.getLocation().y);
            }
        }
mi sa che entra sempre in attacco e quindi fa
fuocon.setLocation(nem.getLocation().x-40, nem.getLocation().y);

prova a mettere un attacco = false a fine del for (int i = 0; i < 400; i++)