“A.I.” controlling left paddle makes it teleport along the y axis. (Python)

Is there any way to make the paddle on the left not jump? My “A.I.” on the left makes the y coordinate of the left paddle change at every horizontal impact, so it makes the paddle jump. Is there any way to make the paddle move towards the point, and not jump to it? Here it is:

 import turtle import time import random  sc = turtle.Screen() sc.bgcolor("black") sc.reset()  sc.screensize(1000,560) sc.tracer(0)  # Creation des mannettes  mannette1 = turtle.Turtle() mannette1.pu() mannette1.shape("square") mannette1.shapesize(10,1) mannette1.color("white") mannette1.setx(940)  mannette2 = turtle.Turtle() mannette2.pu() mannette2.shape("square") mannette2.shapesize(10,1) mannette2.color("white") mannette2.setx(-947)  # Creation de la balle  balle = turtle.Turtle() balle.pu() balle.shape("circle") balle.color("white")  # Fonctions et definitions  movx = 2 movy = 0  # Jeu  while True:      sc.update()      # Ordinateur #1      rand1 = random.randrange(-14,14)     rand3 = random.uniform(-10,10)     mannette1_velocity = rand1/80      mannette1.sety(balle.ycor())      if mannette1.ycor() > 405:         mannette1.sety(404)      if mannette1.ycor() < -395:         mannette1.sety(-394)      # Ordinateur #2      rand2 = random.randrange(-14,14)     mannette2_velocity = rand2/80      dist = (balle.xcor()+940)/rand3      mannette2.sety(balle.ycor()-dist)      if mannette2.ycor() > 405:         mannette2.sety(404)      if mannette2.ycor() < -395:         mannette2.sety(-394)      # Mouvement de la balle      yvel = balle.ycor()+movy     xvel = balle.xcor()+movx     balle.sety(yvel)     balle.setx(xvel)      # Rebondissement de la balle: Plafond et Plancher      if balle.ycor() > 495:         balle.sety(495)         movy = movy*-1      if balle.ycor() < -490:         balle.sety(-490)         movy = movy*-1      # Mannette out of bounds verification      if mannette1.xcor() != 940:         mannette1.setx(940)     if mannette2.xcor() != -947:         mannette2.setx(-947)      # Courbure de la balle: Mannette1      if mannette1_velocity != 0:         if balle.xcor() > 920 and balle.xcor() < 935 and balle.ycor() < mannette1.ycor()+110 and balle.ycor() > mannette1.ycor()-110:             balle.setx(920)             movx = movx * -1             rand3 = random.uniform(-10,10)             # Pour que la balle va dans la direction du "velocity" de la mannette.              if mannette1_velocity < 0:                 movy = -1             if mannette1_velocity > 0:                 movy = 1              while not (balle.xcor() < -927 and balle.xcor() > -935 and balle.ycor() < mannette2.ycor()+1100 and balle.ycor() > mannette2.ycor()-1100):                 time.sleep(0.00000005)                 sc.update()                  # Ordinateur                  dist = (balle.xcor()+940)/rand3                  mannette2.sety(balle.ycor()-dist)                  if mannette2.ycor() > 405:                     mannette2.sety(404)                  if mannette2.ycor() < -395:                     mannette2.sety(-394)                  if mannette1.ycor() < 405 and mannette2.ycor() > -395:                     mannette1.sety(balle.ycor())                  if mannette1.ycor() > 405:                     mannette1.sety(404)                  if mannette1.ycor() < -395:                     mannette1.sety(-394)                  # Mouvement de la balle                  movy = movy-mannette1_velocity/100                  yvel = balle.ycor()+movy                 xvel = balle.xcor()+movx                 balle.sety(yvel)                 balle.setx(xvel)                  # Rebondissement de la balle: Plafond et Plancher                  if balle.ycor() > 495:                     balle.sety(495)                     movy = movy*-1                  if balle.ycor() < -490:                     balle.sety(-490)                     movy = movy*-1                  # Pour que les mannettes restes dans leurs axe                    if mannette1.xcor() != 940:                     mannette1.setx(940)                 if mannette2.xcor() != -947:                     mannette2.setx(-947)                  # Mannette out of bounds check                  if mannette1.ycor() > 405:                     mannette1.sety(404)                  if mannette1.ycor() < -395:                     mannette1.sety(-394)                  if mannette2.ycor() > 405:                     mannette2.sety(404)                  if mannette2.ycor() < -395:                     mannette2.sety(-394)                  # Rebondissement de la balle: Ouest et Est                  if balle.xcor() > 999 or balle.xcor() < -999:                     mannette1.sety(0)                     break      # Courbure de la balle: Mannette2      if mannette2_velocity != 0:         if balle.xcor() < -927 and balle.xcor() > -935 and balle.ycor() < mannette2.ycor()+1100 and balle.ycor() > mannette2.ycor()-1100:             balle.setx(-927)             movx = movx * -1             rand3 = random.uniform(-10,10)             # Pour que la balle va dans la direction du "velocity" de la mannette.              if mannette2_velocity < 0:                 movy = -1             if mannette2_velocity > 0:                 movy = 1              while not (balle.xcor() > 920 and balle.xcor() < 935 and balle.ycor() < mannette1.ycor()+110 and balle.ycor() > mannette1.ycor()-110):                 time.sleep(0.00000005)                 sc.update()                  # Ordinateur                  dist = (balle.xcor()+940)/rand3                  mannette2.sety(balle.ycor()-dist)                  if mannette2.ycor() > 405:                     mannette2.sety(404)                  if mannette2.ycor() < -395:                     mannette2.sety(-394)                  if mannette1.ycor() < 405 and mannette2.ycor() > -395:                     mannette1.sety(balle.ycor())                  if mannette1.ycor() > 405:                     mannette1.sety(404)                  if mannette1.ycor() < -395:                     mannette1.sety(-394)                  # Mouvement de la balle                  movy = movy-mannette2_velocity/100                  yvel = balle.ycor()+movy                 xvel = balle.xcor()+movx                 balle.sety(yvel)                 balle.setx(xvel)                  # Rebondissement de la balle: Plafond et Plancher                  if balle.ycor() > 495:                     balle.sety(495)                     movy = movy*-1                  if balle.ycor() < -490:                     balle.sety(-490)                     movy = movy*-1                  # Pour que les mannettes restes dans leurs axe                    if mannette1.xcor() != 940:                     mannette1.setx(940)                 if mannette2.xcor() != -947:                     mannette2.setx(-947)                  # Mannette out of bounds check                  if mannette1.ycor() > 405:                     mannette1.sety(404)                  if mannette1.ycor() < -395:                     mannette1.sety(-394)                  if mannette2.ycor() > 405:                     mannette2.sety(404)                  if mannette2.ycor() < -395:                     mannette2.sety(-394)                  # Rebondissement de la balle: Ouest et Est                  if balle.xcor() > 999 or balle.xcor() < -999:                     mannette1.sety(0)                     break  ```  

Build an A.I. Coding Game

I have to build a complete project for my study in “A.I. Coding Game”, where participants are asked to build bots with AI algorithms to compete on the game. – something like Halite or any AI coding games. But I have no idea where to start! Can you help me with any resources, steps, Community interested in such an idea. I really appreciate any advice..