Jump to content
Malarkey

Coder-Stübchen

Recommended Posts

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.

Share this post


Link to post
Share on other sites

VBA, wenig SQL, etwas ABAP

HTML, CSS, JS

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

Share this post


Link to post
Share on other sites

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

Edited by Bulletproof0000

Share this post


Link to post
Share on other sites
Spezialgebiet: Python, schon seit Jahren. :)

Arme sau :bleh:

Share this post


Link to post
Share on other sites
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 :)

Share this post


Link to post
Share on other sites
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.)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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 :(

Share this post


Link to post
Share on other sites

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.

Edited by Bulletproof0000

Share this post


Link to post
Share on other sites
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:

Share this post


Link to post
Share on other sites

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 :/

Edited by Cyborg11

Share this post


Link to post
Share on other sites

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

Edited by Bulletproof0000

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.