Ein Spiel in Java programmieren - Der Hintergrund wird 'geloopt' [05] (HD+)

preview_player
Показать описание


Heute wollen wir ein Jump and Run spiel in Java Programmieren. Diese Reihe wird nach Wunsch hochgeladen,umso mehr positives Feedback wir erhalten umso mehr Teile wird diese Reihe letztentlich auch haben können.In diesem Teil des Spieles erstellen wir unser SpielFrame incl. Hintergrund,welches sich interaktiv "Scrollen" lässt.

Man hört sich ;)
Рекомендации по теме
Комментарии
Автор

OK ich weiß jetzt wie man auf die Zahl 685 kommt... 
Ich erkläre euch aber mal wie man auf alle Zahlen kommt, da es im Video etwas umständlich erklärt wurde:

2350 = doppelte Länge des Bildes
510 = Länge des Bildes - Größe des Fensters
1690 = Länge des Bildes + 510
685 = Größe des Fensters
1180 = Größe des Bildes

FutureCraftler
Автор

Hi Leute, ihr macht das echt gut. Kein Problem mit den kleinen Schusseligkeitsfehlern, so ist das mit dem Programmcode-schreiben nun einmal.

Allerdings finde ich den Code für die fortlaufenden Bilder doch sehr umständlich und  unnötig kompliziert. Wie wäre es damit, in der paint-Methode nur folgendes zu schreiben:

       if ( x_Bild < -img.getWidth(null) || x_Bild > img.getWidth(null) ){
            x_Bild = 0;
        }
               
        g.drawImage(img, (x_Bild - img.getWidth(null)), 0, null);
        g.drawImage(img, x_Bild, 0, null);
        g.drawImage(img, (x_Bild + img.getWidth(null)), 0, null);
   
So wird dafür gesorgt, dass immer das Bild gezeichnet wird, das gerade in-frame ist, plus der beiden Bilder rechts und links davon. Wenn das aktuelle Bild verlassen wird, dann wird x_Bild wieder auf 0 gesetzt und das neue Bild im Frame wird das akutelle und es wird wieder rechts und links davon ein neues Bild gezeichnet.
Das erspart die umständliche Rechnerei und sorgt dafür, dass es egal ist, welches Bild als Hintergrund genommen wird, es wird immer passen. Anstelle der umständlichen Rechnerei holen wir uns die Bildbreite direkt durch img.getWidth(). So werden auch die Variablen nx bis anzahl2 funktionslos, da wir keine Zähler mehr brauchen.
Derzeit ist es auch noch nicht notwendig g in g2d zu casten, daher würde ich hier lieber noch darauf verzichten. Da ich aber noch nicht weiß wie euer Code weitergeht, kann es sein, dass es später doch noch Sinn macht.

SGT_Brobaker
Автор

Wer sich an dem Tutorial stört, muss es sich ja nicht anschauen.
Ich hätte halt ne kleine Verbesserungsidee für die paint()-funktion. Einfach:

public void paint( Graphics g ){
        super.paint(g);
        Graphics2D f2 = (Graphics2D) g ;

        //wenn das Bild einmal durchgelaufen ist wird X_Bild zurückgesetzt
        //(In Annahme dass ein Rest übrigbleiben könnte, WICHTIG!!!).
        if( X_Bild <= -711) {     //711 ist die Breite MEINES Hintergrundbildes
            X_Bild += 711 ;
        }
        //Erstes Bild wird an jeweilige stelle gezeichnet
        f2.drawImage( img, X_Bild, 0, null ) ;
        //Zweites Bild wird ans Ende des ersten Bildes gezeichnet
        f2.drawImage( img, X_Bild + 711, 0, null ) ;
}

Man braucht keine weiteren Variablen und weniger if-Statements (die sind ja ziemlich teuer). Das Beste ist aber dass es etwas übersichtlicher ist. An sich braucht man auch (noch?) keine Getter und Setter zumal X_Bild eine Interne Variable der Klasse ist. Durch das zurücksetzen von X_Bild ist außerdem gewährleistet dass niemals der Maximal- oder Minimalwert von int erreicht wird und die Level unendlich groß werden können.

Als Java-Neuling (bisher c++) finde ich die Tutorials gut, besonders für deutsche Tutorials. Als Klugscheißer will ich trotzdem was sagen :D. Bitte nicht als Kritik werten, ich dachte nur das wäre ne coole Verbesserung.

MultiRandomise
Автор

