質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

795閲覧

JAVA:画像の表示。 丸バツゲームの画像版 画像は読み込まれたが実行するときに表示されない コンパイルえらーない

ZhenZeZhang

総合スコア33

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2019/05/27 09:59

編集2019/05/27 14:21

以下がソースコードです

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を使ってプログラムを作ってます。コンパイルエラーが出てこないので悩んでいます。

以下が二つのイラスト

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javahack

2019/05/27 11:18

画像は使用許可を得ていますか? 無断使用であれば、フリー素材の画像に置き換えてください。
guest

回答1

0

自己解決

コードの不足部分を記入しました。```import java.awt.;
import java.awt.image.
;
import java.awt.event.;
import java.io.
;
import java.util.;
import javax.imageio.
;
import javax.swing.*;

public class R5A_3 extends JPanel {
ArrayList<Fig> fif = new ArrayList<Fig>();
Fig ser = null;

private Fig pi(int x, int y) { Fig fi = null; for (Fig f : fif) { if (f.ht(x, y)) { fi = f; } } return fi; } public R5A_3() { setOpaque(false); fif.add(new imagec(100, 100)); fif.add(new rrect(100, 150, 50, 50)); fif.add(new DoubleCircle(300, 300, 200, 255, 0, 0)); fif.add(new name(0, 0)); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { ser = pi(e.getX(), e.getY()); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent evt) { if (ser == null) { return; } ser.moto(evt.getX(), evt.getY()); repaint(); } }); } 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 R5A_3()); f.setSize(1000, 800); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } public class Circle implements Fig { Color c; int px, py, ran; int ca, r, g, b; public Circle(int x, int y, int ra, int q, int w, int e) { Color ci = (new Color(q, w, e)); c = ci; px = x; py = y; ran = ra; r = q; g = w; b = e; } public void chc() { ca = r; r = g; g = b; b = ca; Color c1 = new Color(r, g, b); c = c1; } public void dro(Graphics G) { G.setColor(c); G.fillOval(px - ran / 2, py - ran / 2, ran, ran); } public boolean ht(int x, int y) { boolean a = (px - x) * (px - x) + (py - y) * (py - y) <= ran * ran; if (a == true) chc(); return a; } public void moto(int x, int y) { px = x; py = y; } } public class DoubleCircle implements Fig { Color co; Circle c0; Circle c1; int r, g, b; public DoubleCircle(int x, int y, int ra, int q, int w, int e) { Color c = new Color(q, w, e); co = c; r = q; g = w; b = e; c0 = new Circle(x, y, ra, r, g, b); c1 = new Circle(x, y, ra / 2, g / 2, b / 2, r / 2); } public void dro(Graphics go) { c0.dro(go); c1.dro(go); } public boolean ht(int x, int y) { // System.out.println(r + " " + g + " " + b); c0.ht(x, y); c1.ht(x, y); boolean a = c0.ht(x, y); return a; } public void moto(int a, int b) { c0.moto(a, b); c1.moto(a, b); } } public class imagec implements Fig { int px, py; BufferedImage[] imge = new BufferedImage[1]; public imagec(int x, int y) { px = x; py = y; try { imge[0] = ImageIO.read(new File("DtwaeFtUwAAPbxk.jpg")); } catch (Exception ex) { ex.printStackTrace(); System.exit(-1); } } public void dro(Graphics go) { go.drawImage(imge[0], px - 50, py - 50, 100, 100, null); } public boolean ht(int x, int y) { return (px - x) * (px - x) + (py - y) * (py - y) <= 100 * 100; } public void moto(int a, int b) { px = a; py = b; } } public class rrect implements Fig { int px, py, hi, wi; public rrect(int x, int y, int width, int height) { px = x; py = y; wi = width; hi = height; } public void dro(Graphics go) { go.setColor(new Color(255, 0, 0)); go.fillRect(px - wi / 2, py - hi / 2, wi, hi); } public boolean ht(int x, int y) { return px - wi / 2 <= x && x <= px + wi / 2 && py - hi / 2 <= y && y <= py + hi / 2; } public void moto(int a, int b) { px = a; py = b; } } public class name implements Fig { int x, y; public name(int a, int b) { x = a; y = b; } public void dro(Graphics g) { g.setColor(new Color(0, 0, 255)); g.drawLine(x, y, x + 10, y + 10); g.drawLine(x, y + 10, x + 10, y + 25); g.drawLine(x, y + 40, x + 10, y + 35); g.drawLine(x + 20, y, x + 40, y); g.drawLine(x + 20, y, x + 18, y + 40); g.drawLine(x + 40, y, x + 39, y + 18); g.drawLine(x + 20, y + 20, x + 39, y + 18); g.drawLine(x + 20, y + 20, x + 50, y + 50); } public boolean ht(int a, int b) { return x <= a && y <= b && x + 50 >= a && y + 50 >= b; } public void moto(int a, int b) { x = a - 25; y = b - 25; } }

}

interface Fig {
public void dro(Graphics g);

public boolean ht(int x, int y); public void moto(int x, int y);

}

投稿2019/05/27 11:11

ZhenZeZhang

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問