2017-11-06 13 views
0

私の友人コードはこのレンガブレーカーのゲームを切り捨てますが、このエラーが発生し続けます "getImg()メソッドは未定義です型javax.swing.ImageIcon "と私はそれを修正する方法を知らない。助けてもらえますか? ここでコード:ここエラーが発生する:getImg()メソッドは、型javax.swing.ImageIconの型が未定義です。

public class Ball extends Sprite implements iFace{ 
private int xDir; 
    private int yDir; 

public Ball(){ 

xDir = 1; 
yDir = -1; 

String path = "MAJOR_JAVA_ASSESSMENT/ball.png"; 
ImageIcon i = new ImageIcon(this.getClass().getResource(path)); 
img = i.getImg(); 


iWidth = img.getWidth(null); 
iHeight = img.getHeight(null); 

reset(); } 

    public void move() 
    { 
    x += xDir; 
    y += yDir; 

if(x == 0) 
{ 
    setXDir(1); 
} 

if(x == width - iWidth) 
{ 
    setXDir(-1); 
} 

if (y == 0) 
{ 
    setYDir(1); 
} } 

    private void reset() 
    { 
    x = initBallX; 
    y = initBallY; 
    } 

    public void setXDir(int x) 
    { 
    xDir = x; 
    } 

    public void setYDir(int y) 
    { 
    yDir = y; 
    } 

    public int getYDir() 
    { 
    return yDir; 
    } 
} 

あなたのための別のコード:誰かができれば

import java.awt.Color; 
import java.awt.Font; 
import java.awt.FontMetrics; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Point; 
import java.awt.RenderingHints; 
import java.awt.Toolkit; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.util.Timer; 
import java.util.TimerTask; 
import javax.swing.JPanel; 

public class Board extends JPanel implements iFace 
{ 

private Timer timer; 
    private String message = "You lose"; 
    private Ball ball; 
    private Paddle paddle; 
    private Brick bricks[]; 
    private boolean inGame = true; 

    public Board() 
    { 
    initBoard(); 
    } 



private void initBoard() 
    { 
    addKeyListener(new timeAdapter()); 
    setFocusable(true); 

    bricks = new Brick[numOfBricks]; 
    setDoubleBuffered(true); 
    timer = new Timer(); 
    timer.scheduleAtFixedRate(new ScheduleTask(), delay, period); 
    } 

    @Override 
    public void addNotify() 
    { 
    super.addNotify(); 
    gameInit(); 
    } 

    private void gameInit() 
    { 
    ball = new Ball(); 
    paddle = new Paddle(); 

int k = 0; 
    for(int i = 0; i < 5; i++) 
{ 
    for(int j = 0; j < 6; j++) 
    { 
    bricks[k] = new Brick(j * 40 + 30, i * 10 + 50); 
    k++; 
    } 
} 
    } 

@Override 
    public void paintComponent(Graphics g) 
    { 
    super.paintComponent(g); 

    Graphics2D graphics2D = (Graphics2D) g; 

graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 

if (inGame) 
{ 
    drawObj(graphics2D); 
} 

else 
{ 
    gameDone(graphics2D); 
} 

Toolkit.getDefaultToolkit().sync(); 
    } 




private void drawObj(Graphics graphics2D) 
    { 
    graphics2D.drawImage(ball.getImg(), ball.getX(), ball.getY(), ball.getWidth(), ball.getHeight(), this); 
    graphics2D.drawImage(paddle.getImg(), paddle.getX(), paddle.getY(), paddle.getWidth(), paddle.getHeight(), this); 

for (int i = 0; i < numOfBricks; i++) 
{ 
    if(!bricks[i].isDead()) 
    { 
    graphics2D.drawImage(bricks[i].getImg(), bricks[i].getX(), bricks[i].getY(), bricks[i].getWidth(), bricks[i].getHeight(), this); 
    } 
} 
    } 



    private void gameDone(Graphics2D graphics2D) 
    { 
    Font f = new Font("TimesRoman", Font.BOLD, 20); 
    FontMetrics fm = this.getFontMetrics(f); 

    graphics2D.setColor(Color.RED); 
    graphics2D.setFont(f); 
    graphics2D.drawString(message, (iFace.width - fm.stringWidth(message))/2, iFace.width/2); 

    } 