Hey JaDHB1 ich schau mal nach längeren deine Turorials wieder an ;D
Ich hab da ein Problem bei diesem Loop denn ich kenn mich nicht aus :(
Wegen diesem "510", "2350", "1690" usw.... könntest du es vielleicht mir und anderen hier beschreiben?
Danke wär nett von dir^^!

cruzerpinghd
Автор

immernoch die beste Tutorial für solch ein Projekt

millyyy
Автор

1. Use variable names that describe the variable itself. For example nx and nx2 do not describe themselves.
2. Since start programming the variable key is not needed, at least not as global variable.
3. The method getXBild is unnecessary. At the very latest you 'd notice it when creating the method again by Eclipse.
4. At first you wrote getXBild inside your private class, later wondering about no access to it from outside and doesn't search for the cause. Instead of this you let it generate by Eclipse. That's bad and dangerous! As long as no instance of inner class was created you have no access to inner instance methods.
5. a += b is not the same as a = a + b

mknolle
Автор

Hallo,  
Ich habe mal drei fragen nämlich:
1.
Wenn ich mit dem Bild weiter nach links "scrolle" dann sind bei mir immer weiße Abstände zwischen den einzelnen Bildern.
2.
Ich kann das Bild was Du verwendest nicht mehr downloaden.
3.
Bei mir wurden die Pfeiltasten vertauscht ich habe alles so gemacht wie in euren Videos aber seit dem "loopen" läuft das Bild nach links wenn ich die Linkepfeiltaste drücke und mit rechts ist dass das gleiche.

Kannst du mir helfen ?  

thelastman
Автор

Richtig geil. Freu mich auf den nächsten Teil.

JJletsplaysJJ
Автор

Bei mir haben sich die Pfeiltasten vertauscht. Warum das den?

pyrofreak
Автор

Die Seite ist Momentan im Umbau bzw. wir arbeiten an einem kompletten Relaunch der Seite wobei wir uns auf den Downloadbereich fokussieren wollen. Der Downloadlink sollte jetzt wieder funktionieren.

JaDaHB
Автор

Hallo
Könntest du mir bitte erklären, wie du auf deine Zahlen 2350, 510, 1690, 685 etc gekommen bist. Für mich ist das durch und durch nicht selbsterklärend. Wär nett wenn du das bitte erklären könntest.
Grundsätzlich finde ich gut was du machst. Nur manchmal find ichs doof dass gewisse sachen nicht erklärt werden sondern einfach vorgegeben.
Vielleicht könntest du das berücksichtigen.

stefaniegross
Автор

Vielen Dank! :D Wir versuchens und tun was wir können. So ein Video vorzubereiten dauert und wir haben einen relativ hohen Qualitätsanspruch an uns selbst. Das nächste Video wird auf jeden Fall der 6te Teil der "Spiel programmieren in Java" Reihe.

JaDaHB
Автор

So der Code kann von der Website schon runtergeladen werden, die Erklärung des Codes folgt dann im Video das bald kommt :) Sorry wegen Verzögerung der PC wollte auf einmal nicht mehr booten....Link in Beschreibung

JaDaHB
Автор

Hey JaDaHD1 und ihr anderen... ich weiss, dass das Video jetzt schon über 4 Jahre alt ist und so... trotzdem hätte ich ne Frage: Wie habe ich über den Link in der Beschreibung Zugriff auf das Hintergrundbild? Wenn ich diesen nämlich drücke, gelange ich zu einer Seite, auf der nur Werbung für andere kostenpflichtige Grafik-Internetseiten gemacht wird... :/ Ist der Link nicht mehr aktuell, oder gibt es die Seite allgemein gar nicht mehr? Bitte um Rückmeldung - falls möglich natülich. Vielen Dank schonmal im Voraus, ich mag diese Videos. :)
LG Alex ^^

evilbuddy
Автор

Ich hab den Link in der Beschreibung jetzt korrigiert, war echt n dummer Fehler den ich nicht bemerkt hätte ^^. Such dir auf der Seite den Code raus den du suchst und vergleich in mit deinem. Wenn du den Fehler dann immer noch nicht gefunden hast, schreib und eine Nachricht bei YouTube, eine E-Mail oder eine Nachricht bei Facebook. Ich hoffe ich konnte helfen :)

JaDaHB
Автор

if(key == KeyEvent.VK_LEFT) {
lauf = -2;
}

if(key == KeyEvent.VK_RIGHT) {
lauf = 2;

Ich musste das anderst herum machen mit der minus zahl und der positiven Zahl.
Warum ist das so?

Karli
Автор

Kannst du mir eventuell einen genaueren Link geben ich finde das Bild nämlich nicht. Oder gib bitte ein anderes Bild mit anderen Werten von "GOOGLE" an. Sonst super Folgen aber wenn du den Text schreibst dann nimm bitte den Mauszeiger von der Zeile weil man sonst nichts erkennen kann. Danke!

supercomputer
Автор

:D der siebte teil kommt demnächst. Schön dass dir die Reihe gefällt :)

JaDaHB
Автор

Größten Teils Bücher gewälzt und ausprobiert. Das ist auch ganz wichtig: EInfach selber rumprobiern ;)

JaDaHB
Автор

Ich denke der nächste Part wird nicht mehr allzu lange auf sich warten lassen ^^

JaDaHB