Zum Inhalt springen
Malarkey

Coder-Stübchen

Empfohlene Beiträge

Geschrieben
Welche Sprachen sprecht ihr?

Java, C#, RPG, PHP, ... :daumenhoch:

Geschrieben
Womit soll ich fortfahren? Wollte später in richtung Spieleprogrammierung gehen.

Ich würde dir folgendes empfehlen:

Du könntest dir das Source SDK runterladen, dort wird soweit ich weiß auch mit C++ gecodet. Du lernst auch gleich einen Editor und andere Tools kennen. Damit solltest du recht schnell ein paar Ergebnisse erzielen können. Ich hab hier auch nen Buch als PDF rumliegen (etwas veraltet aber noch anwendbar). Falls du Interesse hast --> PM.

Mehr Infos: http://developer.valvesoftware.com/wiki/Main_Page

Gibt ne Menge Tuts im Internet.

Andere Möglichkeit: Du fängst erstmal klein an z.B. mit Love2D. Wird mit Lua programmiert (super einfach zu lernen und später bestimmt mal nützlich). Hab damit so eine Art Moorhuhn Spiel vor einem Jahr angefangen. Mal sehen ob ichs finde. Hat sogar durch Box2D eine Physik Engine.

Oder du fängst mit SFML an, wie defaultplayer schon gesagt hat.

Geschrieben

VBA, wenig SQL, etwas ABAP

HTML, CSS, JS

Hat jemand mehr oder wenige kostenlose Java-Kurse, die er mir empfehlen könnte?

Geschrieben (bearbeitet)

Auf Englisch ist das hier wohl so ziemlich das beste (kostenlose):

http://download.oracle.com/javase/tutorial/index.html

Jede Menge Tutorials mit Codebeispielen. In meiner Lernphase bin ich recht oft darüber gestolpert.

Auf deutsch ist das hier auch nicht schlecht, aber da die kostenlose Version abgespeckt ist fehlen teilweise wichtige Abschnitte.

http://openbook.galileocomputing.de/javainsel/

E: mal wieder late :P

Bearbeitet von Bulletproof0000
Geschrieben
Spezialgebiet: Python, schon seit Jahren. :)

Arme sau :bleh:

Geschrieben
Schon "Java ist auch eine Insel" angeschaut?

Auf Englisch ist das hier wohl so ziemlich das beste (kostenlose):

http://download.oracle.com/javase/tutorial/index.html

Jede Menge Tutorials mit Codebeispielen. In meiner Lernphase bin ich recht oft darüber gestolpert.

Auf deutsch ist das hier auch nicht schlecht, aber da die kostenlose Version abgespeckt ist fehlen teilweise wichtige Abschnitte.

http://openbook.galileocomputing.de/javainsel/

E: mal wieder late :P

Vielen Dank euch beiden, da werd ich mal reinschauen :)

Geschrieben
Ich hab KP wie ich in C++ weitermachen soll =/

Also ich hab so die wichtigsten STL Elemente drauf, die grundlegende Objektorientirung (Klassen, Templates, Vererbung <- Mag ich gar nicht) und so.... Womit soll ich fortfahren? Wollte später in richtung Spieleprogrammierung gehen.

Grenze den Bereich der Spieleprogrammierung ein, dann kann ich dir eventuell weiterhelfen.

Um (Mehrfach-) Vererbung bei Spieleprogrammierung (ich meine damit "richtige Spiele" kein 3x3 Sodoku oder Schiffe versenken mit Java AWT/Swing oder so) wirst du hier nicht herum kommen keine Chance !

Kurzbeispiel "PlayerController/PlayerPawn/EngineActor" oder wie auch immer sich das in der jeweiligen Engine schimpft ist fast immer eine abstrakte Klasse die du dann ableiten und "vollenden" darfst etc.

Falls du (den Mist) zeitnah studieren willst würde ich mir "Sortieralgorithmen" (verkettete Listen/Rekursion) anschauen, weil in einem Informatikstudium wirst du das garantiert im Fach Algorithmen machen dürfen und "Traversieren von Binärbäumen". Rekursion ist generell sehr beliebt min. "Fibonacci" und "Türme von Hanoi" u.s.w. :trollface: und gewöhne dir eine vernüftige Fehlerbehandlung an ansonten gibt es an Hochschulen hohe Abzüge in der B-Note ("Exceptions" etc.)

Geschrieben

Können bei Java auf einem InputStream ein BufferedReader und ein ObjectInputStream gleichzeitig drauf sein?

Geschrieben

Wenn du jeweils einen neuen BufferedReader und ObjectInputStream erstellst und dann den InputStream als Argument übergibst, oder wie?

So weit ich weiß wird dann die Datei aber von Windows gelockt, weil sie genutzt wird. Dürfte aber ja nur das Schreiben von Daten betreffen, oder?

Geschrieben

Naja ich muss ja als Testat einen Chat über Server / Clientverbindung schreiben.

