我正在使用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循环,但它没有帮助.
解决方法
原文地址:https://www.jb51.cc/java/129843.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。