我正在使用ACM库在
Java中编写一个简单的战舰游戏.
游戏开始后,应该将船只放在画布上的随机位置,但问题是船只可能会互相覆盖,这在游戏中是不允许的.如何避免将船放在彼此之上?
游戏开始后,应该将船只放在画布上的随机位置,但问题是船只可能会互相覆盖,这在游戏中是不允许的.如何避免将船放在彼此之上?
我的代码是:
- private void putSmallShips() {
- for (int i = 0; i < SMALL_SHIP_QUANTITY; i++){
- smallShip = new GRect(SMALL_SHIP_WIDTH,SHIP_HEIGHT);
- int x = rgen.nextInt(10,510);
- int y = rgen.nextInt(10,510);
- while (true){
- gobj = getElementAt(x,y);
- if (gobj == null) break;
- x = rgen.nextInt(10,510);
- y = rgen.nextInt(10,510);
- }
- smallShip.setLocation(x,y);
- add(smallShip);
- }
- }
- private void putMiddleShips() {
- for (int i = 0; i < MIDDLE_SHIP_QUANTITY; i++){
- middleShip = new GRect(MIDDLE_SHIP_WIDTH,530);
- int y = rgen.nextInt(10,530);
- while (true){
- gobj = getElementAt(x,y);
- if (gobj == null) break;
- System.out.println("opa!");
- x = rgen.nextInt(10,530);
- y = rgen.nextInt(10,530);
- }
- x = x + i * 10;
- y = y + i * 10;
- middleShip.setLocation(x,y);
- add(middleShip);
- }
- }
- private void putBigShips() {
- for (int i = 0; i < BIG_SHIP_QUANTITY; i++){
- bigShip = new GRect(BIG_SHIP_WIDTH,550);
- int y = rgen.nextInt(10,550);
- while (true){
- gobj = getElementAt(x,550);
- y = rgen.nextInt(10,550);
- }
- bigShip.setLocation(x,y);
- add(bigShip);
- }
- }
如你所见,我在for循环中放了一个while循环,但它没有帮助.