Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated pom.xml with JUnit dependancy for testing purpose #2

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
34 changes: 33 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,29 @@
<version>2.6</version>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>

</dependencies>

<build>
<plugins>

Expand All @@ -66,6 +86,18 @@
</arguments>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>

</plugins>
</build>
</project>
Expand Down
10 changes: 7 additions & 3 deletions src/main/java/uta/cse3310/App.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
//App.java starts the HTTP and WebSocket servers.
package uta.cse3310;

import java.io.IOException;

public class App {
public static void main(String[] args) {

String httpPortStr = System.getenv("HTTP_PORT");
int httpPort = (httpPortStr != null) ? Integer.parseInt(httpPortStr) : 9080;

String htmlDir = "src/main/resources";

HttpServer httpServer = new HttpServer(httpPort, htmlDir);
httpServer.start();
try {
httpServer.start();
} catch (IOException e) {
e.printStackTrace();
}

int websocketPort = httpPort + 100;

Expand All @@ -20,4 +25,3 @@ public static void main(String[] args) {
System.out.println("WebSocket server started on port " + websocketPort);
}
}

37 changes: 26 additions & 11 deletions src/main/java/uta/cse3310/GameServer.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
//GameServer controls the server; sessions and scores.
package uta.cse3310;

import java.util.List;
import java.util.ArrayList;
import java.util.List;

public class GameServer {
private int httpPort;
Expand All @@ -20,28 +20,43 @@ public GameServer(int httpPort, int wsPort) {
}

public void start() {
try{
webSocketHandler.start();
} catch (Exception e) {
e.printStackTrace();
}
}

public void stop() {
try {
webSocketHandler.stop();
} catch (Exception e) {
e.printStackTrace();
// Handle the exception, perhaps by logging it or notifying the user
}
}

public void stop() {
// to stop the server
}

public void createGameSession(int numberOfPlayers) {
GameSession session = new GameSession();
gameSessions.add(session);
if (numberOfPlayers >= 2 && numberOfPlayers <= 4) {
GameSession session = new GameSession(numberOfPlayers);
gameSessions.add(session);
// Notify WebSocket clients of the new session
webSocketHandler.broadcast("New session created with " + numberOfPlayers + " players.");
} else {
throw new IllegalArgumentException("Number of players must be between 2 and 4.");
}
}

public void removeGameSession(GameSession session) {
gameSessions.remove(session);
// Notify WebSocket clients of the session removal
webSocketHandler.broadcast("Session removed.");
}

public void updateScoreboard(Player player) {
scoreboard.updateScoreboard(player);
public void updateScoreboard(Player player, int points) {
scoreboard.updateScore(player.getPlayerId(), points);
}

public List<Player> getTopPlayers() {
return scoreboard.getTopPlayers();
}
}

86 changes: 36 additions & 50 deletions src/main/java/uta/cse3310/GameSession.java
Original file line number Diff line number Diff line change
@@ -1,79 +1,65 @@
// GameSession manags a single game; players, rounds

package uta.cse3310;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class GameSession {
private List<Player> players;
private boolean isActive;
private WordPuzzle currentPuzzle;
private int currentTurnIndex;
private int round;
private Scoreboard scoreboard;
private int currentPlayerIndex;
private int rounds;
private WordPuzzle wordPuzzle;

public GameSession() {
public GameSession(int numberOfPlayers) {
this.players = new ArrayList<>();
this.isActive = false;
this.currentPuzzle = new WordPuzzle();
this.currentTurnIndex = 0;
this.round = 1;
this.scoreboard = new Scoreboard();
this.currentPlayerIndex = 0;
this.rounds = 0;
this.wordPuzzle = new WordPuzzle("src/main/resources/words.txt", 6);
for (int i = 0; i < numberOfPlayers; i++) {
players.add(new Player("Player " + (i + 1)));
}
}

public void addPlayer(Player player) {
if (!isActive) {
players.add(player);
}
players.add(player);
System.out.println("Added player with ID: " + player.getPlayerId() + " and Name: " + player.getName());
}

public void removePlayer(Player player) {
players.remove(player);
public void startGame() {
// Initialize game logic
wordPuzzle.selectWords(3);
System.out.println("Game started with puzzle: " + wordPuzzle.getDisplayedPuzzle());
}

public void startGame() {
if (players.size() >= 2 && players.size() <= 4) {
isActive = true;
startRound();
}
public void nextTurn() {
currentPlayerIndex = (currentPlayerIndex + 1) % players.size();
// Notify players of the next turn
}

private void startRound() {
currentPuzzle.generatePuzzle(2);
currentTurnIndex = 0;
// Notify all players about the new round
public Player getCurrentPlayer() {
return players.get(currentPlayerIndex);
}

public void endRound() {
round++;
if (round > 3) {
endGame();
public void solvePuzzle(String attempt) {
if (wordPuzzle.isCorrect(attempt)) {
// Handle correct attempt
} else {
startRound();
// Handle incorrect attempt
}
}

public void endGame() {
isActive = false;
// Update scoreboard and notify players
}

public void nextTurn() {
currentTurnIndex = (currentTurnIndex + 1) % players.size();
// Notify players about the next turn
}

public Player getCurrentPlayer() {
return players.get(currentTurnIndex);
}

public WordPuzzle getCurrentPuzzle() {
return currentPuzzle;
public void endRound() {
rounds++;
if (rounds >= 3) {
// End game logic
} else {
// Start new round
}
}

public Scoreboard getScoreboard() {
return scoreboard;
public void removePlayer(Player player) {
players.remove(player);
System.out.println("Removed player with ID: " + player.getPlayerId() + " and Name: " + player.getName());
}
}

68 changes: 35 additions & 33 deletions src/main/java/uta/cse3310/HttpServer.java
Original file line number Diff line number Diff line change
@@ -1,48 +1,50 @@
package uta.cse3310;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import net.freeutils.httpserver.HTTPServer;
import net.freeutils.httpserver.HTTPServer.ContextHandler;
import net.freeutils.httpserver.HTTPServer.FileContextHandler;
import net.freeutils.httpserver.HTTPServer.Request;
import net.freeutils.httpserver.HTTPServer.Response;
import net.freeutils.httpserver.HTTPServer.VirtualHost;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.file.Files;
import java.nio.file.Paths;

public class HttpServer {
private int port;
private String dirname;
private String htmlDir;
private HTTPServer server;

public HttpServer(int portNum, String dirName) {
port = portNum;
dirname = dirName;
public HttpServer(int port, String htmlDir) {
this.port = port;
this.htmlDir = htmlDir;
server = new HTTPServer(port);
}

public void start() {
try {
File dir = new File(dirname);
if (!dir.canRead())
throw new FileNotFoundException(dir.getAbsolutePath());
// set up server
HTTPServer server = new HTTPServer(port);
VirtualHost host = server.getVirtualHost(null); // default host
host.setAllowGeneratedIndex(true); // with directory index pages
host.addContext("/", new FileContextHandler(dir));
host.addContext("/api/time", new ContextHandler() {
public int serve(Request req, Response resp) throws IOException {
long now = System.currentTimeMillis();
resp.getHeaders().add("Content-Type", "text/plain");
resp.send(200, String.format("%tF %<tT", now));
return 0;
}
});
server.start();
System.out.println("HTTP server started on port " + port);
} catch (Exception e) {
System.err.println("error: " + e);
}
public void start() throws IOException {
VirtualHost host = server.getVirtualHost(null);
host.addContext("/", this::create);
server.start();
System.out.println("HTTP Server started on port " + port);

}


public void stop() {
server.stop();

}

public int create(Request req, Response resp) throws IOException {
String path = htmlDir + req.getPath();
if (Files.exists(Paths.get(path))) {
resp.sendBody(Files.newInputStream(Paths.get(path)), Files.size(Paths.get(path)), null);
return 0;
} else {
resp.send(404, "File not found");
return 1;
}
}
}


Loading