像pong这样的游戏背后的逻辑

时间:2015-12-04 21:46:26

标签: java swing user-interface animation

我正在创建一个类似于乒乓球的游戏,但并不完全像它。不幸的是,我的逻辑是错误的,但我无法弄清楚我应该做什么。目前,球垂直落下。我有一个椭圆和一个矩形。如果椭圆与矩形相交,那么它应该像没有空气阻力的物理一样“反弹”。目前,它不会这样做,而是从某个位置重新开始,而不是向上弹跳。

要说清楚,即使只是帮助我了解如何在窗口中进行球的抛射运动也会有所帮助。我相信我可以弄清楚如何使它与“桨”相互作用,但是我无法让球开始运动并且移动就像被“桨”击中一样

而不是编写代码,我真的很想理解这一点,因为它似乎是任何游戏的一个基本方面。我将编写看似相关的代码部分,然后根据需要编写更多内容。

ellipse = new Ellipse2D.Double((int)Ox, (int)Oy, 50, 50);
    protected class timeBall implements ActionListener{


            @Override
            public void actionPerformed(ActionEvent e) {
                    scale = 20.0;
                    speedY += 9.8*10.0/scale;
                    speedX = 50;
                    Oy = Oy + speedY * 10;
                    Ox = Ox + speedX *10;
                    Oy = Oy / scale;
                    Ox = Ox / scale;
                 //   System.out.println(speedX + " " + speedY);
                  //  System.out.println(Ox + " " + Oy);


                    try{
                        System.out.println(paddleRect.getX());
                       if(ellipse.intersects(paddleRect)){
                             Random random = new Random();

                             speedY *= -0.2;
                             Oy = Oy * -(random.nextInt(4));  

                        }

                }catch(RuntimeException NullPointerException){

                }
                    repaint();
            }

请注意,这不是整个代码,但为了简单起见,我只是推出了应该包含的内容。

0 个答案:

没有答案