Frage zum Code

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JonBach18
User
Beiträge: 46
Registriert: Dienstag 22. Dezember 2020, 13:32

Hallo Leute,

ich habe eine kleine Frage. Ich habe mir ein Code angeschaut von einem Spiel und der Ball ändert während des Spiels seine Geschwindigkeit.
Könnt Ihr mir erklären was dieser Code bedeutet:

Code: Alles auswählen

        if speed_increase > 400:
            speed_increase = 0
            if pong.speed_x < 0:
                pong.speed_x -= 1
            if pong.speed_x > 0:
                pong.speed_x += 1
            if pong.speed_y < 0:
                pong.speed_y -= 1
            if pong.speed_y > 0:
                pong.speed_y += 1
Wenn Ihr mehr Information braucht bitte schreiben. Ihr würdet mir sehr sehr helfen!!!
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

was verstehst du genau nicht?

Das sind zwei hintereinander verschachtelte if-Bedingungen: ist die erste erfüllt wird eine Variable auf Null gesetzt. Dann werden in Abhängigkeit vom Wert der Attribute `speed_x` und `speed_y` des Objekts `pong` (was wahrscheinlich die Instanz einer Klasse ist) die Wert für diese Attribute um 1 erhöht oder reduziert.

` pong.speed_x -= 1` ist die kurze Schreibweise von ` pong.speed_x = pong.speed_x - 1`.

Gruß, noisefloor
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Er bedeutet erst einmal nur, dass in Abhängigkeit des Wertes einer Variable die Variable verändert wird.
Etwas kompliziert ausgedrückt das selbe wie das:

Code: Alles auswählen

def sign(x):
    return 0 if x == 0 else -1 if x < 0 else 1

...
        if speed_increase > 400:
            speed_increase = 0
            pong.speed_x += sign(pong.speed_x)
            pong.speed_y += sign(pong.speed_y)
JonBach18
User
Beiträge: 46
Registriert: Dienstag 22. Dezember 2020, 13:32

Ich verstehe leider es immer noch nicht...
JonBach18
User
Beiträge: 46
Registriert: Dienstag 22. Dezember 2020, 13:32

Die Ballgeschwindigkeit ist doch immer über 0 und wie kann die Ballgeschwindigkeit kleiner 0 sein
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@JonBach18: Woher weißt du das? Also dass die Ballgeschwindigkeit immer größer 0 ist? Oder nimmst du das nur an?
Was man aus dem Code sehen kann: Der Wert "0" wird nicht behandelt.
Und ansonsten sind das ja 2 Geschwindigkeiten. x und y. Ich nehme an, einmal für vertikale und einmal für horizontale Geschwindigkeit. Und davon kann natürlich eine Geschwindigkeit (oder beide) negativ sein. Wenn der Ball sich von links nach rechts bewegt, wenn die x-Geschwindigkeit >0 ist, wie muss sie denn dann sein, wenn er sich von rechts nach links bewegt?
JonBach18
User
Beiträge: 46
Registriert: Dienstag 22. Dezember 2020, 13:32

Könnte Ich euch den ganzen Code schicken und Ihr könnt mir es bitte erklären wie es funktioniert wie die Ballgeschwindigkeit höher geht ?
Brauche wirklich Hilfe verzweifle langsam... :(
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Das habe ich doch gerade.
JonBach18
User
Beiträge: 46
Registriert: Dienstag 22. Dezember 2020, 13:32

Ich verstehe es immer noch nicht...
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Was ist Deine konkrete Frage? Was verstehst Du an dem Code nicht? Was erwartest Du, was der Code macht und wie weicht diese Erwartung von dem tatsächlichen Verhalten ab?
JonBach18
User
Beiträge: 46
Registriert: Dienstag 22. Dezember 2020, 13:32

Dieser Code ändern die Ballgeschwindigkeit. Normalerweise ist die Ballgeschwindigkeit x = -4 oder die Ballgeschwindigkeit y = 4
Und nach einer gewissen Zeit ändern sich die Geschwindigkeit.. Anscheinen mit dem Code den ich oben hinzugefügt habe.
Aber leider weiß ich nicht wie der funktioniert bzw. was der macht.
Antworten