    private class timeAdapter extends KeyAdapter 
    { 
    @Override  
    public void keyReleased(KeyEvent p) 
    { 
     keyReleased(p); 
    } 

@Override 
public void keyPressed(KeyEvent p) 
{ 
    keyPressed(p); 
} 
    } 



    private class ScheduleTask extends TimerTask 
    { 
    @Override 
    public void run() 
    { 
     ball.move(); 
     paddle.move(); 
     checkCollision(); 
     repaint(); 
    } 
    } 

    private void stopGame() 
    { 
    inGame = false; 
    timer.cancel(); 
    } 



    private void checkCollision() 
    { 
    if(ball.getRectangle().getMaxY() > iFace.bottom) 
    { 
     stopGame(); 
    } 

for(int i = 0, j = 0; i < numOfBricks; i++) 
{ 
    if(bricks[i].isDead()) 
    { 
    j++; 
    } 

    if(j == numOfBricks) 
    { 
    message = "GG YOU WIN"; 
    stopGame(); 
    } 
} 

if ((ball.getRectangle()).intersects(paddle.getRectangle())) 
{ 
    int paddlePos = (int) paddle.getRectangle().getMinX(); 
    int ballPos = (int) ball.getRectangle().getMinX(); 

    int first = paddlePos + 8; 
    int second = paddlePos + 16; 
    int third = paddlePos + 24; 
    int fourth = paddlePos + 32; 

    if (ballPos < first) 
    { 
    ball.setXDir(-1); 
    ball.setYDir(-1); 
    } 

    if (ballPos >= first && ballPos < second) 
    { 
    ball.setXDir(-1); 
    ball.setYDir(-1 + ball.getYDir()); 
    } 

    if (ballPos >= second && ballPos < third) 
    { 
    ball.setXDir(0); 
    ball.setYDir(-1); 
    } 

    if (ballPos >= third && ballPos < fourth) 
    { 
    ball.setXDir(1); 
    ball.setYDir(-1); 
    } 
} 

for (int i = 0; i < numOfBricks; i++) 
{ 
    if ((ball.getRectangle()).intersects(bricks[i].getRectangle())) 
    { 
    int ballLeft = (int) ball.getRectangle().getMinX(); 
    int ballHeight = (int) ball.getRectangle().getHeight(); 
    int ballWidth = (int) ball.getRectangle().getWidth(); 
    int ballTop = (int) ball.getRectangle().getMinY(); 

    Point pR = new Point(ballLeft + ballWidth + 1, ballTop); 
    Point pL = new Point(ballLeft - 1, ballTop); 
    Point pT = new Point(ballLeft, ballTop - 1); 
    Point pB = new Point(ballLeft, ballTop + ballHeight + 1); 

    if (!bricks[i].isDead()) 
    { 
     if (bricks[i].getRectangle().contains(pR)) 
     { 
     ball.setXDir(-1); 
     } 
     else if 
     (bricks[i].getRectangle().contains(pL)) 
     { 
     ball.setXDir(1); 
     } 

     if (bricks[i].getRectangle().contains(pT)) 
     { 
     ball.setYDir(1); 
     } 
     else if (bricks[i].getRectangle().contains(pB)) 
     { 
     ball.setYDir(-1); 
     } 

     bricks[i].setDeath(true); 
    } 
    } 
} 
    } 
} 

私は問題を抱えている2つのコードのようにあなたのボールのコードを与えるが、基本的に同じ問題を抱えているので、されていますこれを修正してから、残りの部分を修正することができます。 また、最大の重要なコードとしてボードを提供するので、このコードが問題になる可能性がありますか? これを読んでくれてありがとう、私はあなたが私の友人を助けることを願っています。

+0

代わりImageIO APIを使用してお勧めしますが、それは 'getImage'されていないことを言って代わりにImageIcon#getImageだと見つけると思いますよ? – MadProgrammer

+0

ええ、それは私の悪いはずです。ありがとう – s3667983

答えて

1

getImgImageIcon APIに存在しない、私はあなたがそれが

が、私は

+0

大丈夫私は代わりにImageIO APIを試してみます、ありがとう – s3667983

関連する問題