Seite 1 von 1

Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 11:37
von JonBach18
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!!!

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 11:54
von noisefloor
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

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 11:55
von Sirius3
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)

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:15
von JonBach18
Ich verstehe leider es immer noch nicht...

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:16
von JonBach18
Die Ballgeschwindigkeit ist doch immer über 0 und wie kann die Ballgeschwindigkeit kleiner 0 sein

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:22
von sparrow
@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?

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:26
von JonBach18
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... :(

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:32
von sparrow
Das habe ich doch gerade.

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:34
von JonBach18
Ich verstehe es immer noch nicht...

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:37
von Sirius3
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?

Re: Frage zum Code

Verfasst: Dienstag 19. Januar 2021, 12:45
von JonBach18
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.