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是纵轴吧。

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条