Programs 11 and 12
Programs 11 and 12
we will draw an elliptical orbit at its center in Python using the Pygame module. We will draw two
more circles on an elliptical orbit and move them in orbit. This is similar to the earth revolving
around the sun but the only difference is that here 2 circles(planets) move in the same orbit
ensuring that they will not collapse. The circle at the center can be considered as the sun and the
circles in orbit can be considered as earth and artificial earth.
To install Pygame we will use pip. Open the terminal and type the following command:
Python3
import pygame
import math
pygame.init()
Step 2: Define the width and height of the window and create a game window.
Python3
width = 1000
height = 600
screen = pygame.display.set_mode(screen_res)
Step 3: Define colors in RGB format. We will use these colors in our game.
Python3
# define colors in RGB format
red = (255, 0, 0)
Step 4: Define the center of the screen, the radius of the ellipse, and the clock. This center will be
used to draw a circle at the center which represents Sun. And the radius of the ellipse will be used
to calculate the position of the planet with time.
Python3
# centers of screen
X_center = width//2
Y_center = height//2
# radius of ellipse
X_ellipse = 400
Y_ellipse = 225
clock = pygame.time.Clock()
Firstly we create a loop to rotate our planet. We need to update the position of our planets
with time, so for this, we need a loop to cover 360 degrees.
Then we check if a user wants to exit the game or not. Also, we fill black color on the
screen.
Now we find the coordinates of our planets, for this we will use the major and minor
radius of the ellipse.
Draw a circle or sun at the center of the screen, and draw an ellipse on the screen.
Now we need to draw our planets for that we will use previously calculated x and y
coordinates to draw planets.
Python3
while True:
# event loop
if event.type == pygame.QUIT:
exit()
screen.fill([0,0,0])
# x_planet is x coordinate
x_planet_1 = int(math.cos
(degree * 2 * math.pi/360)
* X_ellipse) + X_center
# y_planet is y coordinate
y_planet_1 = int(math.sin(degree * 2 *
math.pi/360) *
Y_ellipse) + Y_center
degree_2 = degree+180
if degree>180:
degree_2 = degree-180
# x_planet is x coordinate
# y_planet is y coordinate
pygame.draw.circle(surface=screen,color=red,center=[X_center,Y_center],
radius=60)
# draw ellipse
pygame.draw.ellipse(surface=screen,
color=green,
rect=[100,75,800,450],
width=1)
pygame.draw.circle(surface=screen,
color=blue,
center=[x_planet_1,y_planet_1],
radius=40)
pygame.draw.circle(surface=screen,
color=cyan,
center=[x_planet_2,y_planet_2],
radius=40)
clock.tick(5)
# update screen
pygame.display.flip()
Python3
import pygame
import math
pygame.init()
width = 1000
height = 600
red = (255, 0, 0)
# centers of screen
X_center = width//2
Y_center = height//2
# radius of ellipse
X_ellipse = 400
Y_ellipse = 225
clock = pygame.time.Clock()
while True:
# event loop
if event.type == pygame.QUIT:
exit()
# fill black color on screen
screen.fill([0, 0, 0])
# x_planet is x coordinate
* X_ellipse) + X_center
# y_planet is y coordinate
* Y_ellipse) + Y_center
degree_2 = degree+180
degree_2 = degree-180
# x_planet is x coordinate
* X_ellipse) + X_center
# y_planet is y coordinate
* Y_ellipse) + Y_center
# draw circle in center of screen
# draw ellipse
pygame.draw.ellipse(surface=screen, color=green,
clock.tick(5)
# update screen
pygame.display.flip()
Output:
GIF OUTPUT
Pygame is a set of Python modules designed for writing video games. It adds functionality on top of
the excellent SDL library. This allows you to create fully featured games and multimedia programs in
the Python language. It is free and runs on nearly every platform and operating system. To install
Pygame we will use pip.
Required Module
Python3
import pygame
# initialize pygame
pygame.init()
Step 2: Define the width and height of the window and create a game window.
Python3
width = 1000
height = 600
screen = pygame.display.set_mode(screen_res)
Step 3: Define colors in RGB format. We will use these colors in our game.
Python3
# define colors
red = (255, 0, 0)
black = (0, 0, 0)
Step 4: Define the ball and the speed by which it will move
This ball object will be used to move the ball in our game, and it will be used to get new coordinates
of the ball and we will use these coordinates to draw the ball. Speed has 2 things, speed in the x
direction and speed in the y direction. when speed in the x direction and speed in the y direction is
equal in magnitude, then the ball will move in a diagonal way. Initially center of the ball is (100,100)
and the speed is (1,1). Now after 1 unit of time, the center of the ball will be (101,101) and again
after 1 unit of time, the center of the ball will be (102,102). In this way, our ball will move.
Python3
# define ball
ball_obj = pygame.draw.circle(
speed = [1, 1]
4. Then we will move the ball with a specified speed, and update our ball(Rect) object.
5. If our ball goes out of the screen in the horizontal direction, then we will change the
direction of motion on the X-axis.
6. And If our ball goes out of the screen in the vertical direction, then we will change the
direction of motion on the Y-axis.
7. Finally, we will draw our ball with the center as the center of the ball(Rect) object.
Python3
# game loop
while True:
# event loop
if event.type == pygame.QUIT:
exit()
screen.fill(black)
ball_obj = ball_obj.move(speed)
speed[0] = -speed[0]
speed[1] = -speed[1]
# draw ball at new centers that are obtained after moving ball_obj
pygame.draw.circle(surface=screen, color=red,
center=ball_obj.center, radius=40)
# update screen
pygame.display.flip()
Complete Code
Python3
import pygame
# initialize pygame
pygame.init()
width = 1000
height = 600
screen = pygame.display.set_mode(screen_res)
# define colors
red = (255, 0, 0)
black = (0, 0, 0)
# define ball
ball_obj = pygame.draw.circle(
speed = [1, 1]
# game loop
while True:
# event loop
if event.type == pygame.QUIT:
exit()
screen.fill(black)
ball_obj = ball_obj.move(speed)
speed[1] = -speed[1]
# draw ball at new centers that are obtained after moving ball_obj
pygame.draw.circle(surface=screen, color=red,
center=ball_obj.center, radius=40)
# update screen
pygame.display.flip()
Output:
Game Output