How to make games with python and pygame


or

how to make Snake Game





                                          
                                                  @DominikWro


https://slid.es/dominikwronski/snakegamepython/








Pygame

                           GPL License

                           SDL


Simple DirectMedia Layer         
development library which
provide low level access to
audio, keyboard, mouse,
joystick, and graphics hardware
via
OpenGL and Direct3D.


import pygame, sys
from pygame.locals import *

pygame.init() DISPLAYSURF = pygame.display.set_mode((400, 300)) pygame.display.set_caption('Hello World!')
while True: # main game loop for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update()

Game itself

- board


- Snake


- WASD

                          

                        - Collision detection

import random, pygame, sys
from pygame.locals import *

FPS = 15 WINDOWWIDTH = 640 WINDOWHEIGHT = 480
CELLSIZE = 20 assert WINDOWWIDTH % CELLSIZE == 0, assert WINDOWHEIGHT % CELLSIZE == 0,

CELLWIDTH = int(WINDOWWIDTH / CELLSIZE) CELLHEIGHT = int(WINDOWHEIGHT / CELLSIZE)

WHITE = (255,255,255) BLACK = (0,0,0)
RED = (255,0,0) GREEN = (0,255,0) DARKGREEN = (0,155,0) DARKGRAY = (40,40,40) BGCOLOR = BLACK UP = 'up' DOWN = 'down' LEFT = 'left' RIGHT = 'right'
HEAD = 0

def main():
    global FPSCLOCK, DISPLAYSURF, BASICFONT

pygame.init() FPSCLOCK = pygame.time.Clock() DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT)) BASICFONT = pygame.font.Font('freesansbold.ttf', 18) pygame.display.set_caption('Snake')
showStartScreen() while True: runGame() showGameOverScreen()


def runGame():
def runGame():
    
startx = random.randint(5, CELLWIDTH - 6) starty = random.randint(5, CELLHEIGHT - 6) wormCoords = [{'x': startx,'y': starty},
{'x': startx - 1, 'y': starty}, {'x': startx - 2, 'y': starty}] direction = RIGHT apple = getRandomLocation()
.
.
.
while True: 
    for event in pygame.event.get():
        if event.type == QUIT:
            terminate()
        elif event.type == KEYDOWN:
            if (event.key == K_LEFT or event.key == K_a) and direction
!= RIGHT: 
             direction = LEFT        elif (event.key == K_RIGHT or event.key == K_d) and
direction != LEFT:

direction = RIGHT
elif (event.key == K_UP or event.key == K_w) and direction != DOWN direction = UP: elif (event.key == K_DOWN or event.key == K_s) and direction != UP direction = DOWN elif event.key == K_ESCAPE: terminate()

def runGame():
if wormCoords[HEAD]['x'] == -1 or wormCoords[HEAD]['x'] ==
CELLWIDTH or wormCoords[HEAD]['y'] == -1 or wormCoords[HEAD]['y'] ==
CELLHEIGHT:
    return # game over

for wormBody in wormCoords[1:]:
    if wormBody['x'] == wormCoords[HEAD]['x'] and wormBody['y'] ==
wormCoords[HEAD]['y']:
        return # game over 

def runGame():
if direction == UP:
    newHead = {'x': wormCoords[HEAD]['x'], 'y':wormCoords[HEAD]['y'] - 1}
elif direction == DOWN:
    newHead = {'x': wormCoords[HEAD]['x'], 'y':wormCoords[HEAD]['y'] + 1}
elif direction == LEFT:
    newHead = {'x': wormCoords[HEAD]['x'] - 1, 'y':wormCoords[HEAD]['y']}
elif direction == RIGHT:
    newHead = {'x': wormCoords[HEAD]['x'] + 1, 'y':wormCoords[HEAD]['y']}
wormCoords.insert(0, newHead)
 
DISPLAYSURF.fill(BGCOLOR)
drawGrid()
drawWorm(wormCoords)
drawApple(apple)
drawScore(len(wormCoords) - 3)
pygame.display.update()
FPSCLOCK.tick(FPS) 

def showGameOverScreen():
    gameOverFont = pygame.font.Font('freesansbold.ttf', 150)
    gameSurf = gameOverFont.render('Game', True, WHITE)
    overSurf = gameOverFont.render('Over', True, WHITE)
    gameRect = gameSurf.get_rect()
    overRect = overSurf.get_rect()
    gameRect.midtop = (WINDOWWIDTH / 2, 10)

    overRect.midtop = (WINDOWWIDTH / 2, gameRect.height + 10 + 25)

    DISPLAYSURF.blit(gameSurf, gameRect)
    DISPLAYSURF.blit(overSurf, overRect)
drawPressKeyMsg()
pygame.display.update()
    pygame.time.wait(500)
    checkForKeyPress() # clear out any key presses in the event queue
    while True:
        if checkForKeyPress():
            pygame.event.get() # clear event queue
            return 



SnakeGamePython

By Dominik Wronski

SnakeGamePython

How to make Snake using python and pygame. >>>For wroc.py 5 Nov '13<<<

  • 1,721