1
0

Constants interface changed to class

This commit is contained in:
Victor 2014-03-23 19:13:58 +02:00
parent 6818df443a
commit 167ba12e50
13 changed files with 57 additions and 52 deletions

View File

@ -1,5 +1,7 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.HEIGHT;
import static com.annimon.turrets.Constants.WIDTH;
import com.annimon.turrets.util.Util;
import java.awt.Color;
import java.awt.Graphics;
@ -8,7 +10,7 @@ import java.awt.Graphics;
*
* @author aNNiMON
*/
public class Background implements Constants {
public class Background {
private static final int STARS_COUNT = (int) Math.sqrt(WIDTH * HEIGHT);

View File

@ -6,12 +6,12 @@ import java.awt.Dimension;
*
* @author aNNiMON
*/
public interface Constants {
public final class Constants {
// Screen
public static final int WIDTH = 800, HEIGHT = 600;
public static final boolean RESIZABLE = false;
public static final Dimension SCREEN_DIMENSION = new Dimension(Constants.WIDTH, Constants.HEIGHT);
public static final Dimension SCREEN_DIMENSION = new Dimension(WIDTH, HEIGHT);
public static final String FONT_NAME = "Times New Roman";
// Parameters

View File

@ -1,5 +1,6 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.SCREEN_DIMENSION;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
@ -22,7 +23,7 @@ public abstract class DoubleBufferedCanvas extends Canvas implements MouseListen
public DoubleBufferedCanvas() {
setSize(Constants.WIDTH, Constants.HEIGHT);
setPreferredSize(Constants.SCREEN_DIMENSION);
setPreferredSize(SCREEN_DIMENSION);
addMouseListener(DoubleBufferedCanvas.this);
addMouseMotionListener(DoubleBufferedCanvas.this);

View File

@ -1,5 +1,7 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.FONT_NAME;
import static com.annimon.turrets.Constants.MAX_ROUNDS;
import com.annimon.turrets.Turret.TurretInfo;
import com.annimon.turrets.network.GameClient;
import com.annimon.turrets.network.GameServer;
@ -42,7 +44,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
background = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB);
initBackground();
font = new Font(Constants.FONT_NAME, Font.PLAIN, 24);
font = new Font(FONT_NAME, Font.PLAIN, 24);
wind = new Wind();
gameStarted = false;
@ -170,8 +172,8 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
if (serverWinRound) serverWinCount++;
else clientWinCount++;
final boolean serverWin = (serverWinCount == Constants.MAX_ROUNDS);
final boolean clientWin = (clientWinCount == Constants.MAX_ROUNDS);
final boolean serverWin = (serverWinCount == MAX_ROUNDS);
final boolean clientWin = (clientWinCount == MAX_ROUNDS);
if (serverWin || clientWin) {
// Show winners.
finishGame( (serverWin && serverInstance) || (clientWin && !serverInstance) );
@ -183,21 +185,6 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
newRound(seed);
socketHelper.sendNewRoundSeed(seed);
}
System.out.println(serverWinCount + " " + clientWinCount);
if (serverWinCount == Constants.MAX_ROUNDS) finishGame(true);
else if (serverWinCount == -Constants.MAX_ROUNDS) finishGame(false);
else {
if (serverInstance) {
try {
Thread.sleep(200);
} catch (InterruptedException ex) { }
long seed = System.currentTimeMillis();
newRound(seed);
socketHelper.sendNewRoundSeed(seed);
}
}
}
private void finishGame(boolean instanceWin) {

View File

@ -1,5 +1,6 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.RESIZABLE;
import com.annimon.turrets.util.GuiUtil;
import java.awt.Component;
import javax.swing.JFrame;
@ -26,7 +27,7 @@ public class Main extends JFrame {
public Main() {
super("Turrets");
setResizable(Constants.RESIZABLE);
setResizable(RESIZABLE);
setLocationByPlatform(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);

View File

@ -1,5 +1,6 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.SCREEN_DIMENSION;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
@ -54,7 +55,7 @@ public class MenuPanel extends JPanel {
titleLabel.setHorizontalAlignment(SwingConstants.CENTER);
// Init panel
setPreferredSize(Constants.SCREEN_DIMENSION);
setPreferredSize(SCREEN_DIMENSION);
setLayout(new BorderLayout());
setBackground(Color.BLACK);
add(menuList, BorderLayout.SOUTH);

View File

@ -1,5 +1,9 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.GRAVITATION_ACCELERATION;
import static com.annimon.turrets.Constants.HEIGHT;
import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT;
import static com.annimon.turrets.Constants.WIDTH;
import java.awt.Color;
import java.awt.Graphics2D;
@ -7,7 +11,7 @@ import java.awt.Graphics2D;
*
* @author aNNiMON
*/
public class ShootInfo implements Constants {
public class ShootInfo {
double x, y, speedX;
double windSpeed, vsin, t;
@ -28,11 +32,11 @@ public class ShootInfo implements Constants {
public void draw(Graphics2D g) {
g.setColor(Color.WHITE);
final int rad = 2;
g.fillArc((int) x - rad, Constants.HEIGHT - (int) y - rad, rad * 2, rad * 2, 0, 360);
g.fillArc((int) x - rad, HEIGHT - (int) y - rad, rad * 2, rad * 2, 0, 360);
}
public boolean isOver() {
return (x < 0) || (x >= Constants.WIDTH) || (y < 0);
return (x < 0) || (x >= WIDTH) || (y < 0);
}
public boolean isCollideOpponent(boolean server, Terrain tr) {

View File

@ -1,16 +1,18 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.HEIGHT;
import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT;
import static com.annimon.turrets.Constants.WIDTH;
import com.annimon.turrets.util.Util;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.LinearGradientPaint;
import java.util.Random;
/**
* Destructible terrain.
* @author aNNiMON
*/
public class Terrain implements Constants {
public class Terrain {
private static final Color[] TERRAIN_COLOR = {
new Color(0xFF33CE2B), new Color(0xFF1C7317)
@ -94,8 +96,8 @@ public class Terrain implements Constants {
}
gradientPaint = new LinearGradientPaint(
0, Constants.HEIGHT - maxBlockHeight,
0, Constants.HEIGHT,
0, HEIGHT - maxBlockHeight,
0, HEIGHT,
new float[] {0f, 1f}, TERRAIN_COLOR);
}
}

View File

@ -1,5 +1,10 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.DEBUG_MODE;
import static com.annimon.turrets.Constants.GRAVITATION_ACCELERATION;
import static com.annimon.turrets.Constants.HEIGHT;
import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT;
import static com.annimon.turrets.Constants.WIDTH;
import java.awt.Color;
import java.awt.Graphics2D;
@ -7,7 +12,7 @@ import java.awt.Graphics2D;
*
* @author aNNiMON
*/
public class Turret implements Constants {
public class Turret {
public static final boolean SERVER = true, CLIENT = false;
@ -34,10 +39,10 @@ public class Turret implements Constants {
public Turret(boolean server, Terrain terrain, Wind wind) {
this.server = server;
this.turretX = (server ? 5 : Constants.WIDTH - 5);
this.turretX = (server ? 5 : WIDTH - 5);
this.terrain = terrain;
this.wind = wind;
barrelRadius = Constants.WIDTH / 20;
barrelRadius = WIDTH / 20;
shootInfo = new ShootInfo();
reinit();
}
@ -58,9 +63,9 @@ public class Turret implements Constants {
public void draw(Graphics2D g) {
g.setColor(Color.WHITE);
g.drawLine(turretX, Constants.HEIGHT - turretY, barrelX, Constants.HEIGHT - barrelY);
g.drawLine(turretX, HEIGHT - turretY, barrelX, HEIGHT - barrelY);
g.setColor(server ? Color.BLUE : Color.RED);
g.fillArc(turretX - TURRET_WIDTH / 2, Constants.HEIGHT - turretY - TURRET_HEIGHT / 2,
g.fillArc(turretX - TURRET_WIDTH / 2, HEIGHT - turretY - TURRET_HEIGHT / 2,
TURRET_WIDTH, TURRET_HEIGHT, 0, 180);
if (shootState) {
shootInfo.update(server);
@ -83,7 +88,7 @@ public class Turret implements Constants {
g.setColor(Color.RED);
double x = barrelX;
double y = barrelY;
final double speed = shotPower * (Constants.WIDTH / 80d);
final double speed = shotPower * (WIDTH / 80d);
final double windSpeed = wind.getSpeed();
final double speedX = speed * Math.cos(barrelAngle);
final double vsin = speed * Math.sin(barrelAngle);
@ -98,8 +103,8 @@ public class Turret implements Constants {
y += speedY;
t += 0.01;
g.drawLine((int) x, Constants.HEIGHT - (int) y, (int) x, Constants.HEIGHT - (int) y);
isOver = (x < 0) || (x >= Constants.WIDTH) || (y < 0);
g.drawLine((int) x, HEIGHT - (int) y, (int) x, HEIGHT - (int) y);
isOver = (x < 0) || (x >= WIDTH) || (y < 0);
} while (!isOver);
}
}
@ -111,8 +116,8 @@ public class Turret implements Constants {
if (!server) angle = Math.PI - angle;
if ( (0d <= angle) && (angle <= ANGLE_90) ) {
barrelAngle = angle;
final int xlocal = (server ? x : Constants.WIDTH - x);
shotPower = Math.sqrt(xlocal*xlocal + y*y) / (double) Constants.WIDTH;
final int xlocal = (server ? x : WIDTH - x);
shotPower = Math.sqrt(xlocal*xlocal + y*y) / (double) WIDTH;
calculateBarrelPosition();
}
}
@ -140,7 +145,7 @@ public class Turret implements Constants {
shootInfo.reset();
shootInfo.x = barrelX;
shootInfo.y = barrelY;
final double speed = shotPower * (Constants.WIDTH / 80d);
final double speed = shotPower * (WIDTH / 80d);
shootInfo.windSpeed = wind.getSpeed() * (server ? 1 : -1);
shootInfo.speedX = speed * Math.cos(barrelAngle);
shootInfo.vsin = speed * Math.sin(barrelAngle);

View File

@ -1,5 +1,7 @@
package com.annimon.turrets;
import static com.annimon.turrets.Constants.MAX_WIND_STRENGTH;
import static com.annimon.turrets.Constants.WIDTH;
import com.annimon.turrets.util.Util;
import java.awt.Color;
import java.awt.FontMetrics;
@ -18,14 +20,14 @@ public class Wind {
}
public void change() {
speed = Util.rand(-Constants.MAX_WIND_STRENGTH, Constants.MAX_WIND_STRENGTH);
speed = Util.rand(-MAX_WIND_STRENGTH, MAX_WIND_STRENGTH);
}
public void drawInfo(Graphics2D g, FontMetrics metrics) {
final int speedPercent = (int) (Math.abs(speed) * 100d / Constants.MAX_WIND_STRENGTH);
final int speedPercent = (int) (Math.abs(speed) * 100d / MAX_WIND_STRENGTH);
final String value = String.valueOf(speedPercent);
final int valueWidth = metrics.stringWidth(value);
final int x = (Constants.WIDTH - valueWidth) / 2;
final int x = (WIDTH - valueWidth) / 2;
final int y = metrics.getHeight();
g.setColor(Color.RED);

View File

@ -1,6 +1,6 @@
package com.annimon.turrets.network;
import com.annimon.turrets.Constants;
import static com.annimon.turrets.Constants.PORT;
import java.io.IOException;
import java.net.Socket;
@ -8,7 +8,7 @@ import java.net.Socket;
*
* @author aNNiMON
*/
public class GameClient implements Constants {
public class GameClient {
private final SocketHelper helper;

View File

@ -1,6 +1,6 @@
package com.annimon.turrets.network;
import com.annimon.turrets.Constants;
import static com.annimon.turrets.Constants.PORT;
import java.io.IOException;
import java.net.ServerSocket;
@ -8,7 +8,7 @@ import java.net.ServerSocket;
*
* @author aNNiMON
*/
public class GameServer implements Constants {
public class GameServer {
private final ServerSocket serverSocket;
private final SocketHelper helper;

View File

@ -1,7 +1,8 @@
package com.annimon.turrets.util;
import com.annimon.turrets.Background;
import com.annimon.turrets.Constants;
import static com.annimon.turrets.Constants.HEIGHT;
import static com.annimon.turrets.Constants.WIDTH;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.GradientPaint;
@ -32,8 +33,7 @@ public class GuiUtil {
}
}
public static class PlanetBackground extends javax.swing.plaf.LayerUI<JComponent>
implements Constants {
public static class PlanetBackground extends javax.swing.plaf.LayerUI<JComponent> {
private final BufferedImage image;