This commit is contained in:
lieght
2025-09-17 19:39:08 +02:00
parent e906e812fa
commit a056171644
4 changed files with 61 additions and 125 deletions

41
.idea/workspace.xml generated
View File

@@ -7,6 +7,8 @@
<list default="true" id="997b32da-b4d4-48ac-ab51-52d65f364f81" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/org/toop/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/org/toop/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/org/toop/eventbus/Events.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/org/toop/eventbus/Events.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/org/toop/game/TTT.java" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -21,24 +23,37 @@
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="Ticho" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GitHubPullRequestSearchHistory"><![CDATA[{
"lastFilter": {
"state": "OPEN",
"assignee": "BAFGdeJong"
"lastFilter": {}
}]]></component>
<component name="GitHubPullRequestState"><![CDATA[{
"prStates": [
{
"id": {
"id": "PR_kwDOPslbWM6pHd-p",
"number": 25
},
"lastSeen": 1758130126808
}
]
}]]></component>
<component name="GithubPullRequestsUISettings"><![CDATA[{
"selectedUrlAndAccountId": {
"url": "git@github.com:2OOP/pism_ttt.git",
"accountId": "7694f583-f911-4763-8185-8ea3ed608804"
<component name="GithubPullRequestsUISettings">{
&quot;selectedUrlAndAccountId&quot;: {
&quot;url&quot;: &quot;git@github.com:2OOP/pism_ttt.git&quot;,
&quot;accountId&quot;: &quot;7694f583-f911-4763-8185-8ea3ed608804&quot;
}
}]]></component>
<component name="ProjectColorInfo"><![CDATA[{
"customColor": "",
"associatedIndex": 1
}]]></component>
}</component>
<component name="ProjectColorInfo">{
&quot;customColor&quot;: &quot;&quot;,
&quot;associatedIndex&quot;: 1
}</component>
<component name="ProjectId" id="32pVUB4kZJjWp5yY5oJOqsrZhDL" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
@@ -51,7 +66,7 @@
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "ServerManager",
"git-widget-placeholder": "Ticho",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",

View File

@@ -1,8 +1,7 @@
package org.toop;
import org.toop.core.*;
import org.toop.UI.GameSelectorWindow;
import org.toop.eventbus.*;
import org.toop.graphics.*;
import org.toop.server.backend.ServerManager;
import org.toop.server.frontend.ConnectionManager;
@@ -12,39 +11,40 @@ import org.apache.logging.log4j.LogManager;
import java.util.concurrent.ExecutionException;
public class Main {
private static final Logger logger = LogManager.getLogger(Main.class);
private static boolean running = false;
public static void main(String[] args) throws ExecutionException, InterruptedException {
initSystems();
registerEvents();
Window window = Window.setup(Window.API.GLFW, "Test", new Window.Size(1280, 720));
Renderer renderer = Renderer.setup(Renderer.API.OPENGL);
initSystems();
Logging.disableLogs();
// Window window = Window.setup(Window.API.GLFW, "Test", new Window.Size(1280, 720));
// Renderer renderer = Renderer.setup(Renderer.API.OPENGL);
// initSystems();
// Logging.disableLogs();
//
// Shader shader = Shader.create(
// "src/main/resources/shaders/gui_vertex.glsl",
// "src/main/resources/shaders/gui_fragment.glsl");
//
// running = window != null && renderer != null && shader != null;
// ConsoleGui console = new ConsoleGui();
//
// while (running) {
// window.update();
// renderer.clear();
//
// shader.start();
// renderer.render();
// }
// console.print();
//
// if (shader != null) shader.cleanup();
// if (renderer != null) renderer.cleanup();
// if (window != null) window.cleanup();
Shader shader = Shader.create(
"src/main/resources/shaders/gui_vertex.glsl",
"src/main/resources/shaders/gui_fragment.glsl");
running = window != null && renderer != null && shader != null;
ConsoleGui console = new ConsoleGui();
while (running) {
window.update();
renderer.clear();
shader.start();
renderer.render();
}
console.print();
}
if (shader != null) shader.cleanup();
if (renderer != null) renderer.cleanup();
if (window != null) window.cleanup();
*/
//JFrameWindow window = new JFrameWindow();
// JFrameWindow window = new JFrameWindow();
GameSelectorWindow gameSelectorWindow = new GameSelectorWindow();
}
@@ -74,3 +74,4 @@ public class Main {
Main.running = running;
}
}

View File

@@ -2,11 +2,11 @@ package org.toop.eventbus;
import org.toop.server.backend.tictactoe.TicTacToeServer;
import org.toop.server.backend.tictactoe.TicTacToeServerCommand;
import org.toop.server.Server;
import org.toop.core.*;
import java.lang.reflect.Constructor;
import java.util.Arrays;
import java.util.concurrent.CompletableFuture;
/**
* Events that are used in the GlobalEventBus class.
@@ -184,7 +184,6 @@ public class Events implements IEvents {
*
* @param ip The IP address of the server to connect to.
* @param port The port of the server to connect to.
* @param future The CompletableFuture that will complete when the connection is established.
*/
public record ConnectionEstablished(Object connectionId, String ip, String port) {}
@@ -262,9 +261,6 @@ public class Events implements IEvents {
* Triggers when a cell is clicked in one of the game boards.
*/
public record CellClicked(int cell) {}
}
public static class EventBusEvents {
}

View File

@@ -1,76 +0,0 @@
package org.toop.game;
public class TTT extends GameBase {
private int moveCount;
public TTT(String player1, String player2) {
super(9);
players = new Player[2];
players[0] = new Player(player1, 'X');
players[1] = new Player(player2, 'O');
moveCount = 0;
}
@Override
public boolean ValidateMove(int index) {
if (index < 0 || index > (size * size - 1)) {
return false;
}
return grid[index] == ' ';
}
@Override
public State PlayMove(int index) {
if (!ValidateMove(index)) {
return State.INVALID;
}
grid[index] = players[currentPlayer].Move();
moveCount += 1;
if (CheckWin()) {
return State.WIN;
}
if (moveCount >= grid.length) {
return State.DRAW;
}
currentPlayer = (currentPlayer + 1) % players.length;
return State.NORMAL;
}
private boolean CheckWin() {
// Horizontal
for (int i = 0; i < 3; i++) {
int index = i * 3;
if (grid[index] == grid[index + 1] && grid[index] == grid[index + 2]) {
return true;
}
}
// Vertical
for (int i = 0; i < 3; i++) {
int index = i;
if (grid[index] == grid[index + 3] && grid[index] == grid[index + 6]) {
return true;
}
}
// F-Slash
if (grid[2] == grid[4] && grid[2] == grid[6]) {
return true;
}
// B-Slash
if (grid[0] == grid[4] && grid[0] == grid[8]) {
return true;
}
return false;
}
}