## ~ Pygame and Python - creating a game with various features

Game set up in pygame - create main character with movement

### Game set up in Pygame + Character Creation, Movement and Coordinate detection (tracking)

First things first - you need to set up your game and get a character on the screen. The following code and presentation show you how to get started, create a character, and also track the player's movement on the scren by printing the coordinates to the screen. This will help you understand the computer's coordinate system better, and it is integral to being able to work with collision detection and other more complex concepts later.

### Code

```import pygame

# Define some colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

#Set the max speed the player can move - changing this value can increase/decrease difficulty
PLAYER_SPEED = 5

#This function draws the smaller user-controllable stick figure on the screen
def draw_stick_figure(screen, x, y):
pygame.draw.ellipse(screen, BLACK, [1 + x, y, 10, 10], 0)
print(x,y)

# Legs
#Right leg (colour, length of leg....)
pygame.draw.line(screen, BLACK, [5 + x, 17 + y], [10 + x, 27 + y], 2)
#Left Leg
pygame.draw.line(screen, BLACK, [5 + x, 17 + y], [x, 27 + y], 2)

# Body
pygame.draw.line(screen, RED, [5 + x, 17 + y], [5 + x, 7 + y], 2)

# Arms
pygame.draw.line(screen, RED, [5 + x, 7 + y], [9 + x, 17 + y], 2)
pygame.draw.line(screen, RED, [5 + x, 7 + y], [1 + x, 17 + y], 2)

#This function ensures that the number entered is between the range of the min and max values (inclusive).
#If the number is outside of this range, we return the closest allowed value. I.e. if the max was 10 and the number
#entered was 12, 10 would be returned as this is the maximum value allowed
def keep_in_range(number, min_no, max_no):
if (number < min_no):
return min_no
elif (number > max_no):
return max_no
else:
return number
# Setup
pygame.init()

# Set the width and height of the screen [width,height]

screen_size = [700, 500]
screen = pygame.display.set_mode(screen_size)

pygame.display.set_caption("My Game")

# Loop until the user clicks the close button.
done = False

# Used to manage how fast the screen updates
clock = pygame.time.Clock()

# Hide the mouse cursor
pygame.mouse.set_visible(0)

# Speed in pixels per frame
x_speed = 0
y_speed = 0

# Current position
x_coord = 300
y_coord = 1

# -------- Main Program Loop -----------
while not done:
# --- Event Processing
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# User pressed down on a key

elif event.type == pygame.KEYDOWN:
# Figure out if it was an arrow key. If so
if event.key == pygame.K_LEFT:
x_speed = -PLAYER_SPEED
elif event.key == pygame.K_RIGHT:
x_speed = PLAYER_SPEED
elif event.key == pygame.K_UP:
y_speed = -PLAYER_SPEED
elif event.key == pygame.K_DOWN:
y_speed = PLAYER_SPEED

# User let up on a key
elif event.type == pygame.KEYUP:
# If it is an arrow key, reset vector back to zero
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_speed = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_speed = 0

# --- Game Logic

# Move the object according to the speed vector.
x_coord = x_coord + x_speed
y_coord = y_coord + y_speed

if (x_coord < 0):
x_coord = 0

if (y_coord < 0):
y_coord = 0

#Adjust the x and y co-ordinates to ensure that the stick figure is kept on the screen and can't
#travel off of it
x_coord = keep_in_range(x_coord, 0, screen_size - 10) #We adjust the upper limit of our allowed range to match the stick figures width
y_coord = keep_in_range(y_coord, 0, screen_size - 27) #We adjust the upper limit of our allowed range to match the stick figures height
# --- Drawing Code

# First, clear the screen to WHITE. Don't put other drawing commands
# above this, or they will be erased with this command.
screen.fill(WHITE)

draw_stick_figure(screen, x_coord, y_coord) #draw the stick figure on the screen

# Go ahead and update the screen with what we've drawn.
pygame.display.flip()

# Limit frames per second
clock.tick(60)

# Close the window and quit.
pygame.quit()

```