Jetzt hab ich einen ClientNetworkController, der über einen PrintWriter Strings an den Server schickt, damit dieser weiß, was er tun soll. Mögliche Strings sind:

  • Login
  • Register
  • List
  • Chat

Der Server liest diese Strings über einen BufferedReader. Wenn der String "List" vorhanden ist, soll der Server den UserContainer, in dem alle eingeloggten User drinnen stehen über den ObjectOutputStream zurückschicken. Der ObjectOutputStream liegt auf dem OutputStream des Sockets genauso wie der PrintWriter des Servers, da der Server ja auch Nachrichten zurückschicken soll.

Jedes Mal, wenn ich die Liste erhalten möchte, hängt sich mein Client und mein Server auf. Also ich hab die Vermutung, dass der PrintWriter und der ObjectOutputStream sich in die Quere kommen :S

Beim Client ist es nämlich das selbe. Dort gibt es einen BufferedReader, um die Nachrichten vom Server zu lesen und den ObjectInputStream, um den UserContainer zu erhalten :(

Geschrieben (bearbeitet)

Und wenn du jeweils nur einen benutzt, dann funktioniert es?

Ich hoff, dass ich das Konzept jetzt richtig verstanden hab. Hast du immer flush() nachm Schreiben verwendet? Und gehst du sicher, dass der richtige Reader den String empfängt? Ein String ist ja ebenfalls ein Objekt, welches vom ObjectInputStream gelesen werden kann, wenn ich mich nicht täusche.

Es müsste auch gehen, den String über den ObjectOutputStream zu schicken, also dass du das ganze auf einen Stream reduzierst und dann halt prüfst, was für ein Objekt reinkommt.

Bearbeitet von Bulletproof0000
Geschrieben
Und wenn du jeweils nur einen benutzt, dann funktioniert es?

Na das funktioniert ja, aber ich bräuchte die Kombination aus Beidem. :trollface:

Ich hab mal den Code aus meinem Testat getrennt und wollte das mal genauer testen.

Nun ja, in diesem Testprogramm funktioniert es auch nicht.

Ich poste mal schnell den SourceCode, vielleicht siehst du ja was und der Fehler liegt gar nicht an den beiden Streams, sondern an etwas anderem. Habe testweise nur versucht die Objects hin- und herzuschicken:

StartClient.java: http://pastebin.com/6Sbi359v

StartServer.java: new Server(5300);

Server.java: http://pastebin.com/J1Wi6Q5z

Client.java: http://pastebin.com/QhQxRjPJ

Ich hoff, dass ich das Konzept jetzt richtig verstanden hab. Hast du immer flush() nachm Schreiben verwendet? Und gehst du sicher, dass der richtige Reader den String empfängt? Ein String ist ja ebenfalls ein Objekt, welches vom ObjectInputStream gelesen werden kann, wenn ich mich nicht täusche.

Ich benutze immer flush() nach dem Schreiben :)

Ja ich bin sicher, dass der richtige Reader den String erhält, da die readLine() Methode des BufferedReader vor dem Erstellen des ObjectInputStreams passiert ;)

Aber ich glaube da spielt es sogar keine Rolle, wann welche Methode von welchem Stream verwendet wird. Anscheinend reicht es schon, wenn zwei Streams (ObjectOutputStream, PrintWriter) auf dem selben OutputStream liegen, damit es zu Problemen kommt.

Es müsste auch gehen, den String über den ObjectOutputStream zu schicken, also dass du das ganze auf einen Stream reduzierst und dann halt prüfst, was für ein Objekt reinkommt.

Stimmt! Das wäre die Möglichkeit :o Gar nicht mehr dran gedacht, dass so gut wie alles in Java ein Object ist. :daumenhoch:

Geschrieben (bearbeitet)

Konnte das Problem lösen.

Wenn man den ObjectInputStream auf dem Client aufmacht, aber auf dem Server kein OutputStream läuft, dann hängt sich der Client auf. Das selbe umgedreht. Es müssen gleichzeitig beide Streams auf dem Server und auf dem Client laufen.

Java ist da aber auch bescheuert. Anstatt eine Fehlermeldung zu geben ...

Dafür bin ich auf ein anderes Problem gestoßen, dass ich schon einmal in einer Übung hatte.

java.lang.ClassCastException: server.model.UserContainer cannot be cast to client.model.UserContainer

Beide Klassen heißen gleich, haben exakt den selben Inhalt und sogar exakt die selbe serialVersionUID, befinden sich nur in zwei unterschiedlichen packages. Also warum klappt das Casten nicht?

Ich kann ja schlecht aufm Client das Servermodel importieren :/

Bearbeitet von Cyborg11
Geschrieben (bearbeitet)

Ok, gut zu wissen mit den Streams. Methoden zum Lesen von Streams blockieren halt so lange, bis was zum Lesen da ist.

Zum Casten:

Mein Vorschlag wäre (hab ich selber schon so gemacht): Klassen, welche von Server UND Client genutzt werden in ein extra Package. Auf dieses Package greifen dann halt beide zu

Bearbeitet von Bulletproof0000

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden


  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.