Explorar o código

Clean Up + Format

Kenneth van Ewijk %!s(int64=10) %!d(string=hai) anos
pai
achega
15c26789d3

+ 20 - 28
server/server/LevelReader.java

@@ -13,43 +13,35 @@ import server.match.objects.Ball;
 public class LevelReader {
 	/* LEVEL FILE READING, PARSING AND PLAYING */
 
-	public static ArrayList<Level> readLevelsFromFiles(){
+	public static ArrayList<Level> readLevelsFromFiles() {
 		ArrayList<Level> levels = new ArrayList<Level>();
 		File root = new File(Main.class.getResource("/server/match/levels").getPath());
-        File[] list = root.listFiles();
-        for ( File f : list ) {
-        	if(f.isFile() && f.getName().endsWith(".bb")){
-        		try {
-					levels.add(readLevel(Files.readAllLines(f.toPath())));		
-				}catch (IOException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) {
+		File[] list = root.listFiles();
+		for (File f : list) {
+			if (f.isFile() && f.getName().endsWith(".bb")) {
+				try {
+					levels.add(readLevel(Files.readAllLines(f.toPath())));
+				} catch (IOException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) {
 					System.out.println("Level file corrputed");
 					e.printStackTrace();
 				}
-        	}
-        }
-        return levels;
+			}
+		}
+		return levels;
 	}
-	
-	private static Level readLevel(List<String> levelfile) throws NumberFormatException, IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException{
+
+	private static Level readLevel(List<String> levelfile) throws NumberFormatException, IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
 		Level level = new Level();
-		if(levelfile.size() == 2){
-			String[] ballsstrings = levelfile.get(0).split("\\|"); //split all the balls
-			for(String ball:ballsstrings){
-				String[]ballstring = ball.split(",");
-				if(ballstring.length == 7){
-					level.addBall(new Ball(
-										Integer.parseInt(ballstring[0]), 
-										Integer.parseInt(ballstring[1]),
-										(Color)Color.class.getField(ballstring[2]).get(null),
-										Integer.parseInt(ballstring[3]),
-										Integer.parseInt(ballstring[4]),
-										Integer.parseInt(ballstring[5]),
-										Double.parseDouble(ballstring[6])
-										)
-								);
+		if (levelfile.size() == 2) {
+			String[] ballsstrings = levelfile.get(0).split("\\|"); // split all
+																	// the balls
+			for (String ball : ballsstrings) {
+				String[] ballstring = ball.split(",");
+				if (ballstring.length == 7) {
+					level.addBall(new Ball(Integer.parseInt(ballstring[0]), Integer.parseInt(ballstring[1]), (Color) Color.class.getField(ballstring[2]).get(null), Integer.parseInt(ballstring[3]), Integer.parseInt(ballstring[4]), Integer.parseInt(ballstring[5]), Double.parseDouble(ballstring[6])));
 				}
 			}
-			
+
 			level.setTime(Integer.parseInt(levelfile.get(1)));
 		}
 		return level;

+ 22 - 23
server/server/NetworkUser.java

@@ -15,8 +15,8 @@ public class NetworkUser {
 	private Thread receivethread;
 	private Match match;
 	private int pid;
-	
-	public NetworkUser(Socket client){
+
+	public NetworkUser(Socket client) {
 		this.client = client;
 		try {
 			dout = new DataOutputStream(client.getOutputStream());
@@ -35,34 +35,33 @@ public class NetworkUser {
 		receivethread = new Thread(new Runnable() {
 			@Override
 			public void run() {
-				while(true){
+				while (true) {
 					receiveMessage();
 				}
 			}
 		});
 	}
 
-	
 	/* NETWORK CONTROL METHODS */
-	
-	public boolean checkConnection(){
+
+	public boolean checkConnection() {
 		try {
 			dout.writeUTF("0");
 		} catch (IOException e) {
 			e.printStackTrace();
 			return false;
-		} 
+		}
 		return true;
 	}
-	
-	public void startMatch(String p1, String p2, int pid, Match match){
-		sendMessage("1|"+p1+"|"+p2);
+
+	public void startMatch(String p1, String p2, int pid, Match match) {
+		sendMessage("1|" + p1 + "|" + p2);
 		this.pid = pid;
 		this.match = match;
 		receivethread.start();
 	}
-	
-	public void sendMessage(String m){
+
+	public void sendMessage(String m) {
 		try {
 			dout.writeUTF(m);
 		} catch (IOException e) {
@@ -70,18 +69,18 @@ public class NetworkUser {
 			match.stopMatch();
 		}
 	}
-	
-	public void receiveMessage(){
+
+	public void receiveMessage() {
 		try {
 			String message = din.readUTF();
 			String[] messagesplit = message.split("\\|");
-			switch (messagesplit[0]){
-				case "1":												//Player input information
-					match.setPlayerDirection(pid, Integer.parseInt(messagesplit[1]));
-					if(Integer.parseInt(messagesplit[2]) == 1){
-						match.playerShoot(pid);
-					}
-					break;
+			switch (messagesplit[0]) {
+			case "1": // Player input information
+				match.setPlayerDirection(pid, Integer.parseInt(messagesplit[1]));
+				if (Integer.parseInt(messagesplit[2]) == 1) {
+					match.playerShoot(pid);
+				}
+				break;
 			}
 		} catch (IOException e) {
 			System.err.println("User disconnected");
@@ -89,9 +88,9 @@ public class NetworkUser {
 			match.stopMatch();
 		}
 	}
-	
+
 	/* GETTERS AND SETTERS */
-	
+
 	/**
 	 * @return the name of the user
 	 */

+ 22 - 24
server/server/Server.java

@@ -1,45 +1,43 @@
 package server;
 
-import java.io.DataInputStream;
 import java.io.IOException;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.ArrayList;
-import java.util.Iterator;
 
 import server.match.Match;
 
-
 public class Server {
 	private ArrayList<NetworkUser> matchMakingUsers;
-	
-	public Server(final int port)
-	{
+
+	public Server(final int port) {
 		matchMakingUsers = new ArrayList<NetworkUser>();
-		
+
 		Thread clientconnect = new Thread(new Runnable() {
 			@Override
 			public void run() {
 				try {
 					ServerSocket server = new ServerSocket(port);
-					while(true){
+					while (true) {
 						try {
 							Socket client = server.accept();
-							
+
 							matchMakingUsers.add(new NetworkUser(client));
-							
-							//Check if all users in the matchMakingList are still connected
-//							Iterator<NetworkUser> i = matchMakingUsers.iterator();
-//							while(i.hasNext()){
-//								if(!i.next().checkConnection()){
-//									i.remove();
-//									System.out.println("Someone dissconected :(");
-//
-//								}
-//							}
-//							
-							//Check if there are enough players to make a match
-							if(matchMakingUsers.size()  >= 2){
+
+							// Check if all users in the matchMakingList are
+							// still connected
+							// Iterator<NetworkUser> i =
+							// matchMakingUsers.iterator();
+							// while(i.hasNext()){
+							// if(!i.next().checkConnection()){
+							// i.remove();
+							// System.out.println("Someone dissconected :(");
+							//
+							// }
+							// }
+							//
+							// Check if there are enough players to make a match
+							if (matchMakingUsers.size() >= 2) {
 								new Thread(new Match(matchMakingUsers.get(0), matchMakingUsers.get(1)));
 								matchMakingUsers.remove(1);
 								matchMakingUsers.remove(0);
@@ -54,7 +52,7 @@ public class Server {
 					e.printStackTrace();
 				}
 			}
-		});	
-		clientconnect.start();		
+		});
+		clientconnect.start();
 	}
 }

+ 100 - 99
server/server/match/Match.java

@@ -1,12 +1,7 @@
 package server.match;
 
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.ConcurrentModificationException;
-import java.util.List;
 import java.util.ListIterator;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -14,7 +9,6 @@ import java.util.TimerTask;
 import resources.image.Images;
 import resources.image.Images.ImageType;
 import server.LevelReader;
-import server.Main;
 import server.NetworkUser;
 import server.match.levels.Level;
 import server.match.objects.Ball;
@@ -29,14 +23,14 @@ public class Match implements Runnable {
 	private ShootingLine line2;
 	private ArrayList<Ball> balls;
 	private int p1direction, p2direction;
-	
+
 	private ArrayList<Level> levels;
 	private Timer timer;
 	private int currentlevel;
 	private int timeleft;
 	private long lasttime;
-	
-	public Match(NetworkUser nwuser1, NetworkUser nwuser2){
+
+	public Match(NetworkUser nwuser1, NetworkUser nwuser2) {
 		nwuser1.startMatch(nwuser1.getName(), nwuser2.getName(), 1, this);
 		nwuser2.startMatch(nwuser2.getName(), nwuser1.getName(), 2, this);
 		player1 = new Player(Images.getImage(ImageType.PLAYER1), 40, 550);
@@ -46,162 +40,169 @@ public class Match implements Runnable {
 		this.nwuser2 = nwuser2;
 		System.out.println("New Match!");
 		levels = LevelReader.readLevelsFromFiles();
-		
+
 		timer = new Timer();
 		timer.schedule(new TimerTask() {
 			@Override
 			public void run() {
-				update();				
+				update();
 			}
-		}, 0, 1000/30);
-		
+		}, 0, 1000 / 30);
+
 		playLevel(getCurrentLevel());
 	}
-	
-	public void playLevel(Level level){
+
+	public void playLevel(Level level) {
 		balls.clear();
-		for(Ball b:level.getStartballs()){
+		for (Ball b : level.getStartballs()) {
 			balls.add(b.clone());
 		}
 		timeleft = level.getTime();
 		player1.reset();
 		player2.reset();
-		line1=null;	
+		line1 = null;
 		lasttime = System.currentTimeMillis();
 	}
-	
-	public Level getCurrentLevel(){
-		if(currentlevel >= 0 && currentlevel < levels.size()){
+
+	public Level getCurrentLevel() {
+		if (currentlevel >= 0 && currentlevel < levels.size()) {
 			return levels.get(currentlevel);
 		}
 		return null;
 	}
-	
+
 	/* UPDATE */
-	public void update() {		
-		if(p1direction == 1)
+	public void update() {
+		if (p1direction == 1)
 			player1.walkRight();
-		else if(p1direction == -1)
+		else if (p1direction == -1)
 			player1.walkLeft();
 		player1.update();
-		if(p2direction == 1)
+		if (p2direction == 1)
 			player2.walkRight();
-		else if(p2direction == -1)
+		else if (p2direction == -1)
 			player2.walkLeft();
 		player2.update();
-		
-		if(line1 != null){
-			line1.setLength(line1.getLength()+1);
-			if(line1.getMaxHeight() < 0){ 										//Line hit the ceiling, so "remove" it
+
+		if (line1 != null) {
+			line1.setLength(line1.getLength() + 1);
+			if (line1.getMaxHeight() < 0) { // Line hit the ceiling, so "remove"
+											// it
 				line1 = null;
 			}
 		}
-		if(line2 != null){
-			line2.setLength(line2.getLength()+1);
-			if(line2.getMaxHeight() < 0){ 		
+		if (line2 != null) {
+			line2.setLength(line2.getLength() + 1);
+			if (line2.getMaxHeight() < 0) {
 				line2 = null;
 			}
 		}
-		
-		
-		//Collision detection
-		try{
-			ListIterator<Ball> b = balls.listIterator(); 
-			while(b.hasNext()){
-				Ball bal = b.next(); 
-				if(line1 != null && bal.hitLine(line1)){								// Collision between line and ball
+
+		// Collision detection
+		try {
+			ListIterator<Ball> b = balls.listIterator();
+			while (b.hasNext()) {
+				Ball bal = b.next();
+				if (line1 != null && bal.hitLine(line1)) { // Collision between
+															// line and ball
 					line1 = null;
 					b.remove();
-					b.add(new Ball(bal.getSize()-1, (int) Math.max(bal.getBounceHeight()/1.5, player1.getHeigth() +5), bal.getColor(), bal.getX(), bal.getY(), -1, Math.abs(bal.getYSpeed())*-1));
-					b.add(new Ball(bal.getSize()-1, (int) Math.max(bal.getBounceHeight()/1.5, player1.getHeigth() +5), bal.getColor(), bal.getX(), bal.getY(), 1, Math.abs(bal.getYSpeed())*-1));
-				}else if(line2 != null && bal.hitLine(line2)){								// Collision between line and ball
+					b.add(new Ball(bal.getSize() - 1, (int) Math.max(bal.getBounceHeight() / 1.5, player1.getHeigth() + 5), bal.getColor(), bal.getX(), bal.getY(), -1, Math.abs(bal.getYSpeed()) * -1));
+					b.add(new Ball(bal.getSize() - 1, (int) Math.max(bal.getBounceHeight() / 1.5, player1.getHeigth() + 5), bal.getColor(), bal.getX(), bal.getY(), 1, Math.abs(bal.getYSpeed()) * -1));
+				} else if (line2 != null && bal.hitLine(line2)) { // Collision
+																	// between
+																	// line and
+																	// ball
 					line2 = null;
 					b.remove();
-					b.add(new Ball(bal.getSize()-1, (int) Math.max(bal.getBounceHeight()/1.5, player1.getHeigth() +5), bal.getColor(), bal.getX(), bal.getY(), -1, Math.abs(bal.getYSpeed())*-1));
-					b.add(new Ball(bal.getSize()-1, (int) Math.max(bal.getBounceHeight()/1.5, player1.getHeigth() +5), bal.getColor(), bal.getX(), bal.getY(), 1, Math.abs(bal.getYSpeed())*-1));
-				}else if(bal.hitPlayer(player1)){														// Collision between player and ball
-					player1.setHealth(player1.getHealth()-1);
+					b.add(new Ball(bal.getSize() - 1, (int) Math.max(bal.getBounceHeight() / 1.5, player1.getHeigth() + 5), bal.getColor(), bal.getX(), bal.getY(), -1, Math.abs(bal.getYSpeed()) * -1));
+					b.add(new Ball(bal.getSize() - 1, (int) Math.max(bal.getBounceHeight() / 1.5, player1.getHeigth() + 5), bal.getColor(), bal.getX(), bal.getY(), 1, Math.abs(bal.getYSpeed()) * -1));
+				} else if (bal.hitPlayer(player1)) { // Collision between player
+														// and ball
+					player1.setHealth(player1.getHealth() - 1);
 					playLevel(getCurrentLevel());
-				}else if(bal.hitPlayer(player2)){														// Collision between player and ball
-					player2.setHealth(player2.getHealth()-1);
+				} else if (bal.hitPlayer(player2)) { // Collision between player
+														// and ball
+					player2.setHealth(player2.getHealth() - 1);
 					playLevel(getCurrentLevel());
-				}else if(bal.getSize() <= 0 ){															// Remove ball from arraylist when size is 0 (not visible)
+				} else if (bal.getSize() <= 0) { // Remove ball from arraylist
+													// when size is 0 (not
+													// visible)
 					b.remove();
-				}else{
+				} else {
 					bal.update();
 				}
 			}
-		}catch(ConcurrentModificationException e){
-			
+		} catch (ConcurrentModificationException e) {
+
 		}
 		timeleft -= (System.currentTimeMillis() - lasttime);
-		if(balls.size() == 0){
-			if(player1.getHealth() > 0)
-				player1.setScore(player1.getScore()+(timeleft/100));
+		if (balls.size() == 0) {
+			if (player1.getHealth() > 0)
+				player1.setScore(player1.getScore() + (timeleft / 100));
 			else
-				player1.setScore(player1.getScore()+(timeleft/100)/2);
-			
-			if(player2.getHealth() > 0)
-				player2.setScore(player2.getScore()+(timeleft/100));
+				player1.setScore(player1.getScore() + (timeleft / 100) / 2);
+
+			if (player2.getHealth() > 0)
+				player2.setScore(player2.getScore() + (timeleft / 100));
 			else
-				player2.setScore(player2.getScore()+(timeleft/100)/2);
-				playLevel(levels.get(currentlevel+=1));
-		}else if(timeleft < 0){
-			player1.setHealth(player1.getHealth()-1);
-			player2.setHealth(player2.getHealth()-1);
+				player2.setScore(player2.getScore() + (timeleft / 100) / 2);
+			playLevel(levels.get(currentlevel += 1));
+		} else if (timeleft < 0) {
+			player1.setHealth(player1.getHealth() - 1);
+			player2.setHealth(player2.getHealth() - 1);
 			playLevel(getCurrentLevel());
-		}else if(player1.getHealth() <= 0) {
-			
+		} else if (player1.getHealth() <= 0) {
+
 		}
-		lasttime = System.currentTimeMillis();	
-	
-		
-		//Sending the new information to the players
-		String playerinfo = "2|"+player1.getX()+"|"+player1.getY()+"|"+player1.getHealth()+"|"+player1.getScore()+"|"+	
-							player2.getX()+"|"+player2.getY()+"|"+player2.getHealth()+"|"+player2.getScore();
-		
-		String ballsinfo =",";
-		for(Ball b:balls){
-			ballsinfo +=  b.getX()+"|"+b.getY()+"|"+b.getSize()+"|"+b.getColor().getRGB() + "|" ;
+		lasttime = System.currentTimeMillis();
+
+		// Sending the new information to the players
+		String playerinfo = "2|" + player1.getX() + "|" + player1.getY() + "|" + player1.getHealth() + "|" + player1.getScore() + "|" + player2.getX() + "|" + player2.getY() + "|" + player2.getHealth() + "|" + player2.getScore();
+
+		String ballsinfo = ",";
+		for (Ball b : balls) {
+			ballsinfo += b.getX() + "|" + b.getY() + "|" + b.getSize() + "|" + b.getColor().getRGB() + "|";
 		}
-		
-		String linesinfo = "," ;
-		if(line1 != null)
+
+		String linesinfo = ",";
+		if (line1 != null)
 			linesinfo += line1.getX() + "|" + line1.getY() + "|" + line1.getLength() + "|";
 		else
 			linesinfo += "0|0|0|";
-		if(line2 != null)
+		if (line2 != null)
 			linesinfo += line2.getX() + "|" + line2.getY() + "|" + line2.getLength();
 		else
 			linesinfo += "0|0|0|";
-		
-		String timeleft = ","+(int)(this.timeleft/(double)getCurrentLevel().getTime()*100);
-		
-		nwuser1.sendMessage(playerinfo+ballsinfo+linesinfo+timeleft);
-		nwuser2.sendMessage(playerinfo+ballsinfo+linesinfo+timeleft);
-		
+
+		String timeleft = "," + (int) (this.timeleft / (double) getCurrentLevel().getTime() * 100);
+
+		nwuser1.sendMessage(playerinfo + ballsinfo + linesinfo + timeleft);
+		nwuser2.sendMessage(playerinfo + ballsinfo + linesinfo + timeleft);
+
 	}
-	
+
 	/* GETTERS AND SETTERS */
-	public void setPlayerDirection(int pid, int dir){
-		if(pid == 1)
+	public void setPlayerDirection(int pid, int dir) {
+		if (pid == 1)
 			p1direction = dir;
-		if(pid == 2)
+		if (pid == 2)
 			p2direction = dir;
 	}
-	public void playerShoot(int pid){
-		if(pid == 1)
-			line1 = new ShootingLine(player1.getX()+player1.getWidth()/2, player1.getY()+player1.getHeigth());
-		if(pid == 2)
+
+	public void playerShoot(int pid) {
+		if (pid == 1)
+			line1 = new ShootingLine(player1.getX() + player1.getWidth() / 2, player1.getY() + player1.getHeigth());
+		if (pid == 2)
 			line2 = new ShootingLine(player2.getX(), player2.getY());
 	}
-	
-	public void stopMatch(){
+
+	public void stopMatch() {
 		timer.cancel();
 	}
 
 	@Override
 	public void run() {
-		
+
 	}
 }

+ 7 - 8
server/server/match/levels/Level.java

@@ -8,16 +8,16 @@ import server.match.objects.Ball;
 public class Level {
 	private List<Ball> startballs;
 	private int time;
-	
-	public Level(){
+
+	public Level() {
 		this.startballs = new ArrayList<Ball>();
 	}
-	
-	public void addBall(Ball b){
+
+	public void addBall(Ball b) {
 		startballs.add(b);
 	}
-	
-	public void setTime(int t){
+
+	public void setTime(int t) {
 		time = t;
 	}
 
@@ -28,6 +28,5 @@ public class Level {
 	public int getTime() {
 		return time;
 	}
-	
-	
+
 }

+ 36 - 40
server/server/match/objects/Ball.java

@@ -1,7 +1,6 @@
 package server.match.objects;
 
 import java.awt.Color;
-import java.awt.Graphics2D;
 import java.awt.geom.Ellipse2D;
 
 import main.Window;
@@ -11,15 +10,15 @@ public class Ball {
 	private int size, bounceheight, direction;
 	private Ellipse2D.Double bal;
 
-	double rx, ry; 			// position
-	double vx, vy; 	// velocity
+	double rx, ry; // position
+	double vx, vy; // velocity
 
 	public Ball(int size, int bounceheight, Color color, int x, int y, int direction, double velocity) {
 		this.color = color;
-		this.size = size*20;
+		this.size = size * 20;
 		this.bounceheight = bounceheight;
 		this.direction = direction;
-		this.vx = direction*3;
+		this.vx = direction * 3;
 		this.vy = velocity;
 		setDirection(direction);
 		rx = x;
@@ -27,50 +26,48 @@ public class Ball {
 		bal = new Ellipse2D.Double(x, y, this.size, this.size);
 	}
 
-	public boolean hitLine(ShootingLine l){
-		return bal.intersects(l.getX(), l.getY()-l.getHeight(), l.getWidth(), l.getHeight());
+	public boolean hitLine(ShootingLine l) {
+		return bal.intersects(l.getX(), l.getY() - l.getHeight(), l.getWidth(), l.getHeight());
 	}
-	
-	public boolean hitPlayer(Player p){
-		return bal.intersects(p.getX(),p.getY(),p.getWidth(),p.getHeigth());
+
+	public boolean hitPlayer(Player p) {
+		return bal.intersects(p.getX(), p.getY(), p.getWidth(), p.getHeigth());
 	}
-	
-	public Ball clone(){
+
+	@Override
+	public Ball clone() {
 		return new Ball(getSize(), getBounceHeight(), getColor(), getX(), getY(), direction, vy);
 	}
-	
-	//** Calculating **//
-	
+
+	// ** Calculating **//
+
 	public void update() {
 		if (rx >= (Window.WIDTH - size - 10))
 			vx = -3;
 		else if (rx <= 10)
-			vx =3;
-		
+			vx = 3;
+
 		vy += 0.5;
-		
-		if(ry+size < 600-bounceheight && vy < 0)
-		{
-			vy +=0.5;
-		}
-		else if(ry+size < 600-bounceheight && vy > 0)
-		{
-			vy -=0.2;
+
+		if (ry + size < 600 - bounceheight && vy < 0) {
+			vy += 0.5;
+		} else if (ry + size < 600 - bounceheight && vy > 0) {
+			vy -= 0.2;
 		}
 
-		if (ry >= (600-size))
+		if (ry >= (600 - size))
 			vy *= -1;
-		
+
 		rx += vx;
 		ry += vy;
 		setX((int) rx);
 		setY((int) ry);
 	}
-	
-	//** Getters and Setters **//
-	
+
+	// ** Getters and Setters **//
+
 	public int getSize() {
-		return size/20;
+		return size / 20;
 	}
 
 	public int getBounceHeight() {
@@ -92,7 +89,7 @@ public class Ball {
 	public int getHeight() {
 		return (int) bal.getHeight();
 	}
-	
+
 	public Color getColor() {
 		return color;
 	}
@@ -104,17 +101,16 @@ public class Ball {
 	public void setY(int y) {
 		bal.setFrame(getX(), y, getWidth(), getHeight());
 	}
-	
-	public void setDirection(int d){
-		if(d == -1 || d == 1){
+
+	public void setDirection(int d) {
+		if (d == -1 || d == 1) {
 			direction = d;
-			vx = d*3;
+			vx = d * 3;
 		}
 	}
-	
-	public double getYSpeed()
-	{
+
+	public double getYSpeed() {
 		return vy;
 	}
-	
+
 }

+ 29 - 32
server/server/match/objects/DrawObject.java

@@ -4,57 +4,54 @@ import java.awt.geom.Point2D;
 import java.awt.image.BufferedImage;
 
 public class DrawObject {
-	
+
 	protected Point2D position;
 	protected BufferedImage image;
-	
-	public DrawObject(BufferedImage image)
-	{
+
+	public DrawObject(BufferedImage image) {
 		this.image = image;
-		
-		position = new Point2D.Double(0,0);
+
+		position = new Point2D.Double(0, 0);
 	}
-	
-	public void update(){};
-	
+
+	public void update() {
+	};
+
 	/* Helper Functions */
-	
-	public void setX(int x)
-	{
+
+	public void setX(int x) {
 		position.setLocation(x, position.getY());
 	}
-	public void setY(int y)
-	{
+
+	public void setY(int y) {
 		position.setLocation(position.getX(), y);
 	}
-	public void setPosition(Point2D p)
-	{
+
+	public void setPosition(Point2D p) {
 		position.setLocation(p);
 	}
-	public void setPosition(int x, int y)
-	{
+
+	public void setPosition(int x, int y) {
 		position.setLocation(x, y);
 	}
-	
-	public int getX()
-	{
-		return (int)position.getX();
+
+	public int getX() {
+		return (int) position.getX();
 	}
-	public int getY()
-	{
-		return (int)position.getY();
+
+	public int getY() {
+		return (int) position.getY();
 	}
-	public Point2D getPosition()
-	{
+
+	public Point2D getPosition() {
 		return position;
 	}
-	
-	public int getWidth()
-	{
+
+	public int getWidth() {
 		return image.getWidth();
 	}
-	public int getHeigth()
-	{
+
+	public int getHeigth() {
 		return image.getHeight();
 	}
 }

+ 19 - 20
server/server/match/objects/Player.java

@@ -3,7 +3,6 @@ package server.match.objects;
 import java.awt.geom.Point2D;
 import java.awt.geom.Point2D.Double;
 import java.awt.image.BufferedImage;
-import java.util.ArrayList;
 
 import main.Window;
 
@@ -11,46 +10,46 @@ public class Player extends DrawObject {
 
 	private int score, health, speed = 10;
 	private Double beginlocation;
-	
+
 	public Player(BufferedImage image, int x, int y) {
 		super(image.getSubimage(38, 0, 40, 54));
 		super.setPosition(x, y);
-		beginlocation = new Point2D.Double(x,y);
+		beginlocation = new Point2D.Double(x, y);
 		health = 5;
 	}
-	
-	public void walkLeft(){
-		if(getX() - speed > 10){
-			setX(getX()-speed);
+
+	public void walkLeft() {
+		if (getX() - speed > 10) {
+			setX(getX() - speed);
 		}
 	}
-	
-	public void walkRight(){
-		if(getX() + getWidth() + speed < Window.WIDTH -10){
-			setX(getX()+speed);
+
+	public void walkRight() {
+		if (getX() + getWidth() + speed < Window.WIDTH - 10) {
+			setX(getX() + speed);
 		}
 	}
-	
-	public void reset(){
+
+	public void reset() {
 		setPosition(beginlocation);
 		speed = 10;
 	}
-	
-	//** Getters and Setters **//
-	
+
+	// ** Getters and Setters **//
+
 	public int getScore() {
 		return score;
 	}
-	public void setScore(int score)
-	{
+
+	public void setScore(int score) {
 		this.score = score;
 	}
 
 	public int getHealth() {
 		return health;
 	}
-	
-	public void setHealth(int health){
+
+	public void setHealth(int health) {
 		this.health = health;
 	}
 }

+ 16 - 20
server/server/match/objects/ShootingLine.java

@@ -1,44 +1,40 @@
 package server.match.objects;
 
-import java.awt.Graphics2D;
-import java.awt.geom.Path2D;
-
 public class ShootingLine {
-	private int startx,starty, length;
+	private int startx, starty, length;
 
-	public ShootingLine(int startx, int starty){
+	public ShootingLine(int startx, int starty) {
 		this.startx = startx;
 		this.starty = starty;
 	}
 
+	// ** Getters and Setters **//
 
-	//** Getters and Setters **//
-	
-	public int getLength(){
+	public int getLength() {
 		return length;
 	}
-	
-	public int getMaxHeight(){
+
+	public int getMaxHeight() {
 		return starty - length * 30;
 	}
-	
-	public int getX(){
+
+	public int getX() {
 		return startx;
 	}
-	
-	public int getY(){
+
+	public int getY() {
 		return starty;
 	}
-	
-	public int getWidth(){
+
+	public int getWidth() {
 		return 10;
 	}
-	
-	public int getHeight(){
+
+	public int getHeight() {
 		return getLength() * 30;
 	}
-	
-	public void setLength(int length){
+
+	public void setLength(int length) {
 		this.length = length;
 	}
 }

+ 4 - 4
src/control/GameControl.java

@@ -11,11 +11,10 @@ public class GameControl implements KeyListener {
 
 	private GameView view;
 	private GameModel model;
-	
+
 	private GameStateManager gsm;
 
-	public GameControl(GameView view, GameModel model, GameStateManager gsm)
-	{
+	public GameControl(GameView view, GameModel model, GameStateManager gsm) {
 		this.view = view;
 		this.model = model;
 		this.gsm = gsm;
@@ -31,8 +30,9 @@ public class GameControl implements KeyListener {
 		gsm.keyReleased(e);
 	}
 
+	@Override
 	public void keyTyped(KeyEvent e) {
 		gsm.keyTyped(e);
 	}
-	
+
 }

+ 8 - 9
src/main/Window.java

@@ -9,29 +9,28 @@ import control.GameControl;
 
 @SuppressWarnings("serial")
 public class Window extends JFrame {
-	
+
 	public static final int WIDTH = 800;
 	public static final int HEIGHT = 800;
-	
+
 	public static final int UPDATES_PER_SECOND = 30;
 	public static final int FRAMES_PER_SECOND = 30;
-	
-	public Window()
-	{
+
+	public Window() {
 		super("Bubble Trouble");
 		setSize(WIDTH, HEIGHT);
 		setResizable(false);
 		setDefaultCloseOperation(3);
-		
+
 		GameStateManager gsm = new GameStateManager();
 		GameModel model = new GameModel(gsm);
 		GameView view = new GameView(model, gsm);
 		GameControl control = new GameControl(view, model, gsm);
-		
+
 		addKeyListener(control);
-		
+
 		setContentPane(view);
-		
+
 		setVisible(true);
 	}
 }

+ 6 - 6
src/model/GameModel.java

@@ -8,18 +8,18 @@ import javax.swing.Timer;
 import main.Window;
 
 public class GameModel implements ActionListener {
-	
+
 	private Timer t;
 	private GameStateManager gsm;
-	
-	public GameModel(GameStateManager gsm)
-	{
+
+	public GameModel(GameStateManager gsm) {
 		this.gsm = gsm;
-		
-		t = new Timer(1000/Window.UPDATES_PER_SECOND, this);
+
+		t = new Timer(1000 / Window.UPDATES_PER_SECOND, this);
 		t.start();
 	}
 
+	@Override
 	public void actionPerformed(ActionEvent e) {
 		gsm.update();
 	}

+ 21 - 28
src/model/GameStateManager.java

@@ -14,58 +14,51 @@ public class GameStateManager {
 
 	private List<State> gamestates;
 	private State currentState;
-	
-	public GameStateManager(){
+
+	public GameStateManager() {
 		gamestates = new ArrayList<State>();
-		
+
 		gamestates.add(new MenuState(this));
 		gamestates.add(new PlayState(this));
 		gamestates.add(new EndState(this));
-		
+
 		currentState = gamestates.get(0);
 	}
-	
-	public void setState(String name)
-	{
-		for(State s : gamestates)
-		{
-			if(s.getName() == name)
-			{
+
+	public void setState(String name) {
+		for (State s : gamestates) {
+			if (s.getName() == name) {
 				changeState(s);
 				return;
 			}
 		}
 	}
-	
-	private void changeState(State st)
-	{
-		if(! currentState.equals(st))
-		{
+
+	private void changeState(State st) {
+		if (!currentState.equals(st)) {
 			currentState.exit();
 			currentState = st;
 			currentState.init();
 		}
 	}
-	
-	public void update(){		
+
+	public void update() {
 		currentState.update();
 	}
-	
-	public void paint(Graphics2D g2d)
-	{
+
+	public void paint(Graphics2D g2d) {
 		currentState.paint(g2d);
 	}
-	
-	public void keyPressed(KeyEvent e)
-	{
+
+	public void keyPressed(KeyEvent e) {
 		currentState.keyPressed(e);
 	}
-	public void keyReleased(KeyEvent e)
-	{
+
+	public void keyReleased(KeyEvent e) {
 		currentState.keyReleased(e);
 	}
-	public void keyTyped(KeyEvent e)
-	{
+
+	public void keyTyped(KeyEvent e) {
 		currentState.keyTyped(e);
 	}
 }

+ 23 - 27
src/model/InfoPanel.java

@@ -11,51 +11,47 @@ import resources.image.Images.ImageType;
 
 public class InfoPanel {
 	private PlayState play;
-	
+
 	private int OFFSET = 610;
-		
-	public InfoPanel(PlayState play){
+
+	public InfoPanel(PlayState play) {
 		this.play = play;
 	}
-	
-	public void paint(Graphics2D g2d)
-	{
+
+	public void paint(Graphics2D g2d) {
 		g2d.setColor(Color.red);
-		g2d.fillRect(200, OFFSET, (int) (400/100*play.getTimeleftpercent()), 20);
+		g2d.fillRect(200, OFFSET, 400 / 100 * play.getTimeleftpercent(), 20);
 
 		g2d.setColor(Color.black);
 		g2d.setFont(new Font("Century Schoolbook L", Font.ROMAN_BASELINE, 22));
 		g2d.drawRect(200, OFFSET, 400, 20);
 
-		//Player 1
+		// Player 1
 		g2d.drawLine(35, OFFSET, 35, Window.HEIGHT);
 		g2d.drawString(play.getPlayer1().getName(), 40, OFFSET + 5 + g2d.getFont().getSize());
-		g2d.drawString(play.getPlayer1().getScore() + " xp", 40, OFFSET + 5 + g2d.getFont().getSize()*2+5);
-		for(int i = 0; i < play.getPlayer1().getHealth(); i++)
-		{
-			g2d.drawImage(Images.getImage(ImageType.HEARTH), null, 5, OFFSET + (30*i));
+		g2d.drawString(play.getPlayer1().getScore() + " xp", 40, OFFSET + 5 + g2d.getFont().getSize() * 2 + 5);
+		for (int i = 0; i < play.getPlayer1().getHealth(); i++) {
+			g2d.drawImage(Images.getImage(ImageType.HEARTH), null, 5, OFFSET + (30 * i));
 		}
-		g2d.drawLine(35, OFFSET + g2d.getFont().getSize()*3, 200, OFFSET + g2d.getFont().getSize()*3);
-		g2d.drawString("<Powerups>", 40, OFFSET + g2d.getFont().getSize()*4);
-		
-		//Chat
+		g2d.drawLine(35, OFFSET + g2d.getFont().getSize() * 3, 200, OFFSET + g2d.getFont().getSize() * 3);
+		g2d.drawString("<Powerups>", 40, OFFSET + g2d.getFont().getSize() * 4);
+
+		// Chat
 		g2d.drawLine(200, OFFSET, 200, Window.HEIGHT);
 		g2d.drawString("[" + play.getPlayer1().getName().toUpperCase() + "] > Hi!", 210, OFFSET + 50);
 		g2d.drawString("[" + play.getPlayer2().getName().toUpperCase() + "] > Hello", 210, OFFSET + 50 + g2d.getFont().getSize());
-		g2d.drawString("[" + play.getPlayer1().getName().toUpperCase() + "] > How are you?", 210, OFFSET + 50 + g2d.getFont().getSize()*2);
-		g2d.drawString("[" + play.getPlayer2().getName().toUpperCase() + "] > Good :D", 210, OFFSET + 50 + g2d.getFont().getSize()*3);
+		g2d.drawString("[" + play.getPlayer1().getName().toUpperCase() + "] > How are you?", 210, OFFSET + 50 + g2d.getFont().getSize() * 2);
+		g2d.drawString("[" + play.getPlayer2().getName().toUpperCase() + "] > Good :D", 210, OFFSET + 50 + g2d.getFont().getSize() * 3);
 		g2d.drawLine(600, OFFSET, 600, Window.HEIGHT);
 
-		
 		g2d.drawLine(Window.WIDTH - 35, OFFSET, Window.WIDTH - 35, Window.HEIGHT);
-		g2d.drawString(play.getPlayer2().getName(), Window.WIDTH - 40 - play.getPlayer2().getName().length()*15, OFFSET + 5 + g2d.getFont().getSize());
-		g2d.drawString(play.getPlayer2().getScore() + " xp", Window.WIDTH - 40 - ((play.getPlayer1().getScore() + " ").length() +3)*15, OFFSET + 5 + g2d.getFont().getSize()*2+5);
-		for(int i = 0; i < play.getPlayer2().getHealth(); i++)
-		{
-			g2d.drawImage(Images.getImage(ImageType.HEARTH), null, Window.WIDTH - 30, OFFSET + (30*i));
+		g2d.drawString(play.getPlayer2().getName(), Window.WIDTH - 40 - play.getPlayer2().getName().length() * 15, OFFSET + 5 + g2d.getFont().getSize());
+		g2d.drawString(play.getPlayer2().getScore() + " xp", Window.WIDTH - 40 - ((play.getPlayer1().getScore() + " ").length() + 3) * 15, OFFSET + 5 + g2d.getFont().getSize() * 2 + 5);
+		for (int i = 0; i < play.getPlayer2().getHealth(); i++) {
+			g2d.drawImage(Images.getImage(ImageType.HEARTH), null, Window.WIDTH - 30, OFFSET + (30 * i));
 		}
-		g2d.drawLine(Window.WIDTH - 35, OFFSET + g2d.getFont().getSize()*3, Window.WIDTH - 200, OFFSET + g2d.getFont().getSize()*3);
-		g2d.drawString("<Powerups>", Window.WIDTH - 40 - 140, OFFSET + g2d.getFont().getSize()*4);
+		g2d.drawLine(Window.WIDTH - 35, OFFSET + g2d.getFont().getSize() * 3, Window.WIDTH - 200, OFFSET + g2d.getFont().getSize() * 3);
+		g2d.drawString("<Powerups>", Window.WIDTH - 40 - 140, OFFSET + g2d.getFont().getSize() * 4);
 	}
-	
+
 }

+ 47 - 49
src/model/NetworkConnection.java

@@ -6,9 +6,7 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 import java.net.Socket;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 
-import model.objects.Ball;
 import model.state.PlayState;
 
 public class NetworkConnection {
@@ -18,88 +16,88 @@ public class NetworkConnection {
 	private DataInputStream din;
 	private Thread receivethread;
 	private PlayState play;
-		
-	public NetworkConnection(PlayState play){
+
+	public NetworkConnection(PlayState play) {
 		this.play = play;
 	}
-	
-	public void connect(String name) throws UnknownHostException, IOException{
-		if(checkConnection()){
+
+	public void connect(String name) throws UnknownHostException, IOException {
+		if (checkConnection()) {
 			throw new IOException("Already connected!");
 		}
-		Socket server = new Socket(address , port);
+		Socket server = new Socket(address, port);
 		dout = new DataOutputStream(server.getOutputStream());
 		din = new DataInputStream(server.getInputStream());
 		dout.writeUTF(name);
 		receivethread = new Thread(new Runnable() {
 			@Override
 			public void run() {
-				while(true){
+				while (true) {
 					receiveMessage();
 				}
 			}
 		});
-		receivethread.start();		
+		receivethread.start();
 	}
-	
-	public boolean checkConnection(){
-		if(dout == null)
+
+	public boolean checkConnection() {
+		if (dout == null)
 			return false;
 		try {
 			dout.write(0);
 		} catch (IOException e) {
 			return false;
-		} 
+		}
 		return true;
 	}
-	
-	private void receiveMessage(){
+
+	private void receiveMessage() {
 		try {
 			String message = din.readUTF();
-			String[] messagesplit = message.split("\\|"); //2
-			switch (messagesplit[0]){
-				case "1":												//New Match
-					play.newMatch(messagesplit[1], messagesplit[2]);
-					break;
-				case "2":	//Update message
-					messagesplit = message.split(",");
-					
-					String[] playersplit = messagesplit[0].split("\\|");
-					play.updatePlayerInfo(Integer.parseInt(playersplit[1]), Integer.parseInt(playersplit[2]), Integer.parseInt(playersplit[3]), Integer.parseInt(playersplit[4]), play.getPlayer1());
-					play.updatePlayerInfo(Integer.parseInt(playersplit[5]), Integer.parseInt(playersplit[6]), Integer.parseInt(playersplit[7]), Integer.parseInt(playersplit[8]), play.getPlayer2());
-					
-					String[] ballsplit = messagesplit[1].split("\\|");
-					if(ballsplit.length/4 != play.getBalls().size()){
-						play.getBalls().clear();
-					}
-					for(int i = 0; i < ballsplit.length/4; i++){
-						play.getBall(i).updateInfo(Integer.parseInt(ballsplit[(i*4)+0]), Integer.parseInt(ballsplit[(i*4)+1]), Color.decode(ballsplit[(i*4)+3]), Integer.parseInt(ballsplit[(i*4)+2]));
-					}
-					
-					String[] linesplit = messagesplit[2].split("\\|");
-					play.updateLines(Integer.parseInt(linesplit[0]), Integer.parseInt(linesplit[1]), Integer.parseInt(linesplit[2]), Integer.parseInt(linesplit[3]), Integer.parseInt(linesplit[4]), Integer.parseInt(linesplit[5]));
-					
-					play.setTimeleftpercent(Integer.parseInt(messagesplit[3]));
-					
+			String[] messagesplit = message.split("\\|"); // 2
+			switch (messagesplit[0]) {
+			case "1": // New Match
+				play.newMatch(messagesplit[1], messagesplit[2]);
+				break;
+			case "2": // Update message
+				messagesplit = message.split(",");
+
+				String[] playersplit = messagesplit[0].split("\\|");
+				play.updatePlayerInfo(Integer.parseInt(playersplit[1]), Integer.parseInt(playersplit[2]), Integer.parseInt(playersplit[3]), Integer.parseInt(playersplit[4]), play.getPlayer1());
+				play.updatePlayerInfo(Integer.parseInt(playersplit[5]), Integer.parseInt(playersplit[6]), Integer.parseInt(playersplit[7]), Integer.parseInt(playersplit[8]), play.getPlayer2());
+
+				String[] ballsplit = messagesplit[1].split("\\|");
+				if (ballsplit.length / 4 != play.getBalls().size()) {
+					play.getBalls().clear();
+				}
+				for (int i = 0; i < ballsplit.length / 4; i++) {
+					play.getBall(i).updateInfo(Integer.parseInt(ballsplit[(i * 4) + 0]), Integer.parseInt(ballsplit[(i * 4) + 1]), Color.decode(ballsplit[(i * 4) + 3]), Integer.parseInt(ballsplit[(i * 4) + 2]));
+				}
+
+				String[] linesplit = messagesplit[2].split("\\|");
+				play.updateLines(Integer.parseInt(linesplit[0]), Integer.parseInt(linesplit[1]), Integer.parseInt(linesplit[2]), Integer.parseInt(linesplit[3]), Integer.parseInt(linesplit[4]), Integer.parseInt(linesplit[5]));
+
+				play.setTimeleftpercent(Integer.parseInt(messagesplit[3]));
+
 			}
 		} catch (IOException e) {
 			System.err.println("Connection to server closed");
 			receivethread.stop();
 		}
-		
+
 	}
-	
-	public void sendInput(int direction, int shoot){
-		sendMessage("1|"+direction+"|"+shoot);
+
+	public void sendInput(int direction, int shoot) {
+		sendMessage("1|" + direction + "|" + shoot);
 	}
-	
-	private void sendMessage(String m){
+
+	private void sendMessage(String m) {
 		try {
 			dout.writeUTF(m);
 		} catch (IOException e) {
 			System.err.println("Connection to server closed");
-			
+
 		}
 	}
-	
+
 }

+ 15 - 21
src/model/objects/Ball.java

@@ -4,38 +4,32 @@ import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.geom.Ellipse2D;
 
-import jdk.nashorn.internal.ir.SetSplitState;
-import main.Window;
-
 public class Ball {
 	private Color color;
 	private int size;
 	private Ellipse2D.Double bal;
 
-
 	public Ball(int size, Color color, int x, int y) {
 		this.color = color;
-		this.size = size*20;
+		this.size = size * 20;
 		bal = new Ellipse2D.Double(x, y, this.size, this.size);
 	}
-	
-	public Ball(){
+
+	public Ball() {
 		this(0, Color.black, 0, 0);
 	}
 
-	
-	//** Drawing and Calculating **//
-	
+	// ** Drawing and Calculating **//
+
 	public void paint(Graphics2D g2d) {
 		g2d.setColor(Color.BLUE);
 		g2d.fill(bal);
 	}
 
-	
-	//** Getters and Setters **//
-	
+	// ** Getters and Setters **//
+
 	public int getSize() {
-		return size/20;
+		return size / 20;
 	}
 
 	public int getX() {
@@ -53,7 +47,7 @@ public class Ball {
 	public int getHeight() {
 		return (int) bal.getHeight();
 	}
-	
+
 	public Color getColor() {
 		return color;
 	}
@@ -65,16 +59,16 @@ public class Ball {
 	public void setY(int y) {
 		bal.setFrame(getX(), y, getWidth(), getHeight());
 	}
-	
-	public void setSize(int size){
+
+	public void setSize(int size) {
 		bal.setFrame(getX(), getY(), size, size);
 	}
-	
-	public void updateInfo(int x, int y, Color color, int size){
+
+	public void updateInfo(int x, int y, Color color, int size) {
 		setX(x);
 		setY(y);
 		this.color = color;
-		setSize(size*20);
+		setSize(size * 20);
 	}
-	
+
 }

+ 33 - 37
src/model/objects/DrawObject.java

@@ -1,66 +1,62 @@
 package model.objects;
 
 import java.awt.Graphics2D;
-import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.image.BufferedImage;
 
 public class DrawObject {
-	
+
 	protected Point2D position;
 	protected BufferedImage image;
-	
-	public DrawObject(BufferedImage image)
-	{
+
+	public DrawObject(BufferedImage image) {
 		this.image = image;
-		
-		position = new Point2D.Double(0,0);
+
+		position = new Point2D.Double(0, 0);
 	}
-	
-	public void paint(Graphics2D g2d)
-	{
-		g2d.drawImage(image, getX(),getY(),getWidth(),getHeigth(), null);
+
+	public void paint(Graphics2D g2d) {
+		g2d.drawImage(image, getX(), getY(), getWidth(), getHeigth(), null);
 	}
-	
-	public void update(){};
-	
+
+	public void update() {
+	};
+
 	/* Helper Functions */
-	
-	public void setX(int x)
-	{
+
+	public void setX(int x) {
 		position.setLocation(x, position.getY());
 	}
-	public void setY(int y)
-	{
+
+	public void setY(int y) {
 		position.setLocation(position.getX(), y);
 	}
-	public void setPosition(Point2D p)
-	{
+
+	public void setPosition(Point2D p) {
 		position.setLocation(p);
 	}
-	public void setPosition(double x, double y)
-	{
+
+	public void setPosition(double x, double y) {
 		position.setLocation(x, y);
 	}
-	
-	public int getX()
-	{
-		return (int)position.getX();
+
+	public int getX() {
+		return (int) position.getX();
 	}
-	public int getY()
-	{
-		return (int)position.getY();
+
+	public int getY() {
+		return (int) position.getY();
 	}
-	public Point2D getPosition()
-	{
+
+	public Point2D getPosition() {
 		return position;
-	}	
-	public int getWidth()
-	{
+	}
+
+	public int getWidth() {
 		return image.getWidth();
 	}
-	public int getHeigth()
-	{
+
+	public int getHeigth() {
 		return image.getHeight();
 	}
 }

+ 29 - 28
src/model/objects/Player.java

@@ -1,75 +1,76 @@
 package model.objects;
 
-import java.awt.Point;
 import java.awt.geom.Point2D;
 import java.awt.geom.Point2D.Double;
 import java.awt.image.BufferedImage;
-import java.util.ArrayList;
-
-import main.Window;
 
 public class Player extends DrawObject {
 
 	private int score, health, speed = 10;
-	
+
 	private long lastMovement;
 	private int lastDirection, frame;
 	private Double beginlocation;
 	private BufferedImage spriteimage;
 	private String name;
-	
+
 	public Player(BufferedImage image, int x, int y, String name) {
 		super(image.getSubimage(38, 0, 40, 54));
 		super.setPosition(x, y);
-		beginlocation = new Point2D.Double(x,y);
+		beginlocation = new Point2D.Double(x, y);
 		this.name = name;
 		spriteimage = image;
 	}
-	
-	public void update(){
-		if(System.currentTimeMillis() - lastMovement >= 100){	//If the player didn't move for 200ms, look forward
+
+	@Override
+	public void update() {
+		if (System.currentTimeMillis() - lastMovement >= 100) { // If the player
+																// didn't move
+																// for 200ms,
+																// look forward
 			image = spriteimage.getSubimage(38, 0, 40, 54);
 			frame = 0;
-		}else{ 													//Look into the right walking direction
+		} else { // Look into the right walking direction
 			frame++;
 			frame %= 1000;
-			image = spriteimage.getSubimage(2+(((frame / 4) % 4) * 38), 54*lastDirection, 38, 50);
+			image = spriteimage.getSubimage(2 + (((frame / 4) % 4) * 38), 54 * lastDirection, 38, 50);
 		}
 	}
-		
-	public void reset(){
+
+	public void reset() {
 		setPosition(beginlocation);
 		speed = 10;
 	}
-	
-	//** Getters and Setters **//
-	
-	public String getName(){
+
+	// ** Getters and Setters **//
+
+	public String getName() {
 		return name;
 	}
 
 	public int getScore() {
 		return score;
 	}
-	public void setScore(int score)
-	{
+
+	public void setScore(int score) {
 		this.score = score;
 	}
 
 	public int getHealth() {
 		return health;
 	}
-	
-	public void setHealth(int health){
+
+	public void setHealth(int health) {
 		this.health = health;
 	}
-	
-	public void setX(int x){
-		if(x < getX())
+
+	@Override
+	public void setX(int x) {
+		if (x < getX())
 			lastDirection = 1;
-		else if(x > getX())
-			lastDirection = 2;	
-		if(x != getX())
+		else if (x > getX())
+			lastDirection = 2;
+		if (x != getX())
 			lastMovement = System.currentTimeMillis();
 		super.setX(x);
 	}

+ 25 - 27
src/model/objects/ShootingLine.java

@@ -5,41 +5,39 @@ import java.awt.geom.Path2D;
 
 public class ShootingLine {
 	private Path2D.Double line;
-	private int startx,starty, length;
+	private int startx, starty, length;
 
-	public ShootingLine(int startx, int starty){
+	public ShootingLine(int startx, int starty) {
 		line = new Path2D.Double();
 		this.startx = startx;
 		this.starty = starty;
 	}
 
-	public void setLength(int length){
+	public void setLength(int length) {
 		this.length = length;
 		line = new Path2D.Double();
 		line.moveTo(startx, starty);
 		int tempy = starty;
-		for(int i = 0; i < length; i++){
-			line.curveTo(startx + 10, tempy- 10, startx - 10, tempy - 20, startx, tempy-30);
+		for (int i = 0; i < length; i++) {
+			line.curveTo(startx + 10, tempy - 10, startx - 10, tempy - 20, startx, tempy - 30);
 			tempy -= 30;
 		}
 	}
-	
-	//** Painting **//
 
-	public void paint(Graphics2D g2d)
-	{
+	// ** Painting **//
+
+	public void paint(Graphics2D g2d) {
 		g2d.draw(line);
-		g2d.drawLine(startx, getMaxHeight(), startx+8, getMaxHeight()+15);
-		g2d.drawLine(startx, getMaxHeight(), startx-8, getMaxHeight()+15);
-	}	
-	
-	//** Getters and Setters **//
-	
-	
-	public int getLength(){
+		g2d.drawLine(startx, getMaxHeight(), startx + 8, getMaxHeight() + 15);
+		g2d.drawLine(startx, getMaxHeight(), startx - 8, getMaxHeight() + 15);
+	}
+
+	// ** Getters and Setters **//
+
+	public int getLength() {
 		return length;
 	}
-	
+
 	public int getStartx() {
 		return startx;
 	}
@@ -56,23 +54,23 @@ public class ShootingLine {
 		this.starty = starty;
 	}
 
-	public int getMaxHeight(){
+	public int getMaxHeight() {
 		return starty - length * 30;
 	}
-	
-	public int getX(){
+
+	public int getX() {
 		return startx;
 	}
-	
-	public int getY(){
+
+	public int getY() {
 		return starty;
 	}
-	
-	public int getWidth(){
+
+	public int getWidth() {
 		return 10;
 	}
-	
-	public int getHeight(){
+
+	public int getHeight() {
 		return getLength() * 30;
 	}
 }

+ 7 - 5
src/model/state/EndState.java

@@ -12,13 +12,16 @@ public class EndState extends State {
 	}
 
 	@Override
-	public void init() {}
+	public void init() {
+	}
 
 	@Override
-	public void exit() {}
+	public void exit() {
+	}
 
 	@Override
-	public void update() {}
+	public void update() {
+	}
 
 	@Override
 	public void paint(Graphics2D g2) {
@@ -33,8 +36,7 @@ public class EndState extends State {
 
 	@Override
 	public void keyReleased(KeyEvent e) {
-		if(e.getKeyCode() == KeyEvent.VK_ENTER)
-		{
+		if (e.getKeyCode() == KeyEvent.VK_ENTER) {
 			gsm.setState("menu");
 		}
 

+ 21 - 18
src/model/state/MenuState.java

@@ -1,55 +1,58 @@
 package model.state;
 
+import java.awt.Font;
 import java.awt.Graphics2D;
 import java.awt.event.KeyEvent;
 
 import main.Window;
 import model.GameStateManager;
+import resources.image.Images;
+import resources.image.Images.ImageType;
 
 public class MenuState extends State {
 
 	public MenuState(GameStateManager gsm) {
 		super("menu", gsm);
 	}
-	
-	
+
 	/* INIT AND EXIT */
 	@Override
 	public void init() {
-		System.out.println("Starting menu state");
 	}
-	
-	@Override 
-	public void exit()
-	{
-		System.out.println("Stopping menu state");
+
+	@Override
+	public void exit() {
 	}
-	
-	
+
 	/* UPDATE */
 	@Override
 	public void update() {
-		
+
 	}
 
 	@Override
 	public void paint(Graphics2D g2) {
-		g2.drawString("Fill in your name and press ENTER to start the game", Window.WIDTH/2, Window.HEIGHT/2);
+		g2.drawImage(Images.getImage(ImageType.BACKGROUND_MENU), 0,0,null);
+		g2.drawString("Fill in your name and press ENTER to start the game", Window.WIDTH / 2, Window.HEIGHT / 2);
+		
+		g2.setFont(new Font("Segoe UI", Font.BOLD, 80));
+		g2.drawString("Bubble Trouble", 100, 100);
 	}
-	
-	
+
 	/* EVENTS */
 	@Override
 	public void keyPressed(KeyEvent e) {
-		if(e.getKeyCode() == KeyEvent.VK_ENTER)
-		{
+		if (e.getKeyCode() == KeyEvent.VK_ENTER) {
 			gsm.setState("play");
 		}
 	}
+
 	@Override
 	public void keyReleased(KeyEvent e) {
-		
+
 	}
+
 	@Override
-	public void keyTyped(KeyEvent e) {}
+	public void keyTyped(KeyEvent e) {
+	}
 }

+ 39 - 44
src/model/state/PlayState.java

@@ -1,6 +1,5 @@
 package model.state;
 
-import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.event.KeyEvent;
 import java.io.IOException;
@@ -15,8 +14,8 @@ import model.objects.ShootingLine;
 import resources.image.Images;
 import resources.image.Images.ImageType;
 
-public class PlayState extends State{
-	
+public class PlayState extends State {
+
 	private Player player1;
 	private Player player2;
 	private ShootingLine line1;
@@ -25,7 +24,7 @@ public class PlayState extends State{
 	private InfoPanel infopanel;
 	private NetworkConnection nwc;
 	private int timeleftpercent, direction, shoot;
-	
+
 	public PlayState(GameStateManager gsm) {
 		super("play", gsm);
 		player1 = new Player(Images.getImage(ImageType.PLAYER1), 40, 550, "");
@@ -34,17 +33,14 @@ public class PlayState extends State{
 		balls = new ArrayList<Ball>();
 	}
 
-	
 	/* NETWORK CONTROL */
-	public void newMatch(String p1, String p2){
+	public void newMatch(String p1, String p2) {
 		player1 = new Player(Images.getImage(ImageType.PLAYER1), 40, 550, p1);
 		player2 = new Player(Images.getImage(ImageType.PLAYER1), 40, 550, p2);
 		infopanel = new InfoPanel(this);
 		balls = new ArrayList<Ball>();
 	}
-	
 
-	
 	/* INIT AND EXIT */
 	@Override
 	public void init() {
@@ -55,50 +51,48 @@ public class PlayState extends State{
 			e.printStackTrace();
 		}
 	}
-	
-	@Override 
-	public void exit()
-	{
+
+	@Override
+	public void exit() {
 	}
 
-	
-	/* UPDATE AND PAINTING*/
-	public void updatePlayerInfo(int x, int y, int health, int score, Player player){
+	/* UPDATE AND PAINTING */
+	public void updatePlayerInfo(int x, int y, int health, int score, Player player) {
 		player.setX(x);
 		player.setY(y);
 		player.setHealth(health);
 		player.setScore(score);
 	}
-	
-	public void updateLines(int l1x, int l1y, int l1h, int l2x, int l2y, int l2h){
-		if(line1 == null)
+
+	public void updateLines(int l1x, int l1y, int l1h, int l2x, int l2y, int l2h) {
+		if (line1 == null)
 			line1 = new ShootingLine(l1x, l1y);
 		line1.setLength(l1h);
 		line1.setStartx(l1x);
 		line1.setStarty(l1y);
-		if(line2 == null)
+		if (line2 == null)
 			line2 = new ShootingLine(l2x, l2y);
 		line2.setLength(l2h);
 		line2.setStartx(l2x);
 		line2.setStarty(l2y);
 	}
-	
+
 	@Override
-	public void update() {		
+	public void update() {
 		player1.update();
 		player2.update();
 	}
 
 	@Override
-	public void paint(Graphics2D g2d) {	
-		g2d.drawImage(Images.getImage(ImageType.BACKGROUND),null,0,0);
-		if(line1 != null){
+	public void paint(Graphics2D g2d) {
+		g2d.drawImage(Images.getImage(ImageType.BACKGROUND), null, 0, 0);
+		if (line1 != null) {
 			line1.paint(g2d);
 		}
-		if(line2 != null){
+		if (line2 != null) {
 			line2.paint(g2d);
 		}
-		for(Ball b: balls){
+		for (Ball b : balls) {
 			b.paint(g2d);
 		}
 		player1.paint(g2d);
@@ -107,41 +101,40 @@ public class PlayState extends State{
 	}
 
 	/* GETTERS AND SETTERS */
-	
-	public Player getPlayer1(){
+
+	public Player getPlayer1() {
 		return player1;
 	}
-	
-	public Player getPlayer2(){
+
+	public Player getPlayer2() {
 		return player2;
 	}
-	
+
 	public int getTimeleftpercent() {
 		return timeleftpercent;
 	}
-		
-	public Ball getBall(int i){
-		try{
+
+	public Ball getBall(int i) {
+		try {
 			return balls.get(i);
-		}catch(IndexOutOfBoundsException e){
+		} catch (IndexOutOfBoundsException e) {
 			balls.add(i, new Ball());
 			return balls.get(i);
 		}
 	}
-	
-	public ArrayList<Ball> getBalls(){
+
+	public ArrayList<Ball> getBalls() {
 		return balls;
 	}
-	
+
 	public void setTimeleftpercent(int timeleftpercent) {
 		this.timeleftpercent = timeleftpercent;
 	}
-	
+
 	/* EVENTS */
 	@Override
 	public void keyPressed(KeyEvent e) {
-		switch(e.getKeyCode())
-		{
+		switch (e.getKeyCode()) {
 		case KeyEvent.VK_RIGHT:
 			direction = 1;
 			break;
@@ -154,10 +147,10 @@ public class PlayState extends State{
 		}
 		nwc.sendInput(direction, shoot);
 	}
+
 	@Override
 	public void keyReleased(KeyEvent e) {
-		switch(e.getKeyCode())
-		{
+		switch (e.getKeyCode()) {
 		case KeyEvent.VK_RIGHT:
 			direction = 0;
 		case KeyEvent.VK_LEFT:
@@ -172,6 +165,8 @@ public class PlayState extends State{
 		}
 		nwc.sendInput(direction, shoot);
 	}
+
 	@Override
-	public void keyTyped(KeyEvent e) {};
+	public void keyTyped(KeyEvent e) {
+	};
 }

+ 20 - 16
src/model/state/State.java

@@ -5,42 +5,46 @@ import java.awt.event.KeyEvent;
 
 import model.GameStateManager;
 
-public abstract class State  {
+public abstract class State {
 
 	protected GameStateManager gsm;
-	
+
 	protected String name;
 
 	public State(String name, GameStateManager gsm) {
 		this.name = name;
 		this.gsm = gsm;
 	}
-	
-	public String getName(){
+
+	public String getName() {
 		return name;
 	}
-	
-	public boolean equals(Object o)
-	{
-		if(! (o instanceof State))
+
+	@Override
+	public boolean equals(Object o) {
+		if (!(o instanceof State))
 			return false;
-		
+
 		State tempstate = (State) o;
-		
-		if(tempstate.getName() == this.name)
+
+		if (tempstate.getName() == this.name)
 			return true;
 		else
 			return false;
 	}
-	
+
 	public abstract void init();
+
 	public abstract void exit();
-	
+
 	public abstract void update();
-	public abstract void paint(Graphics2D g2);	
-	
+
+	public abstract void paint(Graphics2D g2);
+
 	public abstract void keyPressed(KeyEvent e);
+
 	public abstract void keyReleased(KeyEvent e);
+
 	public abstract void keyTyped(KeyEvent e);
-	
+
 }

+ 17 - 20
src/resources/image/Images.java

@@ -12,29 +12,26 @@ public class Images {
 
 	private static ArrayList<BufferedImage> images = new ArrayList<BufferedImage>();
 
-	public Images(){}
+	public Images() {
+	}
 
-	static{
-		try{
-			images.add(ImageIO.read(Main.class.getResource("/resources/image/player1_sprite.png"))); 
-			images.add(ImageIO.read(Main.class.getResource("/resources/image/player2.png"))); 
+	static {
+		try {
+			images.add(ImageIO.read(Main.class.getResource("/resources/image/player1_sprite.png")));
+			images.add(ImageIO.read(Main.class.getResource("/resources/image/player2.png")));
 			images.add(ImageIO.read(Main.class.getResource("/resources/image/background.png")));
+			images.add(ImageIO.read(Main.class.getResource("/resources/image/background_menu.png")));
 			images.add(ImageIO.read(Main.class.getResource("/resources/image/hearth.png")));
-		}catch(IOException e){
+		} catch (IOException e) {
 			e.printStackTrace();
 		}
-	 }
-
-	 public static BufferedImage getImage(ImageType img)
-	 {
-		 return images.get(img.ordinal());
-	 }
-
-	 public static enum ImageType
-	 {
-		 PLAYER1,
-		 PLAYER2,
-		 BACKGROUND,
-		 HEARTH
-	 }
+	}
+
+	public static BufferedImage getImage(ImageType img) {
+		return images.get(img.ordinal());
+	}
+
+	public static enum ImageType {
+		PLAYER1, PLAYER2, BACKGROUND, BACKGROUND_MENU, HEARTH
+	}
 }

BIN=BIN
src/resources/image/background_menu.png


+ 10 - 12
src/view/GameView.java

@@ -16,30 +16,28 @@ import model.GameModel;
 import model.GameStateManager;
 
 @SuppressWarnings("serial")
-public class GameView extends JPanel implements ActionListener{
-	
+public class GameView extends JPanel implements ActionListener {
+
 	private GameModel model;
 	private GameStateManager gsm;
 	private Timer t;
-	
-	public GameView(GameModel model, GameStateManager gsm)
-	{
+
+	public GameView(GameModel model, GameStateManager gsm) {
 		this.model = model;
 		this.gsm = gsm;
-		
+
 		setBackground(Color.WHITE);
-		
-		t = new Timer(1000/Window.FRAMES_PER_SECOND, this);	
+
+		t = new Timer(1000 / Window.FRAMES_PER_SECOND, this);
 		t.start();
 	}
-	
+
 	@Override
-	public void paintComponent(Graphics g)
-	{
+	public void paintComponent(Graphics g) {
 		super.paintComponent(g);
 		Graphics2D g2d = (Graphics2D) g;
 		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-	    g2d.setRenderingHints(rh);
+		g2d.setRenderingHints(rh);
 		gsm.paint(g2d);
 		Toolkit.getDefaultToolkit().sync();
 	}