저는 Java에 비교적 익숙하지 않지만 정적 인 내용에 문제가 있습니다. 하나는 정적 물건이 뭔지 정확히 모르겠지만, 나는 그것이 어리 석다는 것을 안다. 두 번째로, 나는 운동으로 일하고있는 "Pong"의 작은 게임을 가지고 있는데, 나는 스코어 보드를 얻으려고하고있다. 하지만 그게 말하고있다 Cannot make a static reference to the non-static method getScore()
정적 메서드 문제 수정
여기 내 코드입니다, 그것에 대한 제안은 내가 신참이기 때문에 도움이 될 것입니다.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PongGame extends JComponent implements ActionListener, MouseMotionListener{
private int ballX = 385;
private int ballY = 285;
private int paddleOpX = 0;
private int paddleX = 0;
private int ballYSpeed = 1;
private int ballXSpeed = 1;
public Integer score = 0;
private static Timer t = null;
public static void main(String[] args){
JLabel scoreBoard = new JLabel(getScore().toString());
JFrame window = new JFrame("Hit the Damn Ball");
window.setLayout(new BorderLayout());
window.getContentPane().setBackground(new Color(0, 0, 0));
PongGame game = new PongGame();
window.add(game);
window.pack();
window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
window.setLocationRelativeTo(null);
window.setVisible(true);
t = new Timer(5, game);
t.start();
window.addMouseMotionListener(game);
}
//set the size of window
public Dimension getPreferredSize(){
return new Dimension(800, 600);
}
@Override
protected void paintComponent(Graphics g){
g.setColor(new Color(110, 65, 13));
g.fillRect(paddleX, 510, 150, 15);
g.setColor(new Color(90, 0,0));
g.fillRect(paddleOpX, 90, 150, 15);
g.setColor(Color.WHITE);
g.fillOval(ballX, ballY, 30, 30);
}
@Override
public void actionPerformed(ActionEvent e) {
paddleOpX = (ballX+5);
ballX +=ballXSpeed;
ballY +=ballYSpeed;
if(ballX >= paddleX-30 && ballX <= (paddleX + 150) && ballY >= 480){
ballYSpeed = -ballYSpeed;
//ballYSpeed = -1;
setScore();
}
if(ballX >= paddleX-30 && ballX <= (paddleX + 150) && ballY > 480){
ballYSpeed = -ballYSpeed;
//ballYSpeed = 1;
setScore();
}
if(ballX >= paddleOpX-30 && ballX <=(paddleOpX + 150) && ballY <= 106){
ballYSpeed = ballYSpeed*-1;
}
if(ballY > 570){
ballXSpeed = 0;
ballYSpeed = 0;
t.stop();
System.out.println(score);
}
if(ballX >= 770){
ballXSpeed = -ballXSpeed;
//ballXSpeed = -1;
}
if(ballY <= 0){
ballXSpeed = 0;
ballYSpeed = 0;
t.stop();
System.out.println(score);
//ballYSpeed = 1;
}
if(ballX <= 0){
ballXSpeed = ballXSpeed*-1;
//ballXSpeed = 1;
}
repaint();
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
paddleX = e.getX()-75;
if(ballX >= paddleX-30 && ballX <= (paddleX + 150) && ballY == 480){
ballYSpeed = ballYSpeed-1;
ballXSpeed = ballXSpeed < 0 ? -2 : 2;
//ballYSpeed = 1;
}
repaint();
}
private void setScore(){
score++;
}
public Integer getScore(){
return score;
}
}
괜찮아요. 제가 해냈습니다. 작동하지만 이제 레이블이 화면에 나타나지 않습니다. –
'JLrame '을'JFrame'의 내용 창에'추가'해야합니다. – rgettman
굉장합니다. 그냥 텍스트 색상 문제라고 생각합니다. –