import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; /** * Luokka Kuvamuunnokset, joka muuttaa pelin numerot, * erikoismerkit ja arvosanat kuviksi. * @author Karoliina Tiuraniemi * @version 1.0 18.1.2009 * */ public class Kuvamuunnokset { /** * Metodi, joka muuttaa laskuissa ja loppudialogissa käytettävät * erikoismerkit kuviksi. * @param kuvaus * @return kuva */ public static Image muutaKuvaksi(String kuvaus){ try { if (kuvaus.equals("plus")){ Image kuva = ImageIO.read(new File("src/img/plus.png")); return kuva; } else if (kuvaus.equals("on")){ Image kuva = ImageIO.read(new File("src/img/on.png")); return kuva; } else if (kuvaus.equals("kysymys")){ Image kuva = ImageIO.read(new File("src/img/kysymys.png")); return kuva; } else if (kuvaus.equals("vinoviiva")){ Image kuva = ImageIO.read(new File("src/img/vinoviiva.png")); return kuva; } else if (kuvaus.equals("ruksi")){ Image kuva = ImageIO.read(new File("src/img/ruksi.png")); return kuva; } } catch (IOException e){ System.err.println("IOException"); e.printStackTrace(); } return null; } /** * Metodi, joka hakee pelin arvosanan mukaisen kuvan * loppudialogia varten. * @param arvosana * @return kuva */ public static Image muutaTulosKuvaksi(double arvosana){ try { if (arvosana < 0.25){ Image kuva = ImageIO.read(new File("src/img/ilme-1.png")); return kuva; } else if (arvosana < 0.5){ Image kuva = ImageIO.read(new File("src/img/ilme-2.png")); return kuva; } else if (arvosana < 0.75){ Image kuva = ImageIO.read(new File("src/img/ilme-3.png")); return kuva; } else if (arvosana < 1) { Image kuva = ImageIO.read(new File("src/img/ilme-4.png")); return kuva; } else if (arvosana == 1){ Image kuva = ImageIO.read(new File("src/img/ilme-5.png")); return kuva; } } catch (IOException e){ System.err.println("IOException"); e.printStackTrace(); } return null; } /** * Metodi, joka muuttaa laskuissa ja vastauksissa käytettävät * yksi- ja kaksinumeroiset luvut kuviksi. Kaksinumeroisissa * kuvissa luodaan uusi kuva, jossa on kuvat kahdesta numerosta. * @param numero * @return kuva */ public static Image muutaNumeroKuvaksi(int numero){ try { if (numero < 10){ // alle 10 numeroiset ovat samantien kuvia Image kuva = ImageIO.read(new File("src/img/" + numero + ".png")); return kuva; } else if ( numero >= 10){ // kaksinumeroisen luvun jälkimmäinen numero on jakojäännös, // kun numero jaetaan kymmenellä int toka = numero % 10; // ensimmäinen numero saadaan kun alkuperäisestä vähennetään // jälkimmäinen numero int eka = (numero - toka)/10; Image ekaKuva = ImageIO.read(new File("src/img/" + eka + ".png")); Image tokaKuva = ImageIO.read(new File("src/img/" + toka + ".png")); int leveys = ekaKuva.getWidth(null) + tokaKuva.getWidth(null); // tehdään uusi bufferoitu kuva jota pystyy editoimaan. uudessa // kuvassa mukana myös läpinäkyvä alpha-kanava (A) Image uusiKuva = new BufferedImage(leveys, ekaKuva.getHeight(null), BufferedImage.TYPE_4BYTE_ABGR); // haetaan kuvan Graphics-olio Graphics g = uusiKuva.getGraphics(); // piirretään siihen molemmat kuvat paikalleen g.drawImage(ekaKuva, 0, 0, null); g.drawImage(tokaKuva, ekaKuva.getWidth(null), 0, null); return uusiKuva; } } catch (IOException e){ System.err.println("IOException"); e.printStackTrace(); } return null; } }