以下がソースコードです
import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.io.File; import java.util.*; import javax.imageio.ImageIO; import javax.swing.*; public class R5B_3 extends JPanel { ArrayList<Fig> fif = new ArrayList<Fig>(); boolean turnw = true; public BufferedImage[] img = new BufferedImage[2]; // 画像のための配列 public R5B_3() { int i, r, c; for (i = 0; i < 9; i++) { r = i / 3; c = i % 3; fif.add(new rrect(80 + r * 100, 40 + c * 100, 69)); } addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evnt) { rrect re = picup(evnt.getX(), evnt.getY()); if (re == null) { return; } fif.remove(fif.size() - 1); if (turnw) { fif.add(new wron(evnt.getX(), evnt.getY(), 69)); fif.add(new core(evnt.getX(), evnt.getY(), 69)); } else { fif.add(new core(evnt.getX(), evnt.getY(), 69)); fif.add(new wron(evnt.getX(), evnt.getY(), 69)); } turnw = !turnw; repaint(); } }); } public rrect picup(int x, int y) { rrect r = null; for (Fig f : fif) { if (f instanceof rrect && ((rrect) f).ht(x, y)) { r = (rrect) f; } } return r; } public void paintComponent(Graphics gg) { for (Fig f : fif) { f.dro(gg); } } public static void main(String[] arg) { JFrame f = new JFrame(); f.add(new R5B_3()); f.setSize(1000, 800); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } static interface Fig { public void dro(Graphics g); } static abstract class SF implements Fig { int xp, yp; public SF(int x, int y) { xp = x; yp = y; } public void dro(Graphics dg) { dg.setColor(new Color(0, 0, 0)); ((Graphics2D) dg).setStroke(new BasicStroke(5)); } public void moto(int x, int y) { // クラス共通のメソッド xp = x; yp = y; } } public class wron extends SF { int size; BufferedImage img; public wron(int x, int y, int s) { super(x, y); size = s; try { img = ImageIO.read(new File("wro.jpg")); System.out.println("wron success"); } catch (Exception ex) { System.err.println(ex); } } public void draw(Graphics g) { g.drawImage(img, xp - size / 2, yp - size / 2, size, size, null); } } public class core extends SF { int size; BufferedImage img; public core(int x, int y, int s) { super(x, y); size = s; try { img = ImageIO.read(new File("cer.jpg")); System.out.println("core success"); } catch (Exception ex) { System.err.println(ex); } } public void draw(Graphics g) { g.drawImage(img, xp - size / 2, yp - size / 2, size, size, null); } } static class rrect extends SF { int bsize; public rrect(int x, int y, int blo) { super(x, y); bsize = blo; } public void dro(Graphics go) { go.setColor(new Color(0, 255, 255)); go.fillRect(xp - bsize / 2, yp - bsize / 2, bsize, bsize); } public boolean ht(int x, int y) { return xp - bsize / 2 <= x && x <= xp + bsize / 2 && yp - bsize / 2 <= y && y <= yp + bsize / 2; } public int getX() { return xp; } public int getY() { return xp; } } }
二つの異なった画像を使って丸とばつの代わりにするゲームのようなプログラムを作成したいと思ってます。ですが画像はコンソール表示をつかって読み込みはできているらしいですが、実行すると画像が読み込まれないという状態です。
やってみたこと:自作クラスに重複したコンストラクターがないかどうかとメソットの重複がないかを確認した。画像の読み込みができているのかを確認した。
大きな問題点:自分はEclipseを使ってプログラムを作ってます。コンパイルエラーが出てこないので悩んでいます。
以下が二つのイラスト
画像は使用許可を得ていますか?
無断使用であれば、フリー素材の画像に置き換えてください。
回答1件
あなたの回答
tips
プレビュー