Wie geil. Du programmierst, als ob du ganz normale Menschenschrift schreibst. Hast die Sache tiefgreifend verstanden. Ich versuche schon seit einem Jahr programmieren zu lernen, aber bisher vergeblich. Ich werde mir deinen Kurs näher anschauen 👍
Hey, erstmal Super Video und sehr gut erklärt. Kannst gerne mehr davon hochladen. Ich programmiere das ganze nach und hatte ein Fehler, daher wollte ich dir schreiben. Habe allerdings meinen Fehler entdeckt (Tippfehler :D).
Bei Minute 11:34 zur Methode paint(Graphics g): Wodurch wird paint aufgerufen und warum wird kein Graphics Object benötigt, um diese Methode aufzurufen?
Die Methode paint(Graphics g) wird von der Java Rendering-Pipeline aufgerufen, wenn ein JPanel neu gezeichnet werden muss. Das läuft im Hintergrund ab, sodass man sie nicht selbst aufrufen oder ein Graphics Objekt erzeugen muss. Wir überschreiben nur die Methode um das Render-Verhalten selbst zu definieren.
Ich komme bei 1:19:53 nicht weiter, denn irgendwie wird bei mir die Klasse TimeUnit nicht akzeptiert.. ("Cannot resolve symbol TimeUnit"). Wenn ich den Source Code der Klasse Executors bzw in das Interface scheduleAtFixedRate schaue ist die Klasse Time unit auch rot markiert. Gibt es vielleicht irgendein package das ich importieren soll? LG Nico
Hey Nico, die Imports für die Klasse sollten (abgesehen von den selbst erstellten Klassen) folgende sein: import javax.swing.*; import java.awt.*; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit;
@@javaABCde Danke für deine Antwort:) das Problem ist, wenn ich TimeUnit "import java.util.concurrent.TimeUnit;" importieren will, dann heißt es immer noch: "Cannot resolve symbol TimeUnit".. :(
Wenn sich das irgendwer bis zum Ende reinzieht fress ich nen Besen 😂 Habe lange überlegt ob ich das als mehrteilige Serie hochladen soll, mich dann aber doch für ein einziges Video entschieden. So muss niemand auf eine neue Folge warten, und es kann nicht passieren dass die Serie einfach eingestellt wird und keine neuen Videos mehr dazu kommen. Alles Dinge die mich selbst früher an TH-cam-Tutorials so aufgeregt haben. Hoffe ich kann ein paar Leuten damit weiterhelfen :) Für alle die keinen Bock auf 3 Stunden "Intensivbildung" haben ist hier mein kostenloser interaktiver Java Kurs, in dem die wichtigsten Grundlagen von Java kurz und knapp erklärt werden: 💻 www.javaABC.de/
hi ich war so hobbylos und hab es 3h mit programmiert, allerdings chasen mich die enemies nicht :( nur wenn ich 1-3 blöcke daneben stehe.. ich finde den fehler nicht :c
@@Ari-vb6nd Erstmal nice dass du das durchgezogen hast! Dann wird wohl was in deiner Enemy-Klasse nicht ganz passen, evtl. irgendwo Koordinaten vertauscht oder falsch kopiert? Error-Spotting ist sehr nervig, ich weiß das. Wenn du den Fehler nicht findest dann tausch deine Klasse durch meinen GitHub-Code aus und schau ob es klappt ^^
Hey mein Lieber, Erstmal super lehrreiches Video. Ich hätte eine Frage. Was genau muss sich verändern am Code, wenn man anstatt des komplexen Algorithmus nur drei RandomEnemys zum Laufen bringen möchte. Ich habe versucht dies zu implemenetieren jedoch bewegen sich die 3 enemies nicht.
Hi, vielen Dank! Du meinst nur einen der drei Gegner statt drei? Dann musst du prinzipiell alles genau so machen wie bisher, nur eben statt drei separate Instanzen der Enemies drei Instanzen derselben Klasse erstellen. Das wird also kaum Aufwand sparen, weil die Komplexität ja hauptsächlich am A* Algorithmus liegt. Du könntest aber die Enemy klasse umbauen sodass nie ein Pfad berechnet wird, sondern lediglich immer wieder eine zufällige Richtung ausgewählt wird und der Gegner dann einfach in diese Richtung fährt.
@@javaABCde Hey erstmal vielen Dank für die schnelle Antwort :) Ich weiß ich verlange da jetzt echt viel, aber könntest du mir vielleicht die konkrete Lösung zu dieser Problematik zeigen? Ich hänge da jetzt seit Tagen dran und krieg es einfach nicht hin. Zum Verzweifeln Wäre mir eine unglaublich große Hilfe
@@Ari-qq9gn Hi, sehe die Antwort erst jetzt. Wenn du wirklich nur drei Instanzen von RandomEnemy haben willst benötigst du fast genau so viel Code; du kannst lediglich ChasingEnemy und CuttingEnemy löschen. Hier siehst du was du ändern musst: github.com/timofriedl/javaABC-game/commit/d3381315d0c869e3672ead4e27815a0d3b673791
Bei mir ist der Player plötzlich oben rechts in der Ecke, ist das jemand anderen auch passiert? Hab irgendwo ein Fehler, der das versursacht, weiss aber nicht wo..
ich bin bei den Wandkolisionen angekommen aber meine Figur lässt sich nicht bewegen sie ist wie am Anfang steht stehen ich sehe vom system print das der druck ankommt aber nichts passiert was kann ich machen? ich bin alles nachgegangen und ich habe alles richtig gemacht. (ich bin auch in Intelij und ich glaube ich habe vieleicht etwas nicht installiert)
Hey! Ich glaube nicht dass du etwas installieren musst. Wenn der Tastendruck ankommt muss dein Fehler irgendwo zwischen der keyPressed() Methode und dem Rendern sein. Geh am besten alles Schritt für Schritt durch und lass dir ausgeben ob die Zustände (z.B. die Bewegungen der Figur) so sind wie sie sein sollen. Eventuell liegt das Problem auch bei der Game-Loop. Ich weiß, Debugging ist ekelhaft, aber oft sind es nur kleine Tippfehler.
hey ich muss für die schule auch java lernen ich bin bei der map und sie ist auch da wenn ich starte nur eben die dots nicht die weißen weißt du spontan woran es lieben könnte ?
Hey, schau mal durch eine Konsolenausgabe ob die render-Methode in Dot überhaupt ausgeführt wird. Falls nicht hast du sie irgendwo zwischen der Display Klasse und der Dot Klasse vergessen aufzurufen. Vielleicht ein kleiner Fehler in der Switch-Expression der GameMap-Klasse? Wenn die render Methode aufgerufen wird, wird vielleicht die Farbe von dem Dot nicht gesetzt?
sehr cooles Video hat mir sehr geholfen auch bei einem anderen Projekt
Wie geil. Du programmierst, als ob du ganz normale Menschenschrift schreibst. Hast die Sache tiefgreifend verstanden. Ich versuche schon seit einem Jahr programmieren zu lernen, aber bisher vergeblich. Ich werde mir deinen Kurs näher anschauen 👍
Danke das freut mich riesig :)
Funktion programmieren kann jeder. Elegant programmieren ist die Kunst ^^
Bleib dran, schaffst du!😊
Du erklärst alles verdammt gut. Top!
Danke dir es ist einfach super Töle Tutorial.
Hey, erstmal Super Video und sehr gut erklärt. Kannst gerne mehr davon hochladen.
Ich programmiere das ganze nach und hatte ein Fehler, daher wollte ich dir schreiben. Habe allerdings meinen Fehler entdeckt (Tippfehler :D).
Bei Minute 11:34 zur Methode paint(Graphics g): Wodurch wird paint aufgerufen und warum wird kein Graphics Object benötigt, um diese Methode aufzurufen?
Die Methode paint(Graphics g) wird von der Java Rendering-Pipeline aufgerufen, wenn ein JPanel neu gezeichnet werden muss. Das läuft im Hintergrund ab, sodass man sie nicht selbst aufrufen oder ein Graphics Objekt erzeugen muss. Wir überschreiben nur die Methode um das Render-Verhalten selbst zu definieren.
Ich komme bei 1:19:53 nicht weiter, denn irgendwie wird bei mir die Klasse TimeUnit nicht akzeptiert.. ("Cannot resolve symbol TimeUnit"). Wenn ich den Source Code der Klasse Executors bzw in das Interface scheduleAtFixedRate schaue ist die Klasse Time unit auch rot markiert. Gibt es vielleicht irgendein package das ich importieren soll? LG Nico
Hey Nico, die Imports für die Klasse sollten (abgesehen von den selbst erstellten Klassen) folgende sein:
import javax.swing.*;
import java.awt.*;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@javaABCde Danke für deine Antwort:)
das Problem ist, wenn ich TimeUnit "import java.util.concurrent.TimeUnit;" importieren will, dann heißt es immer noch: "Cannot resolve symbol TimeUnit".. :(
@@nicogeheim398 okay komisch… dann weiß ich auch nicht weiter. Vielleicht die JDK neu installieren?
Mit JDK 17 Funktioniert’s dann lol
Wenn sich das irgendwer bis zum Ende reinzieht fress ich nen Besen 😂
Habe lange überlegt ob ich das als mehrteilige Serie hochladen soll, mich dann aber doch für ein einziges Video entschieden. So muss niemand auf eine neue Folge warten, und es kann nicht passieren dass die Serie einfach eingestellt wird und keine neuen Videos mehr dazu kommen. Alles Dinge die mich selbst früher an TH-cam-Tutorials so aufgeregt haben. Hoffe ich kann ein paar Leuten damit weiterhelfen :)
Für alle die keinen Bock auf 3 Stunden "Intensivbildung" haben ist hier mein kostenloser interaktiver Java Kurs, in dem die wichtigsten Grundlagen von Java kurz und knapp erklärt werden:
💻 www.javaABC.de/
Wieso ist doch cool gemacht, alles sauber programmiert und gut erklärt
@@oingomoingo7411 Ja, aber für drei Stunden braucht’s halt echt Commitment
hi ich war so hobbylos und hab es 3h mit programmiert, allerdings chasen mich die enemies nicht :( nur wenn ich 1-3 blöcke daneben stehe.. ich finde den fehler nicht :c
@@Ari-vb6nd Erstmal nice dass du das durchgezogen hast! Dann wird wohl was in deiner Enemy-Klasse nicht ganz passen, evtl. irgendwo Koordinaten vertauscht oder falsch kopiert? Error-Spotting ist sehr nervig, ich weiß das. Wenn du den Fehler nicht findest dann tausch deine Klasse durch meinen GitHub-Code aus und schau ob es klappt ^^
Danke für das Video!
Hey mein Lieber,
Erstmal super lehrreiches Video. Ich hätte eine Frage.
Was genau muss sich verändern am Code, wenn man anstatt des komplexen Algorithmus nur drei RandomEnemys zum Laufen bringen möchte. Ich habe versucht dies zu implemenetieren jedoch bewegen sich die 3 enemies nicht.
Hi, vielen Dank! Du meinst nur einen der drei Gegner statt drei? Dann musst du prinzipiell alles genau so machen wie bisher, nur eben statt drei separate Instanzen der Enemies drei Instanzen derselben Klasse erstellen. Das wird also kaum Aufwand sparen, weil die Komplexität ja hauptsächlich am A* Algorithmus liegt. Du könntest aber die Enemy klasse umbauen sodass nie ein Pfad berechnet wird, sondern lediglich immer wieder eine zufällige Richtung ausgewählt wird und der Gegner dann einfach in diese Richtung fährt.
@@javaABCde Hey erstmal vielen Dank für die schnelle Antwort :)
Ich weiß ich verlange da jetzt echt viel, aber könntest du mir vielleicht die konkrete Lösung zu dieser Problematik zeigen?
Ich hänge da jetzt seit Tagen dran und krieg es einfach nicht hin. Zum Verzweifeln
Wäre mir eine unglaublich große Hilfe
@@Ari-qq9gn Hi, sehe die Antwort erst jetzt. Wenn du wirklich nur drei Instanzen von RandomEnemy haben willst benötigst du fast genau so viel Code; du kannst lediglich ChasingEnemy und CuttingEnemy löschen. Hier siehst du was du ändern musst:
github.com/timofriedl/javaABC-game/commit/d3381315d0c869e3672ead4e27815a0d3b673791
Bei mir ist der Player plötzlich oben rechts in der Ecke, ist das jemand anderen auch passiert? Hab irgendwo ein Fehler, der das versursacht, weiss aber nicht wo..
ich bin bei den Wandkolisionen angekommen aber meine Figur lässt sich nicht bewegen sie ist wie am Anfang steht stehen ich sehe vom system print das der druck ankommt aber nichts passiert was kann ich machen? ich bin alles nachgegangen und ich habe alles richtig gemacht. (ich bin auch in Intelij und ich glaube ich habe vieleicht etwas nicht installiert)
Hey! Ich glaube nicht dass du etwas installieren musst. Wenn der Tastendruck ankommt muss dein Fehler irgendwo zwischen der keyPressed() Methode und dem Rendern sein. Geh am besten alles Schritt für Schritt durch und lass dir ausgeben ob die Zustände (z.B. die Bewegungen der Figur) so sind wie sie sein sollen. Eventuell liegt das Problem auch bei der Game-Loop. Ich weiß, Debugging ist ekelhaft, aber oft sind es nur kleine Tippfehler.
hey ich muss für die schule auch java lernen ich bin bei der map und sie ist auch da wenn ich starte nur eben die dots nicht die weißen weißt du spontan woran es lieben könnte ?
Hey, schau mal durch eine Konsolenausgabe ob die render-Methode in Dot überhaupt ausgeführt wird. Falls nicht hast du sie irgendwo zwischen der Display Klasse und der Dot Klasse vergessen aufzurufen. Vielleicht ein kleiner Fehler in der Switch-Expression der GameMap-Klasse? Wenn die render Methode aufgerufen wird, wird vielleicht die Farbe von dem Dot nicht gesetzt?
Mach bitte weiter
Weiter mit diesem Spiel? Oder weiter im Sinne von neue Videos?
Sehr gut. Die Akustik fehlt noch.