gpt4 book ai didi

java - 难以捉摸的球类游戏项目

转载 作者:行者123 更新时间:2023-12-01 18:29:30 29 4
gpt4 key购买 nike

因此,我们类正在制作一个难以捉摸的球项目。基本上,这是一个游戏,鼠标必须追逐圆圈,直到用户得到它。然而在我的代码中,鼠标监听器正在识别鼠标移动,但它根本不与圆圈交互。球不移动的时期。我不知道这是我的逻辑还是我使用了错误的方法还是什么。

package lab10;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Random;

import javax.swing.JFrame;



public class Lab10 extends JFrame implements MouseMotionListener{
int x = 325;
int y = 325;
int rX;
int rY;

public Lab10() {
super("The Elusive Circle");
addMouseMotionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(750,750);
setVisible(true);

}


public void paint(Graphics g) {
super.paint(g);
g.drawOval(getX(),getY(),80,80);
g.setColor(Color.MAGENTA);
g.fillOval(getX(),getY(),80,80);



}

public static void main (String args[]) {
Lab10 circle = new Lab10();
System.out.println("MY HEAD!");
}
public void mouseDragged (MouseEvent e) {

System.out.println("bacon pancakes");

}
public void mouseMoved (MouseEvent e) {
setCircle(e);
System.out.println("my head!!");
}



public void setCircle(MouseEvent m) {
int getx = m.getX();
int gety = m.getY();
Random r = new Random();
int rX = r.nextInt(700 - 51) + 51;
int rY = r.nextInt(700 - 51) + 51;
boolean getxInBounds = (getx == (rX+80));
boolean getyInBounds = (gety == (rY+80));
boolean getxInBounds2 = (getx == (rX-80));
boolean getyInBounds2 = (gety == (rY-89));
setX(rX);
setY(rY);
if(getxInBounds||getxInBounds2||getyInBounds||getyInBounds2){
repaint();
}

}
public void mouseClicked (MouseEvent e) {
System.out.println("Idk");
}
private void setX(int a) {
int x = a;
}
private void setY(int b) {
int y = b;
}
public int getX(){
return x;
}
public int getY() {
return y;
}

最佳答案

您在绘制方法内的 JFrame 上调用 getX()getY() ,并且由于这些永远不会改变,球永远不会移动。为您的类提供 MouseMotionListener 设置的 xPosition 和 yPosition 字段,并在您的绘制方法中使用这些字段。

编辑:您已经获得了字段。设置 rX 和 rY 字段。请注意,不要调用 setX(...)setY(...) 因为它们设置的是组件的位置,而不是圆的位置,并且不会为您的 GUI 类提供 getX()getY() 方法,因为这些方法将覆盖组件的方法,从而导致严重的副作用。

顺便说一句,您最好在 JFrame 中显示的 JPanel 的 PaintComponent 方法内部进行绘制。

关于java - 难以捉摸的球类游戏项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917350/

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