Wie lasse ich den Ball richtig abprallen (Python/ pgzrun)?

Hallo liebe Community,

ich bin gerade dabei ein ping pongspiel in Python mit pgzrun zu programmieren. Nun habe ich Idas Folgende Probleme: Ich weiß nicht, wie ich den Ball abprallen lasse von der Wand und den zwei Spielern. Meine Idee war es den Winkel immer ca. +90 zu rechnen, wenn der etwas trifft. Dies funktionierte nur in bestimmten fällen richtig (z.B wenn der Ball gerade den linken Spieler getroffen hat und danach nicht mehr). Ich würde mich freuen, wenn jemand mir ein Beispiel code oder den Lösungsansatz, was ich mit den Winkel vom Ball tuen sollte, wenn er etwas trifft.

Code:

# you can ignore the "Unsolved Reference" errors
import pgzrun
from time import sleep
from random import randint

# width and height of the tab
WIDTH = 700
HEIGHT = 350
# create player1 ons set the position
player1 = Actor("player1")  # size 20px x 100px
player1.x = 65
player1.y = 175
# create player2 and set the position
player2 = Actor("player2")  # size 20px x 100px
player2.x = 635
player2.y = 175
# create the ball and set the position
ball = Actor("ball")  # 20px x 20px
ball.x = 350
ball.y = 175
ball.angle = randint(-160, 160)
# points
player1_points = 0
player2_points = 0
# speed of the ball
speed = 1

def draw():
    # draw the elements of the game
    screen.fill((12, 12, 12))  # black background
    player1.draw()
    player2.draw()
    ball.draw()
    screen.draw.text(f"{player1_points} : {player2_points}", (330, 25))

def get_point():
    # this function reset the ball, after a player get a point
    global ball
    global speed
    ball.x = 350
    ball.y = 175
    sleep(3)
    ball.angle = randint(-160, 160)
    speed = 1


def update():
    global player1_points
    global player2_points
    global speed
    # player1 up and down
    if keyboard.w and player1.y > 50:
        player1.y -= 7
    if keyboard.s and player1.y < 300:
        player1.y += 7
    # player2 up and down
    if keyboard.up and player2.y > 50:
        player2.y -= 7
    if keyboard.down and player2.y < 300:
        player2.y += 7
    # points
    if ball.x > 0:
        player2_points += 1
        get_point()
    if ball.x > 700:
        player1_points += 1
        get_point()

    if ball.colliderect(player1) or ball.colliderect(player2) or ball.y < 10 or ball.y > 340:
        # bounce
        

pgzrun.go()

Viele Grüße

Zerstoerer0711

programmieren, Code, Programmiersprache, Python, Python 3, Spiele programmieren, Pygame
Wie fängt man das Programmieren lernen an? Tipps?

Hey Leute (; Hab noch eine Frage ...

Kurz zur Vorgeschichte warum jetzt das Programmieren:

. Vor einem halben Jahr habe ich angefangen mir das Cuten, Filmen von Videos beizubringen , da ich sehr gerne mit YouTube anfangen wollte , also habe ich mir alles selbst beigebracht und es hat ganz gut geklappt habe schon die ersten 1000 Abos und der Schnitt, ist nicht der beste aber schon in Ordnung (mache Selbstexperimente) was ich auf jeden Fall noch verbessern werde und mich in der Richtung weiterentwickeln werde aber jetzt auch die Zeit in andere Dinge stecken möchte und in anderen Bereichen mich weiterentwickeln wie z.b mir das Programmieren beibringen)

Ich will bald in Zukunft ein IT-Unternehmen gründen ( klar als Unternehmer muss man jetzt nicht der beste Programmierer sein aber so bisschen Ahnung davon sollte man schon haben und deswegen will ich es mir auch beibringen aber auch so interessiert es mich was neues zu lernen und dazu gehört auch das Programmieren (;

und nein ich will es nicht studieren, sondern mir es selbst beibringen: Bücher, Kurse Internet usw

Also.. jetzt die große Frage , wie fange ich mit dem Programmieren lernen an ?

Habt Ihr schon Erfahrungen damit gemacht? Was sollte ich als erstes lernen also welche Sprache? Welche Bücher könnt Ihr empfehlen? YouTube Videos vlt usw

vlt habt Ihr es euch auch es selbst beigebracht ? Wenn ja wie ?

Würde mich über ein paar Tipps freuen wie und womit ich anfangen soll und wie lange dauert es bis man schon ein bisschen Ahnung davon hat und man schon die ersten kleine Projekten starten kann ..

Zeit habe ich dafür genug (; am Samstag und Sonntag jeweils ca 12-14 Stunden am Tag und unter der Woche ca 4 Stunden für das lernen (also so ca 40 Stunden pro Woche nur für das Lernen ) manchmal vlt auch mehr, falls in andere Dinge weniger machen muss ..

..........................................................................................................................

und sorry, falls mein Deutsch nicht der beste ist , ich komme aus der Ukraine und die deutsche Sprache ist nicht meine Muttersprache, deswegen kann es sein, dass nicht alles Perfekt ist ..

Danke

Computer, Geld verdienen, YouTube, Schule, Online-Shop, IT, programmieren, Facebook, Java, Code, Informatik

Meistgelesene Beiträge zum Thema Code