gpt4 book ai didi

java - Java中的奇怪错误,未找到符号 'super.'

转载 作者:行者123 更新时间:2023-12-02 11:04:48 25 4
gpt4 key购买 nike

我最近一直在用Java开发一款快速的小型太空入侵者游戏,但由于“外星人”的移动不正确,我遇到了一些问题。我通过快速的Google搜索发现我只需要添加一个构造函数并覆盖它,但是当我这样做时却遇到了一个有趣的错误消息:

错误:找不到符号:super.cpuMove(m);

                        ^(this points directly to the "." in the original error message)

最后,我确实想出了一种方法,可以通过更改代码来完全避免此错误,但是这种更改增加了大约50-60条不必要的行,我非常想将其转换为几行快速行。这是我的代码中发生此错误的部分:
@Override
protected void cpuMove(ShapesMove m){
super.cpuMove(m);
cpu_x(m);
cpu_y(m);
}

无论我对其余代码进行什么更改,为什么每次都会显示此错误消息?而且,为什么它指向“。”而不是“ super ”或“cpuMove(m)”?我希望能够适应这一点,但是Java似乎不允许我这样做。

编辑:

这是我其余的代码。我以为这可能是另外一回事了,我不必发布,因此我为此表示歉意:
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;

public class ShapesMove extends JPanel{

public static int x = 40;
public static int y = 40;
public static int h = 240;
public static int k = 240;

public static void main(String[] args){

final JFrame frame = new JFrame("Movement of 2d Shapes");
final ShapesMove m = new ShapesMove();
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(m);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

Action actionRight = new AbstractAction(){
public void actionPerformed(ActionEvent actionRightEvent){
x += 10;
m.repaint();
}
};

Action actionLeft = new AbstractAction(){
public void actionPerformed(ActionEvent actionLeftEvent){
x -= 10;
m.repaint();
}
};

Action actionUp = new AbstractAction(){
public void actionPerformed(ActionEvent actionUpEvent){
y -= 10;
m.repaint();
}
};

Action actionDown = new AbstractAction(){
public void actionPerformed(ActionEvent actionDownEvent){
y += 10;
m.repaint();
}
};

KeyStroke right = KeyStroke.getKeyStroke("RIGHT");
KeyStroke left = KeyStroke.getKeyStroke("LEFT");
KeyStroke up = KeyStroke.getKeyStroke("UP");
KeyStroke down = KeyStroke.getKeyStroke("DOWN");

InputMap inputMap = m.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(right, "RIGHT");
inputMap.put(left, "LEFT");
inputMap.put(up, "UP");
inputMap.put(down, "DOWN");
m.getActionMap().put("RIGHT", actionRight);
m.getActionMap().put("LEFT", actionLeft);
m.getActionMap().put("UP", actionUp);
m.getActionMap().put("DOWN", actionDown);

}

@Override
protected void cpuMove(ShapesMove m){
super.cpuMove(ShapesMove m);
cpu_x(m);
cpu_y(m);
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
draw(g);
}

public void cpu_x(ShapesMove m){
if(h > x){
h -= 10;
m.repaint();
}else if(h < x){
h += 10;
m.repaint();
}else{
m.repaint();
}
}

public void cpu_y(ShapesMove m){
if(k > y){
k -= 10;
m.repaint();
}else if(k < y){
k += 10;
m.repaint();
}else{
m.repaint();
}
}

public void draw(Graphics g){
g.drawOval(x, y, 40, 40);
g.drawRect(h, k, 40, 40);
}

}

关于代码的一些快速注释:首先,我知道我说过这是一款太空侵略者游戏,而现在这实际上只是极少或根本没有相似之处,这是一个WIP。我在photoshop中制作自己的图像和动画背景,因此这就是为什么我绘制矩形和圆形而不是调用图像的原因。这实际上是要模拟当调用方法时游戏中的敌人将如何“跟随”玩家,因为我也希望该游戏也具有一些“加拉加”方面。

最佳答案

唯一的解释是您在这里误用了“ super ”。 “super”用于指代子类的父类。如果您的类没有扩展任何内容,则没有可引用的内容,或者您​​的父类(super class)没有“cpuMove”方法,这就是为什么您遇到错误。

关于java - Java中的奇怪错误,未找到符号 'super.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19803968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com