jashdf123 2019-07-05 10:35 采纳率: 25%
浏览 417

Java中炮弹碰到边界反弹的游戏

我在跟着尚学堂的Java课程在走,碰到一个飞机游戏的项目。有一个关于炮弹边界反弹的算法,一直有点问题。

理论上,当炮弹碰到边界左边后,反转原来的角度就可以让炮弹朝着另外一个方向飞行。
但是我的炮弹一旦角度比较靠近座标,然后炮弹就一直沿着x或者y左边来回飞。
因为角度在当炮弹碰到一个座标以后反转角度,然后就一直正负正负,就一直平行于座标飞行了。
但是我的代码和老师的代码是一致的,我想不通这个算法哪里有错。

``` Color oldColor = g.getColor();
g.setColor(Color.YELLOW);

    g.fillOval(x, y, getWidth(), getHeight());

    //c. 设置炮弹飞行到下一个位置(根据speed和飞行角度)
    x += this.getSpeed() * Math.cos(degree) * x_Flag;
    this.setX(x);

    y += this.getSpeed() * Math.sin(degree) * y_Flag;
    this.setY(y);

    //d. 边界反弹 (碰到左边边界,则X<0,相反则X>0;同理上下)
    if ( x < 0 || x > Constant.FRAME_LENGTH - this.getHeight()){
        x_Flag *= -1;
    }
    if ( y < 30 || y > Constant.FRAME_WIDTH - this.getWidth()){
        y_Flag *= -1;
    }
    g.setColor(oldColor);
  • 写回答

1条回答 默认 最新

  • UPWARDONE 2019-07-05 11:26
    关注

    怎么x没有等于0,x是横轴,y是纵轴吧。

    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划