Open In App

Making an object jump with gravity using arcade module in Python3

Last Updated : 11 Oct, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

The Arcade library is a modern Python Module used widely for developing 2D video games with compelling graphics and sound. Arcade is an object-oriented library. It can be installed like any other Python Package. Now, it’s up to the necessity of the developer, what type of game, graphics, and sound he/she wants to use using this toolkit. So, in this article, we will learn how to make an object jump with gravity using the Arcade library in Python. And for understanding that concept, let’s take an example of a robust ball.

Following are the steps:

Step 1: Import arcade module .

import arcade

Step 2: Define parameters of the output screen.

# Size of the screen
WIDTH = 600
HEIGHT = 600
TITLE = "Robust Ball "

Step 3: Define the radius of the ball.

# Size of the ball.
BALL_RADIUS = 50

Step 4: Define the value of gravitational constant.

#  gravity 
GRAVITATIONAL_CONSTANT = 0.3

Step 5: Define a bouncing velocity for the ball.

# Percent of velocity maintained on a bounce.
BOUNCE = 0.9

Step 6: Define a function to draw a ball using arcade.draw_circle_filled() .

Python3




def draw(_delta_time):
  
    # Start the render.
    arcade.start_render()
  
    # Draw ball
    arcade.draw_circle_filled(draw.x, draw.y, BALL_RADIUS,
                              arcade.color.RED)
  
    draw.x += draw.delta_x
    draw.y += draw.delta_y
    draw.delta_y -= GRAVITATIONAL_CONSTANT


Step 7: Define function to Figure out if we hit the left or right edge so that we can reverse.

Python3




# Figure out if we hit the left or 
# right edge and need to reverse.
if draw.x < BALL_RADIUS and draw.delta_x < 0:
     draw.delta_x *= -BOUNCE
  elif draw.x > WIDTH - BALL_RADIUS and draw.delta_x > 0:
    draw.delta_x *= -BOUNCE


Step 8: Also, Define function to Figure out if we hit the bottom so that we can reverse.

Python3




# See if we hit the bottom
if draw.y < BALL_RADIUS and draw.delta_y < 0:
  
        if draw.delta_y * -1 > GRAVITATIONAL_CONSTANT * 15:
            draw.delta_y *= -BOUNCE
        else:
            draw.delta_y *= -BOUNCE / 2


Step 9: Use the above defined function and provide input to them.

Python3




draw.x = BALL_RADIUS
draw.y = HEIGHT
draw.delta_x = 3
draw.delta_y = 3


Step 10: Last and foremost step is to define the main function that contains arcade function to assign output window a proper width, height and title.

Python3




def main():
    
    # Open up our window
    arcade.open_window(WIDTH, HEIGHT, TITLE)
    arcade.set_background_color(arcade.color.GREEN)
  
    # Tell the computer to call the draw 
    # command at the specified interval.
    arcade.schedule(draw, 1 / 80)
  
    # Run the program
    arcade.run()
  
    # When done running the program, close the window.
    arcade.close_window()
  
main()


Complete Code for better Understanding:

Python3




import arcade
  
  
# Size of the screen
WIDTH = 600
HEIGHT = 600
TITLE = "Robust Ball "
  
# Size of the circle.
BALL_RADIUS = 50
  
# How strong the gravity is.
GRAVITATIONAL_CONSTANT = 0.3
  
# Percent of velocity maintained on a bounce.
BOUNCE = 0.9
  
  
def draw(_delta_time):
  
    # Start the render.
    arcade.start_render()
  
    # Draw ball
    arcade.draw_circle_filled(draw.x, draw.y, BALL_RADIUS,
                              arcade.color.RED)
    draw.x += draw.delta_x
    draw.y += draw.delta_y
  
    draw.delta_y -= GRAVITATIONAL_CONSTANT
  
    # Figure out if we hit the left or 
    # right edge and need to reverse.
    if draw.x < BALL_RADIUS and draw.delta_x < 0:
        draw.delta_x *= -BOUNCE
    elif draw.x > WIDTH - BALL_RADIUS and draw.delta_x > 0:
        draw.delta_x *= -BOUNCE
  
    # See if we hit the bottom
    if draw.y < BALL_RADIUS and draw.delta_y < 0:
  
        if draw.delta_y * -1 > GRAVITATIONAL_CONSTANT * 15:
            draw.delta_y *= -BOUNCE
        else:
            draw.delta_y *= -BOUNCE / 2
  
  
draw.x = BALL_RADIUS
draw.y = HEIGHT
draw.delta_x = 3
draw.delta_y = 3
  
  
def main():
    # Open up our window
    arcade.open_window(WIDTH, HEIGHT, TITLE)
    arcade.set_background_color(arcade.color.GREEN)
  
    # Tell the computer to call the draw command 
    # at the specified interval.
    arcade.schedule(draw, 1 / 80)
  
    # Run the program
    arcade.run()
  
    # When done running the program, close the window.
    arcade.close_window()
  
  
main()


Output:-



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads