Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的球没有移动,虽然它应该在移动,但它仍然停留在中心_Java_Jpanel - Fatal编程技术网

Java 我的球没有移动,虽然它应该在移动,但它仍然停留在中心

Java 我的球没有移动,虽然它应该在移动,但它仍然停留在中心,java,jpanel,Java,Jpanel,我正在编写一个原始的乒乓球游戏,我已经编写了这样的代码,当球离开屏幕的左侧时,它会转到屏幕的中心,并以随机方向移动。但是,在开始时,球始终保持在中心,从不移动(尽管球的X坐标在开始时不小于0) 导入java.awt.Font; 导入java.awt.Graphics; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.awt.event.KeyAdapter; 导入java.awt.event.KeyEve

我正在编写一个原始的乒乓球游戏,我已经编写了这样的代码,当球离开屏幕的左侧时,它会转到屏幕的中心,并以随机方向移动。但是,在开始时,球始终保持在中心,从不移动(尽管球的X坐标在开始时不小于0)

导入java.awt.Font;
导入java.awt.Graphics;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyAdapter;
导入java.awt.event.KeyEvent;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入java.awt.image.buffereImage;
导入java.awt.Color;
导入javax.swing.JPanel;
导入javax.swing.Timer;
公共类Pong扩展了JPanel
{
专用静态最终整型帧_宽度=400;
私有静态最终颜色背景=新颜色(204204204);
私有静态最终颜色球\u Color=Color.BLACK;
私人静态最终颜色奖\u Color=Color.BLACK;
私人静态最终整数球直径=50;
私有静态最终整数=25;
私有静态最终整数移位=10;
私有缓冲区映像myImage;
专用图形缓冲区;
私人舞会;
私人机构1;
私家侦探2;
私人波尔卡多奖;
私人保险箱;
私人保险杠2;
私人定时器t;
私人整数点击;
公共乒乓球
{
myImage=新的BuffereImage(4004001);
myBuffer=this.myImage.getGraphics();
设置颜色(背景);
myBuffer.fillRect(0,040400);
球=新球(0,0,35,球的颜色);
跳球(400400);
奖品=新波尔卡多(0,0,25,奖品颜色);
跳跃奖(400400);
保险杠=新保险杠(380,70,50100,颜色为红色);
保险杠2=新保险杠(30,70,50100,颜色为蓝色);
点击率=0;
t=新计时器(5,新侦听器());
t、 start();
addMouseListener(新鼠标());
addKeyListener(新键());
设置聚焦(真);
}
公共组件(图形g)
{
g、 drawImage(myImage,0,0,getWidth(),getHeight(),null);
}
私有类鼠标扩展了MouseAdapter
{
专用鼠标(){}
公共无效鼠标按下(MouseEvent e)
{
如果(如isMetaDown())
{
ball.setX(e.getX());
ball.setY(e.getY());
}
否则如果(如IsShift Down())
{
setdx((int)(Math.random()*11.0D-6.0D));
setdy((int)(Math.random()*11.0D-6.0D));
}
其他的
{
prize.setX(e.getX());
prize.setY(e.getY());
}
}
}
私有类密钥扩展了KeyAdapter
{
私钥(){}
按下公共无效键(按键事件e)
{
如果((例如getKeyCode()==38)和&(buffer.getY()>0)){
buffer.setY(buffer.getY()-10);
}否则如果((e.getKeyCode()==40)和&(buffer.getY()<438)){
buffer.setY(buffer.getY()+10);
}否则如果((e.getKeyCode()==87)和&(bumper2.getY()>0)){
bumper2.setY(bumper2.getY()-10);
}否则如果((e.getKeyCode()==83)和&(bumper2.getY()<438)){
bumper2.setY(bumper2.getY()+10);
}
}
}
私有类侦听器实现ActionListener
{
专用侦听器(){}
已执行的公共无效操作(操作事件e)
{
设置颜色(背景);
myBuffer.fillRect(0,040400);
球移动(400400);
碰撞(球、奖品);
碰撞(保险杠,球);
碰撞(保险杠2,球);
ball.draw(myBuffer);
奖品。抽奖(myBuffer);
缓冲器.牵引(myBuffer);
缓冲器2.绘图(myBuffer);
myBuffer.setColor(Color.red);
setFont(新字体(“Comic Sans MS”,1,24));
myBuffer.drawString(“计数:+score110025”);
如果(分数1>=10)
myBuffer.drawString(“这个人是传奇人物27”,50,102);
如果(分数2>=10)
myBuffer.drawString(“另一个人可能是legend27”,160102);
if(ball.getX()<-100)
分数1++;
ball.setX(208);
赛蒂(50岁);
球。setdx(20);
重新油漆();
}
}
公共空间碰撞(球b,波尔卡多p)
{
双距离=距离(b.getX(),b.getY(),p.getX(),p.getY());
如果(距离<37.0D)
{
点击次数+=1;
p、 跳跃(400400);
}
}
专用双距离(双x1、双y1、双x2、双y2)
{
返回Math.sqrt(Math.pow(x1-x2,2.0D)+Math.pow(y1-y2,2.0D));
}
}
球:

