为了账号安全,请及时绑定邮箱和手机立即绑定

弹跳矩形(图形 g)

弹跳矩形(图形 g)

扬帆大鱼 2022-05-21 17:24:08
我正在玩 Java 中的图形。目前我有一个从左到右移动的矩形。我希望它在碰到画布的右侧时开始向左移动,在碰到右侧时向左移动,我已经包含了一个游戏循环,因为这最终将变成我的第一个非常基本的游戏。谢谢。PS - 我为这段代码的不同部分遵循了一些教程,因此为什么它可能有点混乱,我正在努力:)绘制图形的类:public class RenderHandler {public RenderHandler(int width, int height) {}public void render(Graphics g) {    g.setColor(Color.BLACK);    g.fillRect(0, 0, Game.WIDTH, Game.HEIGHT);    g.setColor(Color.RED);    g.fillRect(Game.moveX, Game.HEIGHT/2, 50, 50);    if (Game.moveX >= Game.WIDTH) {        Game.moveX ++;    } else if (Game.moveX <= 0) {        Game.moveX --;    }else { Game.moveX++;    }    }}
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

如果您知道如何在屏幕上绘图以及这些东西是如何工作的,我认为这更多是为了降低逻辑。


我如此残酷地从您的问题中撕下的这段代码片段就在渲染发生的位置旁边(这是一个问题,因为我认为它相当无组织;我建议游戏逻辑和渲染在两个不同的功能中进行)。它基本上是说如果超出屏幕右侧,它将向右移动,如果不是,则如果超出屏幕左侧,它将向左移动,最后,如果不是,它将向左移动。


if (Game.moveX >= Game.WIDTH) {

        Game.moveX ++;

    } else if (Game.moveX <= 0) {

        Game.moveX --;

    }else { Game.moveX++;

    }

如果你想让它反弹,你将不得不使用一个布尔值来跟踪它的移动状态,或者,如果你想要更多的通用性,使用一对浮点数或双精度数(浮点数通常用于 Java 游戏设计)来跟踪它的位置,另一个是它的速度。我现在很紧张,我会回来的。


查看完整回答
反对 回复 2022-05-21
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

将此添加到渲染处理程序而不是渲染中的当前 if 语句


bool rol = true; // initialize this outside the method



If(Game.movex + 50 >= Game.width)

rol = false;

Else if(Game.movex <= 0)

rol = true;

If(rol)

Game.movex++;

Else

Game.movex--;


查看完整回答
反对 回复 2022-05-21
?
温温酱

TA贡献1752条经验 获得超4个赞

您需要在某处存储当前移动方向,因此将其添加到 Game 类:


public static int deltaX = 1;

并将 render() 中的条件替换为


if (Game.moveX >= Game.WIDTH-50) {

    Game.deltaX =-1;

} else if (Game.moveX <= 0) {

    Game.deltaX =1;

}

Game.moveX += Game.deltaX;


查看完整回答
反对 回复 2022-05-21
  • 3 回答
  • 0 关注
  • 209 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号