Difference between revisions of "Drawing shapes"

From TRCCompSci - AQA Computer Science
Jump to: navigation, search
 
(9 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
[[Basic pygame template]]
 
[[Basic pygame template]]
  
==Rectangle==
+
=Fill the screen=
 +
Assuming you have the following code:
 +
 
 +
<syntaxhighlight lang=python>
 +
SCREENWIDTH = 500
 +
SCREENHEIGHT = 500
 +
SCREENSIZE = [SCREENWIDTH, SCREENHEIGHT]
 +
SCREEN = pygame.display.set_mode(SCREENSIZE)
 +
</syntaxhighlight>
 +
 
 +
you can fill the screen using this command:
 +
 
 +
<syntaxhighlight lang=python>
 +
SCREEN.fill(COLOR)
 +
</syntaxhighlight>
 +
 
 +
=Rectangle=
 
You can declare some variables to use for your rectangle, they require the x coordinate, the y coordinate, the width and the height:
 
You can declare some variables to use for your rectangle, they require the x coordinate, the y coordinate, the width and the height:
  
Line 21: Line 37:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
===Colour===
 
Before we can draw your rectangle to the screen we will need to define a colour to use:
 
Before we can draw your rectangle to the screen we will need to define a colour to use:
  
Line 34: Line 51:
 
COLOR = (255, 230, 200)
 
COLOR = (255, 230, 200)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
===Draw the Rectangle===
  
 
We can now draw the rectangle to the screen:
 
We can now draw the rectangle to the screen:
Line 45: Line 64:
 
<syntaxhighlight lang=python>
 
<syntaxhighlight lang=python>
 
pygame.draw.rect(SCREEN, COLOR, rect1, 1)
 
pygame.draw.rect(SCREEN, COLOR, rect1, 1)
 +
</syntaxhighlight>
 +
 +
===Update the screen===
 +
 +
Now you have drawn something new to the screen we need to update it. We can just update a single object:
 +
 +
<syntaxhighlight lang=python>
 +
pygame.display.update(rect1)
 +
</syntaxhighlight>
 +
 +
or we can update everything:
 +
 +
<syntaxhighlight lang=python>
 +
pygame.display.update()
 +
</syntaxhighlight>
 +
 +
==Full Example==
 +
<syntaxhighlight lang=python>
 +
#Import statements are to enable the code to use the functions from the library
 +
import pygame
 +
import sys
 +
import os
 +
 +
#initialize pygame & window
 +
os.environ["SDL_VIDEO_CENTERED"] = "1"
 +
pygame.init()
 +
SCREENWIDTH = 500
 +
SCREENHEIGHT = 500
 +
SCREENSIZE = [SCREENWIDTH, SCREENHEIGHT]
 +
SCREEN = pygame.display.set_mode(SCREENSIZE)
 +
 +
#caption for the game
 +
pygame.display.set_caption("My first game in pygame")
 +
 +
rect1 = pygame.Rect([100,100,20,20])
 +
 +
COLOR = (255, 0, 200)
 +
 +
pygame.draw.rect(SCREEN, COLOR, rect1, 1)
 +
 +
#game loop
 +
while True:
 +
    pygame.display.update()
 +
    for events in pygame.event.get(): #get all pygame events
 +
        if events.type == pygame.QUIT: #if event is quit then shutdown window and program
 +
            pygame.quit()
 +
            sys.exit()
 +
</syntaxhighlight>
 +
 +
=Other Shapes=
 +
==Circle==
 +
To draw a circle you need to specify the X coordinate, the Y coordinate, and the radius:
 +
 +
<syntaxhighlight lang=python>
 +
LEFT = 200
 +
TOP = 200
 +
RADIUS = 20
 +
pygame.draw.circle(SCREEN, COLOR, (LEFT,TOP), RADIUS,0)
 +
</syntaxhighlight>
 +
 +
This is just the same as writing:
 +
 +
<syntaxhighlight lang=python>
 +
pygame.draw.circle(SCREEN, COLOR, (200,200), 20, 0)
 +
</syntaxhighlight>
 +
 +
The zero will produce a filled circle, any value above 0 will be used for the thickness of the outline.
 +
 +
==Line==
 +
To draw a line you need to specify the coordinate for the starting point and the coordinate for the ending point. The thickness is the same as the other shapes drawn above:
 +
 +
<syntaxhighlight lang=python>
 +
START = [100,100]
 +
END = [200,200]
 +
THICK = 10;
 +
 +
pygame.draw.line(SCREEN, COLOR, START, END, 10)
 +
</syntaxhighlight>
 +
 +
This is the same as:
 +
 +
<syntaxhighlight lang=python>
 +
pygame.draw.line(SCREEN, COLOR, [100, 100], [200, 200], 10)
 +
</syntaxhighlight>
 +
 +
==Ellipse==
 +
<syntaxhighlight lang=python>
 +
X = 100
 +
Y = 100
 +
WIDTH = 200
 +
HEIGHT = 50
 +
 +
pygame.draw.ellipse(SCREEN, COLOR, [X, Y, WIDTH, HEIGHT])
 +
</syntaxhighlight>
 +
 +
This is the same as:
 +
 +
<syntaxhighlight lang=python>
 +
pygame.draw.ellipse(SCREEN, COLOR, [100, 100, 200, 50])
 +
</syntaxhighlight>
 +
 +
==Polygon==
 +
<syntaxhighlight lang=python>
 +
P1 = [100, 100]
 +
P2 = [100, 400]
 +
P3 = [400, 300]
 +
POINTS = [P1, P2, P3]
 +
 +
pygame.draw.polygon(SCREEN, COLOR, POINTS, 2)
 +
</syntaxhighlight>
 +
 +
this is the same as:
 +
 +
<syntaxhighlight lang=python>
 +
pygame.draw.polygon(SCREEN, COLOR, [[100, 100], [100, 400],[400, 300]], 2)
 
</syntaxhighlight>
 
</syntaxhighlight>

Latest revision as of 22:28, 21 February 2018

Make sure you are starting with a working pygame project, this will require you to install pygame and copy the code from the page below to make a start:

Basic pygame template

Fill the screen

Assuming you have the following code:

SCREENWIDTH = 500
SCREENHEIGHT = 500
SCREENSIZE = [SCREENWIDTH, SCREENHEIGHT]
SCREEN = pygame.display.set_mode(SCREENSIZE)

you can fill the screen using this command:

SCREEN.fill(COLOR)

Rectangle

You can declare some variables to use for your rectangle, they require the x coordinate, the y coordinate, the width and the height:

LEFT = 100
TOP = 100
LENGTH = 20
WIDTH = 20
RECTCOORD = [LEFT, TOP, LENGTH, WIDTH]
rect1 = pygame.Rect(RECTCOORD)

This is the same as writing:

rect1 = pygame.Rect([100,100,20,20])

Colour

Before we can draw your rectangle to the screen we will need to define a colour to use:

RED = 255
YELLOW = 230
BLUE = 200
COLOR = (RED, YELLOW, BLUE)

Again this is the same as writing just:

COLOR = (255, 230, 200)

Draw the Rectangle

We can now draw the rectangle to the screen:

pygame.draw.rect(SCREEN, COLOR, rect1, 0)

The 0 will cause the shape to be filled with colour, a value above 0 will draw the outline only and use the number for the line thickness. For example:

pygame.draw.rect(SCREEN, COLOR, rect1, 1)

Update the screen

Now you have drawn something new to the screen we need to update it. We can just update a single object:

pygame.display.update(rect1)

or we can update everything:

pygame.display.update()

Full Example

#Import statements are to enable the code to use the functions from the library
import pygame
import sys
import os

#initialize pygame & window
os.environ["SDL_VIDEO_CENTERED"] = "1"
pygame.init()
SCREENWIDTH = 500
SCREENHEIGHT = 500
SCREENSIZE = [SCREENWIDTH, SCREENHEIGHT]
SCREEN = pygame.display.set_mode(SCREENSIZE)

#caption for the game
pygame.display.set_caption("My first game in pygame")

rect1 = pygame.Rect([100,100,20,20])

COLOR = (255, 0, 200)

pygame.draw.rect(SCREEN, COLOR, rect1, 1)

#game loop
while True:
    pygame.display.update()
    for events in pygame.event.get(): #get all pygame events
        if events.type == pygame.QUIT: #if event is quit then shutdown window and program
            pygame.quit()
            sys.exit()

Other Shapes

Circle

To draw a circle you need to specify the X coordinate, the Y coordinate, and the radius:

LEFT = 200
TOP = 200
RADIUS = 20
pygame.draw.circle(SCREEN, COLOR, (LEFT,TOP), RADIUS,0)

This is just the same as writing:

pygame.draw.circle(SCREEN, COLOR, (200,200), 20, 0)

The zero will produce a filled circle, any value above 0 will be used for the thickness of the outline.

Line

To draw a line you need to specify the coordinate for the starting point and the coordinate for the ending point. The thickness is the same as the other shapes drawn above:

START = [100,100]
END = [200,200]
THICK = 10;

pygame.draw.line(SCREEN, COLOR, START, END, 10)

This is the same as:

pygame.draw.line(SCREEN, COLOR, [100, 100], [200, 200], 10)

Ellipse

X = 100
Y = 100
WIDTH = 200
HEIGHT = 50

pygame.draw.ellipse(SCREEN, COLOR, [X, Y, WIDTH, HEIGHT])

This is the same as:

pygame.draw.ellipse(SCREEN, COLOR, [100, 100, 200, 50])

Polygon

P1 = [100, 100]
P2 = [100, 400]
P3 = [400, 300]
POINTS = [P1, P2, P3]

pygame.draw.polygon(SCREEN, COLOR, POINTS, 2)

this is the same as:

pygame.draw.polygon(SCREEN, COLOR, [[100, 100], [100, 400],[400, 300]], 2)