//名称:日期:
导入java.awt.*;
公共班级舞会
{
private double dx;//每次调用step()时要移动的像素。
私人双重身份;
//建设者
public Ball()//默认构造函数
{
超级(200,200,50,彩色,黑色);
dx=Math.random()*12-6;//垂直移动
dy=Math.random()*12-6;//横向移动
}
公共球(双x、双y、双直径、c色)
{
超级(x,y,直径,c);
dx=Math.random()*12-6;
dy=Math.random()*12-6;
}
//修正方法
公共void setdx(双x)
{
dx=x;
}
公共无效设置(双y)
{
dy=y;
}
//存取器方法
公共双getdx()
{
返回dx;
}
公共双getdy()
{
返回dy;
}
//实例方法
公共无效移动(双右边缘,双下边缘)
{
setX(getX()+dx);//移动顶点。
setY(getY()+dy);
如果(getX()>=rightEdge-getRadius())
{
setX(righedge-getRadius());
dx=dx*-1;
}
else if(getX()=底边-getRadius())
{
setY(底边-getRadius());
dy=dy*-1;
}

else if(getY()您似乎有两个不同的p值
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.awt.Color; 
import javax.swing.JPanel;
import javax.swing.Timer;

public class Pong extends JPanel
{
  private static final int FRAME_WIDTH = 400;
  private static final Color BACKGROUND = new Color(204, 204, 204);
  private static final Color BALL_COLOR = Color.BLACK;
  private static final Color PRIZE_COLOR = Color.BLACK;
  private static final int BALL_DIAM = 50;
  private static final int PRIZE_DIAM = 25;
  private static final int PRIZE_SHIFT = 10;
  private BufferedImage myImage;
  private Graphics myBuffer;
  private Ball ball;
  private int score1;
  private int score2;
  private Polkadot prize;
  private Bumper bumper;
  private Bumper bumper2;
  private Timer t;
  private int hits;

  public Pong()
  {
    myImage = new BufferedImage(400, 400, 1);
    myBuffer = this.myImage.getGraphics();
    myBuffer.setColor(BACKGROUND);
    myBuffer.fillRect(0, 0, 400, 400);

    ball = new Ball(0, 0, 35, BALL_COLOR);
    ball.jump(400, 400);

    prize = new Polkadot(0, 0, 25, PRIZE_COLOR);
    prize.jump(400, 400);
    bumper = new Bumper(380,70,50,100,Color.RED);

    bumper2 = new Bumper(30,70,50,100,Color.BLUE);

    hits = 0;

    t = new Timer(5, new Listener());
    t.start();

    addMouseListener(new Mouse());

    addKeyListener(new Key());
    setFocusable(true);
  }

  public void paintComponent(Graphics g)
  {
    g.drawImage(myImage, 0, 0, getWidth(), getHeight(), null);
  }

  private class Mouse extends MouseAdapter
  {
    private Mouse() {}

    public void mousePressed(MouseEvent e)
    {
      if (e.isMetaDown())
      {
        ball.setX(e.getX());
        ball.setY(e.getY());
      }
      else if (e.isShiftDown())
      {
       ball.setdx((int)(Math.random() * 11.0D - 6.0D));
       ball.setdy((int)(Math.random() * 11.0D - 6.0D));
      }
      else
      {
        prize.setX(e.getX());
        prize.setY(e.getY());
      }
    }
  }

  private class Key extends KeyAdapter
  {
    private Key() {}

    public void keyPressed(KeyEvent e)
    {
      if ((e.getKeyCode() == 38) && (bumper.getY() > 0)) {
        bumper.setY(bumper.getY() - 10);
      } else if ((e.getKeyCode() == 40) && (bumper.getY() < 438)) {
        bumper.setY(bumper.getY() + 10);
      } else if ((e.getKeyCode() == 87) && (bumper2.getY() > 0)) {
        bumper2.setY(bumper2.getY() - 10);
      } else if ((e.getKeyCode() == 83) && (bumper2.getY() < 438)) {
        bumper2.setY(bumper2.getY() + 10);
      }
    }
  }

  private class Listener implements ActionListener
  {
    private Listener() {}

    public void actionPerformed(ActionEvent e)
    {
      myBuffer.setColor(BACKGROUND);
      myBuffer.fillRect(0, 0, 400, 400);

      ball.move(400, 400);
      collide(ball, prize);
      BumperCollision.collide(bumper,ball);
      BumperCollision.collide(bumper2,ball);

      ball.draw(myBuffer);
      prize.draw(myBuffer);
      bumper.draw(myBuffer);
      bumper2.draw(myBuffer);
      myBuffer.setColor(Color.red);
      myBuffer.setFont(new Font("Comic Sans MS", 1, 24));
      myBuffer.drawString("Count: " + score1, 100, 25);
      if(score1 >= 10)
         myBuffer.drawString("This man is the Legend27", 50, 102);
      if(score2 >= 10)
         myBuffer.drawString("The other man might be the legend27", 160, 102);
      if(ball.getX() < -100)
         score1++;
         ball.setX(208);
         ball.setY(50);
         ball.setdx(20);

      repaint();
    }
  }

  public void collide(Ball b, Polkadot p)
  {
    double dist = distance(b.getX(), b.getY(), p.getX(), p.getY());
    if (dist < 37.0D)
    {
      hits += 1;

      p.jump(400, 400);
    }
  }

  private double distance(double x1, double y1, double x2, double y2)
  {
    return Math.sqrt(Math.pow(x1 - x2, 2.0D) + Math.pow(y1 - y2, 2.0D));
  }
}
//Name:              Date:
   import java.awt.*;
    public class Ball extends Polkadot
   {
      private double dx;       // pixels to move each time step() is called.
      private double dy;
    // constructors
       public Ball()         //default constructor
      {
         super(200, 200, 50, Color.BLACK);
         dx = Math.random() * 12 - 6;          // to move vertically
         dy = Math.random() * 12 - 6;          // to move sideways
      }
       public Ball(double x, double y, double dia, Color c)
      {
         super(x, y, dia, c);
         dx = Math.random()* 12 - 6;
         dy = Math.random() * 12 - 6;
      }

     //modifier methods 
       public void setdx(double x)        
      {
         dx = x;
      }
       public void setdy(double y)
      {
         dy = y;
      }

      //accessor methods
       public double getdx()             
      {
         return dx;
      }
       public double getdy()
      {
         return dy;
      }

     //instance methods
       public void move(double rightEdge, double bottomEdge)
      {
         setX(getX()+ dx);      // move vert.
         setY(getY()+ dy);     

         if(getX() >= rightEdge - getRadius())  
         {
            setX(rightEdge - getRadius());
            dx = dx * -1; 
         }
         else if(getX() <= getRadius())
         {
          setX(getRadius());
          dx = dx * -1;
         }
         if(getY() >= bottomEdge - getRadius())
         {
          setY(bottomEdge - getRadius());
          dy = dy * -1;
         }
         else if (getY() <= getRadius())
         {
          setY(getRadius());
          dy = dy * -1;
         }
     }
   }
super(x, y, dia, c);
public Ball(double x, double y, double dia, Color c)
{
     super(x, y, dia, c);
     dx = Math.random()* 12 - 6;
     dy = Math.random() * 12 - 6;
     setX(getX() + dx); //add your x difference
     setY(getY() + dy); //add your y difference  
}
if(ball.getX() < -100)
    score1++;
    ball.setX(208);
    ball.setY(50);
    ball.setdx(20);
if(ball.getX() < -100)
{
    score1++;
    ball.setX(208);
    ball.setY(50);
    ball.setdx(20);
}