Java
Manfreds BLUEJ JAVA PAGE
Falls die Sie diese Seite nützlich finden, können Sie auch spenden!
WICHTIG: Alle Dateien sind am Ende dieses Dokuments direkt abrufbar!!
Buchempfehlungen:
Java lernen mit BlueJ: Eine Einführung in die objektorientierte Programmierung
Erhältlich bei Amazon
19.06.2006 Neues Projekt: Matrixstar
Für die Schule -Logik und Algorithmen- war ein Programm zu coden, welche einige Algorithmen der Graphentheorie umsetzen. Hier mein Beitrag...
Hier zum download das JAR File
02.05.2005 Neues Projekt: Zahlensystemkonverter
Nach sehr langer Pause (...die Schule...) habe ich nun wieder etwas gecodet. Einen Zahlenkonverter. Jaja, es gibt viele, aber nur wenige können auch Nachkommastellen ausrechnen... Dieser hier konvertiert Zahlen der Basis 0-36 um. Es werden bis zu 4 Kommastellen ausgegeben. Habe ihn zwar getestet, jedoch übernehme ich keine Gewähr auf richtigkeit! Zum Schluss noch, berechnet werden Zahlen bis maximal 9.999.999
Hier wird auch das TableLayout verwendet. Das komplette Projekt besteht daher aus 2 Jar-Files. Zum Download das vorhandene ZIP File downloaden und entpacken! Anschließend Zahlensystem.jar starten!
Hier zum download das ZIP File
09.02.2005 Update
07.12.2004 Neues Projekt: JMine
JMine ist ein MineSweeper Clone. Das klassische Windows Spiel habe ich nun in Java programmiert! Irgendwie halb so schlimm wie man sich das vielleicht vorstellt! Im Prinzip wurde hier nichts neues verwendet, was bei den anderen Projekten nicht schon vorgekommen wäre!
Update: Highscoreliste hinzugefügt; Bug behoben da es möglich war, dass beim erstellen der Bomben ein Feld mehrmals zufällig gewählt wurde und es so nicht so viele Bomben gab wie angenommen!
Hier gibts das JAR File
30.10.2004 Neues Projekt: JPaint
Nach kurzer Pause gings gleich weiter. Nun habe ich ein simples Zeichenprogramm programmiert. Es erlaubt Rechtecke, Ovale, Freihand, Linien und Freihand verbunden zu zeichnen. Das ganze gefüllt oder leer. Die gezeichneten Objekte werden jeweils in eine ArrayList gespeichert.
Features:
- Speichern, Laden (komplette ArrayList wird gespeichert)
- Zeichnen von Rechteck, Oval, Linie, Freihand, Freihand verbunden
- Auswahl von Hintergrund und Zeichenfarbe
- Gefüllte Objekte oder leere zeichnen
- Rückgängig Funktion um gezeichnete Objekte zu löschen.
Verwendete Methoden evtl. zum Lernen:
- JRadioButtonMenuItem, JFileChooser, JPopupMenu (auf Zeichenfläche), Menüaufruf durch Tasten, Abfrage der Maus
Hier gibts das JAR File
27.10.2004 Neues Projekt: Funktionsplotter mit Parser
Wie einige Besucher wissen, habe ich mich ja schonmal an einem Funktionsplotter versucht (siehe unten). Dieser funktionierte zwar, aber er konnte keine Funktionen einlesen. Sprich, der Parser fehlte. Ich habe nun einen neuen Anlauf gewagt, auch unter Einbringung von neu angeeignetem Wissen.
Der Plotter (einige Aufrufe auch über Menü möglich!):
Zeichnet 1-3 von Ihnen eingegebene Funktionen
'G' blendet ein Gitternetz ein/aus
Pfeiltasten scrollen den Ausschnitt
'+'/'-' zoomen
'ESC' in Ausgangszustand zurück.
Der Parser:
Kann Eingaben parsen, ABER prüft diese nicht!!
Regeln:
- keine Leerzeichen
- Anzahl von '(' und ')' müssen übereinstimmen
Unterstützte Rechenarten:
- 'sin'=Sinus - 'cos'=Cosinus - 'tan'=Tangens - 'cotan'=CoTangens - 'log'=Logarithmus - 'sqrt'=Wurzel
- '^' '+' '-' '*' */'
Rechenregeln:
'()' -> '^' -> 'sqrt' -> 'log' -> 'sin' -> 'cos' -> 'tan' -> 'cotan' -> '/' -> '*' -> '-' -> '+'
Wobei zu beachten ist, dass z.B. folgende Rechnung so gerechnet wird: 1-2+3-2 -> -1+1 -> 0
Richtig wäre die Regel, dass in der Reihenfolge des vorkommens gerechnet wird. Im Zweifelsfall also Klammern setzen!
Hier gibts das JAR File WICHTIG: Bitte JDK1.5.0 verwenden!!
7.10.2004 Neues Projekt: Adressbuch
Programmierung eines Adressbuches mit folgenden Funktionen:
Speichern, Speichern unter, Laden, CSV-Export, CSV-Import, Suchen, Ändern, Löschen, Liste anzeigen
Das Programm besteht insgesamt aus 10 Klassen. Also ersmals wirklich OOP. Die Hauptklasse GUI steuert das ganze. Zum Einsatz kommen Menüs, Buttons, FileCooser. Das Adressbuch wird als komplettes Objekt gespeichert oder geladen. Genauso wie man CSV-Dateien erstellen, ebenso importieren kann.
Der Source-Code ist im JAR-File enthalten. Zum Schluss, BlueJ Benutzer können ganz einfach die .java Dateien in ein Verzeichniss stellen und dann in BlueJ importieren.
Hier gibts das JAR File
SokobanJay war mein letztes BlueJ-Projekt, da ich ab jetzt mit Eclipse arbeiten werde! Jedoch nicht weil ich es schlecht finde (ganz im Gegenteil), sondern weil wir in der Schule nun eben mit Eclipse arbeiten werden. Diese Seite bleibt jedoch weiterhin bestehen!
6.9.2004 Neues Projekt: Sokoban Clone - SokobanJay
Sokoban kennt sicher jeder, also dieses Kistenverschieben. Anfänglich wollte ich einfach nur ein Labyrinth aus einer Datei einlesen und darstellen. Dann kam mir die Idee, dass sich ein Spieler darin bewegen können sollte. Tja und dann fehlte nicht mehr viel und SokobanJay war fertig!
Wie erwähnt, werden die Levels aus einer Textdatei eingelesen. Die Levels selbst hab ich von Internet. Diese Textdatei ist 'maze.txt' kann auch selbst editiert werden. Zum Download steht einstweil nur das JAR-File zur Verfügung.
Einziger Wermutstropfen, das Programm hat wenig mit OOP zu tun. Also besteht quasi nur aus einer einzigen Klasse. Ich werde versuchen mich jedoch nun langsam umzustellen!
Achja noch zum Spiel: Rot ist der Spieler (Steuerung mit Pfeiltasten), gelb die zu verschiebenden Fässer und blau die Zielfelder, wo die Fässer hinkommen sollen. Wenns einmal nicht mehr weitergeht, 'ESC' setzt den Level in Ausgangszustand zurück! Viel Spass!
Hier gibts das JAR File
17.8.2004 Neues Projekt: Simple Calculator
Ein ganz einfacher Rechner, der nur +-/* Rechnen kann. Ausserdem können nur 2 Zahlen berechnet werden, spätestens dann muss die '=' Taste gedrückt werden, sonst Fehler. Nach der '=' Taste kann jedoch weitergerechnet werden.
Ich wollte bei diesem Projekt eigentlich nur erstmals eine eingene GUI erstellen. Der Rechner selbst war einstweil nebensächlich! Sicher nicht schlecht für jemanden um sich erstmals mit GUI zu beschäftigen. Es kann wieder ein ausführbares JAR-File erstellt werden. Oder hier zum download klicken.
Ich habe noch ein kleines Tutorial zum erstellen von einem GUI zusammengeschrieben. Vielleicht hilfts dem ein oder anderen!
21.6.2004 Neues Projekt: TIC TAC TOE
Wiedermal ein kleines Game. Tic Tac Toe, jedem bekannt in Java implementiert! Habe nun einen Computergegner erstellt. Man kann 3 Level auswählen (Level 1=zufällig, Level 2=angriff+verteidigung, Level 3=angriff, verteidigung und ziel verfolgen 2 steine nebeneinander zu bekommen).
Die Computer Methode ist ziemlich verwirrend, naja hab sowas auch zum ersten mal gemacht! Die Klasse Canvas wird wieder verwendet.
Es kann wieder ein ausführbares JAR-File erstellt werden.
DOWNLOAD
16.6.2004 Neues Projekt: Komplexe Zahlen
Kurz vor der erholsamen Sommerpause habe ich noch einmal etwas zusammengecodet! Das Programm führt Addition, Subtraktion, Division und Multiplikation mit 2 Komplexen Zahlen durch und zeigt dannach die Ergebnisse sowie die zwei ursprünglichen Zahlen auf der Gaußschen Zahlenebene an. Des weiteren werden alle komplexen Zahlen auch in Polarkoordinaten umgerechnet!
Dieses Programm kann aus Bluej auch als JAR-File exportiert und dannach per Doppelklick ausgeführt werden! Beim exportieren die Klasse 'Komplex' als ausführbare auswählen!
DOWNLOAD
14.4.2004 Neues Projekt: Invader´s
So, nun habe ich mein erstes Java-Spiel programmiert! Es ist eine Abwandlung vom Projekt "Wurf". Auf dem Spielfeld wird an einem zufälligen Platz ein Kreis gezeichnet. Diesen gilt es mit einem kleinen "Ball" der von rechts unten abgefeuert wird zu treffen. Wie der Ball fliegt, setzt mann vorher durch Eingabe von Geschwindigkeit und Winkel fest!
Während des Fluges wird geprüft ob der Ball das Ziel getroffen hat, also in seinem "Gebiet" ist. Hierfür wird quasi ein Rechteck über den Kreis gespannt und diese Position abgefragt. Dadurch ist die Trefferermittlung natürlich etwas ungenau, da Quadrat mehr Fläche hat als der Kreis, aber naja wir wollen nicht so kleinlich sein...
Am Ende wird dann noch die Anzahl der benötigten Versuche ausgegeben!
Zwar nicht wirklich berauschend, aber immerhin ein Anfang...
DOWNLOAD
4.3.2004 Neues Projekt: Uhr
Eine Uhr wird angezeigt und die aktuelle Systemzeit dargestellt. Die Anzeigedauer in Sekunden wird im Konstruktor übergeben genauso wie die Grösse des Fensters für die Uhr (Die Uhr wird dadurch auch grösser bzw. kleiner)
Das Projekt ist sicher kein Beispiel für effiziente Programmierung, es ist sicher teilweise optimierungsbedürftig..
Der Kreis der Uhr wird mittels der Winkelfunktionen gezeichnet.
Für die Zeigerstellungen wird ebenfalls die Winkelfunktion (Startpunkt=die Mitte, Endpunkt X ist das Ergebniss aus cos(Alpha)*hypotenuse, Endpunkt Y = sin(Alpha)*hypotenuse, wobei die Hypotenuse der Radius(=Zeiger) ist. Somit kommt man auf den Endpunkt des Zeigers (naja wenn nicht ganz klar nachlesen bei www.mathe-online.at unter Winkelfuntion) benutzt und für jede Minute das Ergebniss in ein Array geschrieben um die Berechnung nicht bei Laufzeit durchführen zu müssen.
DOWNLOAD
11.2.2004 Neues Projekt: Zahlensysteme
Dieses Projekt stellt 4 Klassen zur Verfügung.
Bin2Dez wandelt eine Binärzahl in Dezimalzahl um und liefert den entsprechenden Returnwert als int.
Dez2Bin wandelt Dezimal in Binär und liefert Returnwert als String.
Dez2Hex wandelt Dezimal in Hexadezimal und liefert String.
Hex2Dez wandelt Hexadezimal in Dezimal und liefert int.
Demnächst werde ich evtl. eine Klasse schreiben welche von System n auf System m umwandelt.
Klassen Dez2Hex und Dez2Bin wurden so geändert, dass anstelle von String die Klasse StringBuffer verwendet wird!
Vorteile: Schnellerer Code, Weniger Code benötigt (z.B. umdrehen des Strings durch reverse Methode), Länge wird automatisch erweitert, war zuvor nicht so, da das Array fix mit einer grösse Hinterlegt wurde.
DOWNLOAD
10.2.2004 Neues Projekt: Funktionsplotter
Um Funktionen besser zu verstehen können Funktionsplotter sehr hilfreich sein. Dieser hier ist eher nur ein ganz simpler mit welchem
"nur" Funktionen a´la x^n oder welche nach der Formel f(x)=k*x+d dargestellt werden können. Ich wollte zwar erreichen, dass eine
beliebige Funktion eingegeben werden kann, aber ich scheiterete an dem Teil, an dem das Programm den eingegebenen Funktionsstring
zerlegen und beurteilen muss. Naja vielleicht gibts den irgendwann mal.... ;-)
10.2.2004 Neues Projekt: Wurfparabel:
Nach dem recht spannenden Physikunterricht versuchte ich die gelernte Formel in das Programm umzusetzen
was eigentlich nicht wirklich ein Problem darstellte.
DOWNLOAD
Neues Projekt: Sortieralgorithmen
BubbleSort und Quicksort werden implementiert! Dazu noch grafische Darstellung der Sortierverfahren
Klasse Canvas von Bluej.org wird ebenfalls verwendet um Fenster darzustellen
DOWNLOAD