diff --git a/GUI.java b/GUI.java new file mode 100644 index 0000000..f3d9305 --- /dev/null +++ b/GUI.java @@ -0,0 +1,33 @@ + +/** + * Beschreiben Sie hier die Klasse GUI. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class GUI +{ + // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen + private int x; + + /** + * Konstruktor für Objekte der Klasse GUI + */ + public GUI() + { + // Instanzvariable initialisieren + x = 0; + } + + /** + * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen + * + * @param y ein Beispielparameter für eine Methode + * @return die Summe aus x und y + */ + public int beispielMethode(int y) + { + // tragen Sie hier den Code ein + return x + y; + } +} diff --git a/Game.java b/Game.java new file mode 100644 index 0000000..9ee815a --- /dev/null +++ b/Game.java @@ -0,0 +1,38 @@ +/** + * Beschreiben Sie hier die Klasse Game. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class Game +{ + // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen + WordleServer wordleServer = new WordleServer(); + User user = new User(); + DatabaseConnector databaseConnector;//Datenbankverbindung aufstellen + private String wordle; + private String[] words; + private int Count; + + + /** + * Konstruktor für Objekte der Klasse Game + */ + public Game() + { + // Instanzvariable initialisieren + + } + + /** + * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen + * + * @param y ein Beispielparameter für eine Methode + * @return die Summe aus x und y + */ + public int beispielMethode(int y) + { + // tragen Sie hier den Code ein + return y; + } +} diff --git a/Queue.java b/Queue.java index e7835c0..b6f9c59 100644 --- a/Queue.java +++ b/Queue.java @@ -16,127 +16,127 @@ * @version Generisch_02 2014-02-21 */ public class Queue { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - private class QueueNode { + + /* --------- Anfang der privaten inneren Klasse -------------- */ + + private class QueueNode { - private ContentType content = null; - private QueueNode nextNode = null; + private ContentType content = null; + private QueueNode nextNode = null; - /** - * Ein neues Objekt vom Typ QueueNode wird erschaffen. - * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer. - * - * @param pContent das Inhaltselement des Knotens vom Typ ContentType - */ - public QueueNode(ContentType pContent) { - content = pContent; - nextNode = null; - } + /** + * Ein neues Objekt vom Typ QueueNode wird erschaffen. + * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer. + * + * @param pContent das Inhaltselement des Knotens vom Typ ContentType + */ + public QueueNode(ContentType pContent) { + content = pContent; + nextNode = null; + } - /** - * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird, - * gesetzt. - * - * @param pNext der Nachfolger des Knotens - */ - public void setNext(QueueNode pNext) { - nextNode = pNext; - } - - /** - * Liefert das naechste Element des aktuellen Knotens. - * - * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt - */ - public QueueNode getNext() { - return nextNode; - } + /** + * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird, + * gesetzt. + * + * @param pNext der Nachfolger des Knotens + */ + public void setNext(QueueNode pNext) { + nextNode = pNext; + } + + /** + * Liefert das naechste Element des aktuellen Knotens. + * + * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt + */ + public QueueNode getNext() { + return nextNode; + } - /** - * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType. - * - * @return das Inhaltsobjekt des Knotens - */ - public ContentType getContent() { - return content; - } - - } - - /* ----------- Ende der privaten inneren Klasse -------------- */ - - private QueueNode head; - private QueueNode tail; + /** + * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType. + * + * @return das Inhaltsobjekt des Knotens + */ + public ContentType getContent() { + return content; + } + + } + + /* ----------- Ende der privaten inneren Klasse -------------- */ + + private QueueNode head; + private QueueNode tail; - /** - * Eine leere Schlange wird erzeugt. - * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ - * ContentType sein. - */ - public Queue() { - head = null; - tail = null; - } + /** + * Eine leere Schlange wird erzeugt. + * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ + * ContentType sein. + */ + public Queue() { + head = null; + tail = null; + } - /** - * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt, - * sonst liefert sie den Wert false. - * - * @return true, falls die Schlange leer ist, sonst false - */ - public boolean isEmpty() { - return head == null; - } + /** + * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt, + * sonst liefert sie den Wert false. + * + * @return true, falls die Schlange leer ist, sonst false + */ + public boolean isEmpty() { + return head == null; + } - /** - * Das Objekt pContentType wird an die Schlange angehaengt. - * Falls pContentType gleich null ist, bleibt die Schlange unveraendert. - * - * @param pContent - * das anzuhaengende Objekt vom Typ ContentType - */ - public void enqueue(ContentType pContent) { - if (pContent != null) { - QueueNode newNode = new QueueNode(pContent); - if (this.isEmpty()) { - head = newNode; - tail = newNode; - } else { - tail.setNext(newNode); - tail = newNode; - } - } - } + /** + * Das Objekt pContentType wird an die Schlange angehaengt. + * Falls pContentType gleich null ist, bleibt die Schlange unveraendert. + * + * @param pContent + * das anzuhaengende Objekt vom Typ ContentType + */ + public void enqueue(ContentType pContent) { + if (pContent != null) { + QueueNode newNode = new QueueNode(pContent); + if (this.isEmpty()) { + head = newNode; + tail = newNode; + } else { + tail.setNext(newNode); + tail = newNode; + } + } + } - /** - * Das erste Objekt wird aus der Schlange entfernt. - * Falls die Schlange leer ist, wird sie nicht veraendert. - */ - public void dequeue() { - if (!this.isEmpty()) { - head = head.getNext(); - if (this.isEmpty()) { - head = null; - tail = null; - } - } - } + /** + * Das erste Objekt wird aus der Schlange entfernt. + * Falls die Schlange leer ist, wird sie nicht veraendert. + */ + public void dequeue() { + if (!this.isEmpty()) { + head = head.getNext(); + if (this.isEmpty()) { + head = null; + tail = null; + } + } + } - /** - * Die Anfrage liefert das erste Objekt der Schlange. - * Die Schlange bleibt unveraendert. - * Falls die Schlange leer ist, wird null zurueckgegeben. - * - * @return das erste Objekt der Schlange vom Typ ContentType oder null, - * falls die Schlange leer ist - */ - public ContentType front() { - if (this.isEmpty()) { - return null; - } else { - return head.getContent(); - } - } + /** + * Die Anfrage liefert das erste Objekt der Schlange. + * Die Schlange bleibt unveraendert. + * Falls die Schlange leer ist, wird null zurueckgegeben. + * + * @return das erste Objekt der Schlange vom Typ ContentType oder null, + * falls die Schlange leer ist + */ + public ContentType front() { + if (this.isEmpty()) { + return null; + } else { + return head.getContent(); + } + } } diff --git a/Server.java b/Server.java index 710ecc0..d21a506 100644 --- a/Server.java +++ b/Server.java @@ -244,16 +244,16 @@ public abstract class Server public boolean isOpen() { - return(connectionHandler.active); + return(connectionHandler.active); } public boolean isConnectedTo(String pClientIP, int pClientPort) { - ClientMessageHandler aMessageHandler = findClientMessageHandler(pClientIP, pClientPort); + ClientMessageHandler aMessageHandler = findClientMessageHandler(pClientIP, pClientPort); if (aMessageHandler != null) - return(aMessageHandler.active); + return(aMessageHandler.active); else - return(false); + return(false); } public void send(String pClientIP, int pClientPort, String pMessage) @@ -265,15 +265,15 @@ public abstract class Server public void sendToAll(String pMessage) { - synchronized(messageHandlers) - { - messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - messageHandlers.getContent().send(pMessage); - messageHandlers.next(); - } - } + synchronized(messageHandlers) + { + messageHandlers.toFirst(); + while (messageHandlers.hasAccess()) + { + messageHandlers.getContent().send(pMessage); + messageHandlers.next(); + } + } } public void closeConnection(String pClientIP, int pClientPort) @@ -294,15 +294,15 @@ public abstract class Server synchronized(messageHandlers) { - ClientMessageHandler aMessageHandler; - messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - aMessageHandler = messageHandlers.getContent(); - processClosingConnection(aMessageHandler.getClientIP(), aMessageHandler.getClientPort()); - aMessageHandler.close(); - messageHandlers.remove(); - } + ClientMessageHandler aMessageHandler; + messageHandlers.toFirst(); + while (messageHandlers.hasAccess()) + { + aMessageHandler = messageHandlers.getContent(); + processClosingConnection(aMessageHandler.getClientIP(), aMessageHandler.getClientPort()); + aMessageHandler.close(); + messageHandlers.remove(); + } } } @@ -314,46 +314,46 @@ public abstract class Server private void addNewClientMessageHandler(Socket pClientSocket) { - synchronized(messageHandlers) - { - messageHandlers.append(new Server.ClientMessageHandler(pClientSocket)); - } + synchronized(messageHandlers) + { + messageHandlers.append(new Server.ClientMessageHandler(pClientSocket)); + } } private void removeClientMessageHandler(ClientMessageHandler pClientMessageHandler) { - synchronized(messageHandlers) - { - messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - if (pClientMessageHandler == messageHandlers.getContent()) - { - messageHandlers.remove(); - return; - } - else - messageHandlers.next(); - } - } + synchronized(messageHandlers) + { + messageHandlers.toFirst(); + while (messageHandlers.hasAccess()) + { + if (pClientMessageHandler == messageHandlers.getContent()) + { + messageHandlers.remove(); + return; + } + else + messageHandlers.next(); + } + } } private ClientMessageHandler findClientMessageHandler(String pClientIP, int pClientPort) { - synchronized(messageHandlers) - { - ClientMessageHandler aMessageHandler; - messageHandlers.toFirst(); + synchronized(messageHandlers) + { + ClientMessageHandler aMessageHandler; + messageHandlers.toFirst(); - while (messageHandlers.hasAccess()) - { - aMessageHandler = messageHandlers.getContent(); - if (aMessageHandler.getClientIP().equals(pClientIP) && aMessageHandler.getClientPort() == pClientPort) - return (aMessageHandler); - messageHandlers.next(); - } - return (null); - } + while (messageHandlers.hasAccess()) + { + aMessageHandler = messageHandlers.getContent(); + if (aMessageHandler.getClientIP().equals(pClientIP) && aMessageHandler.getClientPort() == pClientPort) + return (aMessageHandler); + messageHandlers.next(); + } + return (null); + } } } \ No newline at end of file diff --git a/User.java b/User.java new file mode 100644 index 0000000..4d85310 --- /dev/null +++ b/User.java @@ -0,0 +1,67 @@ +/** + * Beschreiben Sie hier die Klasse User. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class User +{ + // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen + private String name; + private String password; + private int timesPlayed; + private int winPercentage; + private int currentStreak; + private int maxStreak; + private int[] winInTurn; + + /** + * Konstruktor für Objekte der Klasse User + */ + public User() + { + // Instanzvariable initialisieren + + } + + /** + * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen + * + * @param y ein Beispielparameter für eine Methode + * @return die Summe aus x und y + */ + public void setPassword(String pW) + { + // tragen Sie hier den Code ein + password = pW; + } + + public String getPassword() + { + return password; + } + + public void setName(String pN) + { + // tragen Sie hier den Code ein + name = pN; + } + + public String getName() + { + return name; + } + + public void setName(String pN) + { + // tragen Sie hier den Code ein + name = pN; + } + + public String getName() + { + return name; + } +} + + diff --git a/WordleServer.java b/WordleServer.java index 8b7f3e2..cf6eb1b 100644 --- a/WordleServer.java +++ b/WordleServer.java @@ -4,14 +4,14 @@ */ public class WordleServer extends Server { - public static final int DEFAULT_PORT = 1000; + public static final int DEFAULT_PORT = 1000; public static void main( String[] args ) { new WordleServer(); } - private DatabaseConnector db; + private DatabaseConnector db; public WordleServer() { @@ -26,17 +26,17 @@ public class WordleServer extends Server { @Override public void processNewConnection( String pClientIP, int pClientPort ) { - System.out.println("New connection: " + pClientPort); + System.out.println("New connection: " + pClientPort); } @Override public void processClosingConnection( String pClientIP, int pClientPort ) { - System.out.println("Closed connection: " + pClientPort); + System.out.println("Closed connection: " + pClientPort); } @Override public void processMessage( String pClientIP, int pClientPort, String pMessage ) { - System.out.println("Message: " + pMessage); + System.out.println("Message: " + pMessage); } } diff --git a/package.bluej b/package.bluej index 460a419..c6c4b93 100755 --- a/package.bluej +++ b/package.bluej @@ -1,91 +1,109 @@ #BlueJ package file -dependency1.from=DecisionNode -dependency1.to=Dataset +dependency1.from=DatabaseConnector +dependency1.to=QueryResult dependency1.type=UsesDependency -dependency2.from=Classification -dependency2.to=Dataset +dependency2.from=DatabaseConnector +dependency2.to=Queue dependency2.type=UsesDependency -dependency3.from=Decision -dependency3.to=Dataset +dependency3.from=Server +dependency3.to=List dependency3.type=UsesDependency -dependency4.from=DecisionTreeBuilder -dependency4.to=BinaryTree +dependency4.from=WordleServer +dependency4.to=DatabaseConnector dependency4.type=UsesDependency -dependency5.from=DecisionTreeBuilder -dependency5.to=DecisionNode +dependency5.from=Game +dependency5.to=WordleServer dependency5.type=UsesDependency -dependency6.from=DecisionTreeBuilder -dependency6.to=Classification +dependency6.from=Game +dependency6.to=User dependency6.type=UsesDependency -dependency7.from=DecisionTreeBuilder -dependency7.to=Decision +dependency7.from=Game +dependency7.to=DatabaseConnector dependency7.type=UsesDependency -dependency8.from=DecisionTreeBuilder -dependency8.to=Dataset -dependency8.type=UsesDependency editor.fx.0.height=722 editor.fx.0.width=800 -editor.fx.0.x=388 -editor.fx.0.y=50 -objectbench.height=66 +editor.fx.0.x=346 +editor.fx.0.y=91 +objectbench.height=96 objectbench.width=1201 package.divider.horizontal=0.6 -package.divider.vertical=0.8983286908077994 -package.editor.height=622 -package.editor.width=1078 +package.divider.vertical=0.8476331360946746 +package.editor.height=553 +package.editor.width=1090 package.editor.x=39 package.editor.y=24 package.frame.height=776 package.frame.width=1241 -package.numDependencies=8 -package.numTargets=6 +package.numDependencies=7 +package.numTargets=9 package.showExtends=true package.showUses=true project.charset=UTF-8 -readme.height=58 +readme.height=60 readme.name=@README -readme.width=47 +readme.width=49 readme.x=10 readme.y=10 -target1.height=40 -target1.name=Classification +target1.height=70 +target1.name=DatabaseConnector target1.showInterface=false target1.type=ClassTarget -target1.width=210 -target1.x=40 -target1.y=460 -target2.height=50 -target2.name=Decision +target1.width=150 +target1.x=370 +target1.y=20 +target2.height=70 +target2.name=QueryResult target2.showInterface=false target2.type=ClassTarget -target2.width=190 -target2.x=300 -target2.y=460 -target3.height=120 -target3.name=BinaryTree +target2.width=120 +target2.x=110 +target2.y=80 +target3.height=70 +target3.name=User target3.showInterface=false target3.type=ClassTarget -target3.width=440 -target3.x=890 -target3.y=250 -target4.height=40 -target4.name=Dataset +target3.width=120 +target3.x=770 +target3.y=50 +target4.height=70 +target4.name=Game target4.showInterface=false target4.type=ClassTarget -target4.width=270 -target4.x=430 +target4.width=120 +target4.x=960 target4.y=30 -target5.height=50 -target5.name=DecisionNode +target5.height=70 +target5.name=Server target5.showInterface=false target5.type=AbstractTarget -target5.width=110 -target5.x=210 -target5.y=290 -target6.height=60 -target6.name=DecisionTreeBuilder +target5.width=120 +target5.x=770 +target5.y=300 +target6.height=70 +target6.name=WordleServer target6.showInterface=false target6.type=ClassTarget -target6.width=270 -target6.x=580 -target6.y=230 +target6.width=120 +target6.x=540 +target6.y=210 +target7.height=70 +target7.name=List +target7.showInterface=false +target7.type=ClassTarget +target7.width=140 +target7.x=390 +target7.y=380 +target8.height=70 +target8.name=GUI +target8.showInterface=false +target8.type=ClassTarget +target8.width=120 +target8.x=630 +target8.y=80 +target9.height=60 +target9.name=Queue +target9.showInterface=false +target9.type=ClassTarget +target9.width=120 +target9.x=80 +target9.y=380