Java怎么求反弹球,通过Java集合迭代使这些球反弹,任何提示?

如果问题不明确但我想不出另一种方式来表达它,我道歉.

这是我周末在BlueJ工作的课堂作业.我必须改变一个方法(弹跳)让用户选择应弹跳的球数.

其他要求是:球应该具有不同的尺寸,并且应该在它们弹跳之前沿着屏幕顶部连续显示.

为了做到这一点,我必须使用一个集合(ArrayList,HashMap,HashSet).到目前为止,我已经使用了HashMap,并且能够让用户选择一些随机大小的“球”,这些“球”将自己置于屏幕上半部分的随机位置.

当我试图让每个球从屏幕顶部的位置反弹,在右手边结束时,我就会卡住.我可以让代码绘制一个球,弹回它然后绘制另一个球,弹回它等,直到用户选择的球数循环.

还有另外两个类,一个用于绘制画布,另一个用于绘制球并移动它们.我不允许触摸这两个.

我正在做错的方式可能就在我面前,但我一直在盯着这段代码我想我会问.

我当前的代码版本如下所示:

import java.awt.Color;

import java.util.HashMap;

import java.util.Random;

import java.util.Iterator;

public class BallDemo

{

private Canvas myCanvas;

private HashMap ballMap;

private int n;

private int j;

private BouncingBall ball;

/**

* Create a BallDemo object. Creates a fresh canvas and makes it visible.

*/

public BallDemo()

{

myCanvas = new Canvas("Ball Demo",600,500);

}

我必须编辑的方法来反弹球:

public void bounce(int numBalls)

{

ballMap = new HashMap();

int ground = 400; // position of the ground line

Random randomD1 = new Random();

Random xpos = new Random();

myCanvas.setVisible(true);

// draw the ground

myCanvas.drawLine(50,ground,550,ground);

// add balls to HashMap

for(n = 0; n < numBalls; n++) {

ballMap.put(numBalls,(ball = new BouncingBall(xpos.nextInt(300),50,randomD1.nextInt(200),Color.BLUE,myCanvas)));

//

for(j= 0; j < ballMap.size(); j++) {

ball.draw();

boolean finished = false;

while(!finished) {

myCanvas.wait(50); // small delay

ball.move(); // bounce the ball

// stop once ball has travelled a certain distance on x axis

if(ball.getXPosition() >= 550) {

finished = true;

}

}

}

}

}

}

我是否使用HashMap在正确的界限上?键,值的组合似乎是最好的方法.我想我需要以某种方式迭代放置在集合中的项目,以使它们使用move()方法反弹.但首先,无论用户定义了多少,我都需要将球保持在屏幕顶部.

我是编程的新手,我只是难倒.

谢谢你的帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值