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

View File

@ -6,12 +6,12 @@ import java.awt.Dimension;
* *
* @author aNNiMON * @author aNNiMON
*/ */
public interface Constants { public final class Constants {
// Screen // Screen
public static final int WIDTH = 800, HEIGHT = 600; public static final int WIDTH = 800, HEIGHT = 600;
public static final boolean RESIZABLE = false; 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"; public static final String FONT_NAME = "Times New Roman";
// Parameters // Parameters

View File

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

View File

@ -1,5 +1,7 @@
package com.annimon.turrets; 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.Turret.TurretInfo;
import com.annimon.turrets.network.GameClient; import com.annimon.turrets.network.GameClient;
import com.annimon.turrets.network.GameServer; 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); background = new BufferedImage(Constants.WIDTH, Constants.HEIGHT, BufferedImage.TYPE_INT_RGB);
initBackground(); initBackground();
font = new Font(Constants.FONT_NAME, Font.PLAIN, 24); font = new Font(FONT_NAME, Font.PLAIN, 24);
wind = new Wind(); wind = new Wind();
gameStarted = false; gameStarted = false;
@ -170,8 +172,8 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
if (serverWinRound) serverWinCount++; if (serverWinRound) serverWinCount++;
else clientWinCount++; else clientWinCount++;
final boolean serverWin = (serverWinCount == Constants.MAX_ROUNDS); final boolean serverWin = (serverWinCount == MAX_ROUNDS);
final boolean clientWin = (clientWinCount == Constants.MAX_ROUNDS); final boolean clientWin = (clientWinCount == MAX_ROUNDS);
if (serverWin || clientWin) { if (serverWin || clientWin) {
// Show winners. // Show winners.
finishGame( (serverWin && serverInstance) || (clientWin && !serverInstance) ); finishGame( (serverWin && serverInstance) || (clientWin && !serverInstance) );
@ -183,21 +185,6 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
newRound(seed); newRound(seed);
socketHelper.sendNewRoundSeed(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) { private void finishGame(boolean instanceWin) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,7 @@
package com.annimon.turrets; 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 com.annimon.turrets.util.Util;
import java.awt.Color; import java.awt.Color;
import java.awt.FontMetrics; import java.awt.FontMetrics;
@ -18,14 +20,14 @@ public class Wind {
} }
public void change() { 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) { 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 String value = String.valueOf(speedPercent);
final int valueWidth = metrics.stringWidth(value); final int valueWidth = metrics.stringWidth(value);
final int x = (Constants.WIDTH - valueWidth) / 2; final int x = (WIDTH - valueWidth) / 2;
final int y = metrics.getHeight(); final int y = metrics.getHeight();
g.setColor(Color.RED); g.setColor(Color.RED);

View File

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

View File

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

View File

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