import pygame import time # setup PyGame pygame.init() # create a window window = pygame.display.set_mode([800, 600]) # we keep track of the ball position and speed in x and y ball_x = 400 ball_y = 300 ball_xspeed = .1 ball_yspeed = .1 ball_radius = 10 # we only need y position/speed for the paddles because the x location is fixed human_paddle_y = 200 human_paddle_yspeed = 0 ai_paddle_y = 200 ai_paddle_yspeed = 0 # paddle properties paddle_gap = 5 paddle_height = 60 paddle_width = 10 # keep going until we get a quit event running = True while running: # check for events for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: human_paddle_yspeed = -.2 elif event.key == pygame.K_DOWN: human_paddle_yspeed = .2 elif event.type == pygame.KEYUP: if event.key == pygame.K_UP or event.key == pygame.K_DOWN: human_paddle_yspeed = 0 # fill the window with black window.fill((0, 0, 0)) # draw ball pygame.draw.circle(window, (7, 114, 245), (ball_x, ball_y), ball_radius) # draw human paddle pygame.draw.rect(window, (200, 200, 25), pygame.Rect(paddle_gap, human_paddle_y, paddle_width, paddle_height)) # draw ai paddle pygame.draw.rect(window, (245, 154, 7), pygame.Rect((800 - paddle_gap - paddle_width), ai_paddle_y, paddle_width, paddle_height)) # function for moving the ai paddle if ball_y < ai_paddle_y + paddle_height / 2: ai_paddle_yspeed = -.12 elif ball_y > ai_paddle_y + paddle_height / 2: ai_paddle_yspeed = .12 else: ai_paddle_yspeed = 0 # update positions ball_x = ball_x + ball_xspeed ball_y = ball_y + ball_yspeed human_paddle_y += human_paddle_yspeed ai_paddle_y += ai_paddle_yspeed # if the ball has hit the top wall if ball_y <= ball_radius: ball_yspeed = abs(ball_yspeed) # if the ball has hit bottom wall if ball_y + ball_radius >= 600: ball_yspeed = -abs(ball_yspeed) # if the ball has hit the left paddle if (ball_x - ball_radius) < paddle_gap + paddle_width: if ball_y > human_paddle_y and (ball_y + ball_radius) < (human_paddle_y + paddle_height): # move ball to the right, a little faster ball_xspeed = abs(ball_xspeed) * 1.05 ball_yspeed = ball_yspeed * 1.05 # if the ball has hit the right paddle if (ball_x + ball_radius) > (800 - paddle_gap - paddle_width): if ball_y > ai_paddle_y and (ball_y + ball_radius) < (ai_paddle_y + paddle_height): # move ball back to the left, a little faster ball_xspeed = -abs(ball_xspeed) * 1.05 ball_yspeed = ball_yspeed * 1.05 # if it goes off the edge, reset things if (ball_x <= 0 or ball_x >= 800): ball_x = 400 ball_y = 300 ball_xspeed = .1 ball_yspeed = .1 for color in range(255): time.sleep(0.0005) window.fill((color, color, color)) pygame.display.flip() for color in range(255, -1, -1): time.sleep(0.0005) window.fill((color, color, color)) pygame.display.flip() # flip the window pygame.display.flip() pygame.quit()