private void colisionCase() { int gateWidth = gateEndX - gateStartX; if ((disk.getX() - disk.getRadius() - fieldBorder < 0) && (disk.getDx() < 0)) { disk.setX(0 + disk.getRadius() + fieldBorder); disk.inverseDx(); } if ((disk.getX() + disk.getRadius() + fieldBorder > field.getWidth()) && (disk.getDx() > 0)) { disk.setX(field.getWidth() - disk.getRadius() - fieldBorder); disk.inverseDx(); } if ((disk.getY() - disk.getRadius() - fieldBorder < 0) && (disk.getDy() < 0) && !((disk.getX() < gateEndX) && (disk.getX() > gateStartX))) { disk.setY(0 + disk.getRadius() + fieldBorder); disk.inverseDy(); } if ((disk.getY() + disk.getRadius() + fieldBorder > field.getHeight()) && (disk.getDy() > 0) && !((disk.getX() < gateEndX) && (disk.getX() > gateStartX))) { disk.setY(field.getHeight() - disk.getRadius() - fieldBorder); disk.inverseDy(); } }
private void slow() { double sp = Math.sqrt(disk.getDx() * disk.getDx() + disk.getDy() * disk.getDy()); if ((disk.getDx() == 0) && (disk.getDy() == 0)) { sp = 1; } disk.setDx( (float) (Math.signum(disk.getDx()) * (Math.abs(disk.getDx()) - Math.abs(disk.getDx() * fading / sp)))); disk.setDy( (float) (Math.signum(disk.getDy()) * (Math.abs(disk.getDy()) - Math.abs(disk.getDy() * fading / sp)))); }
public void move(float speed) { for (Strikeable item : players) { if (item.isStrike(this.disk)) { item.strike(this.disk); } } for (Strikeable item : gatePoints) { if (item.isStrike(this.disk)) { item.strike(this.disk); } } if (field.isStrike(this.disk)) { field.strike(this.disk); } disk.setX((disk.getX() + disk.getDx() / speed)); disk.setY((disk.getY() + disk.getDy() / speed)); slow(); colisionCase(); if (goalCase()) {} players[0].setDx((players[0].getX() - oldx)); players[0].setDy((players[0].getY() - oldy)); oldx = players[0].getX(); oldy = players[0].getY(); players[1].setDx((players[1].getX() - oldx1)); players[1].setDy((players[1].getY() - oldy1)); oldx1 = players[1].getX(); oldy1 = players[1].getY(); }