Snake Game Py
Snake Game Py
Snake Game Py
DEVELOPMENT OF
SNAKE GAME IN
PYTHON
TABLE OF CONTENTS:
PURPOSE………
WHAT IS PYTHON?...............
WHY PYTHON?...............
OUTPUT…………….
CONCLUSION…………….
BIBLIOGRAPHY……………..
PURPOSE
The motive of this project is to just provide a basic idea of how we can develop
a simple game as like ‘Snake Xenia’ in Nokia using the codes of Python
Programming Language.
For the ones who wish to make a career in this field, this small project can be
regarded as their first step. “A small step for man is a giant leap for mankind.”
These words by Neil Armstrong can be used as a motivation for young
programmers and game developers to create a different sort of thing which is
useful as well as entertaining to the masses.
WHAT IS PYHTON?
programming language. Guido Van Rossum created Pyhton in the late 90’s. It
wasn’t named after a dangerous snake. Rossum was a fan of a comedy series
from late seventies. The name “Python” was adopted from the same series
“Monty Python’s Flying Circus”. It has the largest community for learners and
also available.
WHY PYHTON?
1) General-purpose language
2) Wide range of applications
3) Web development-django Bottle
4) Mathematical computations(numpy and simpy)
5) Graphical user interface (Panda 3D)
6) Length of the code is relatively short
7) Fun to work with
ABOUT THE GAME AND HOW IT WORKS
In the game of Snake, the player uses the arrow keys to move a "snake"
around the board. As the snake finds food, it eats the food, and thereby grows
larger. The game ends when the snake either moves off the screen or moves
into itself. The goal is to make the snake as large as possible before that
happens.
The player is represented as snake, which grows if it eats an apple. The goal of
the game is to eat as many apples as possible without colliding into you. This
is very easy in the early phase of the game but is increasingly more difficult as
the length of the snake grows.
1. PYGAME
2. MATH
3. RANDOM
4. TKINTER
5. DEF
6. LAMBDA FUNCTION
1. PASS SATEMENT
2. RETURN
3. FOR/WHILE LOOP
4. IF/ELIF/ELSE SATEMENT
CODING FOR THE SNAKE GAME
import math
import random
import pygame
import tkinter as tk
from tkinter import messagebox
class cube(object):
rows = 20
w = 500
def __init__(self, start, dirnx=1, dirny=0,color=(255,0,0)):
self.pos = start
self.dirnx = 1
self.dirny = 0
self.color = color
def move(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
keys = pygame.key.get_pressed()
elif keys[pygame.K_RIGHT]:
self.dirnx = 1
self.dirny = 0
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
elif keys[pygame.K_UP]:
self.dirnx = 0
self.dirny = -1
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
elif keys[pygame.K_DOWN]:
self.dirnx = 0
self.dirny = 1
self.turns[self.head.pos[:]] = [self.dirnx, self.dirny]
for i, c in enumerate(self.body):
p=c.pos[:]
if p in self.turns:
turn = self.turns[p]
c.move(turn[0], turn[1])
if i == len(self.body)-1:
self.turns.pop(p)
else:
if c.dirnx == -1 and c.pos[0] <= 0: c.pos = (c.rows-1, c.pos[1])
elif c.dirnx == 1 and c.pos[0] >= c.rows-1: c.pos = (0, c.pos[1])
elif c.dirny == 1 and c.pos[1] >= c.rows-1: c.pos = (c.pos[0], 0)
elif c.dirny == -1 and c.pos[1] <= 0: c.pos = (c.pos[0], c.rows-1)
else: c.move(c.dirnx, c.dirny)
def addCube(self):
tail = self.body[-1]
dx, dy = tail.dirnx, tail.dirny
if dx == 1 and dy == 0:
self.body.append(cube((tail.pos[0]-1, tail.pos[1])))
elif dx == -1 and dy == 0:
self.body.append(cube((tail.pos[0]+1, tail.pos[1])))
elif dx == 0 and dy == 1:
self.body.append(cube((tail.pos[0], tail.pos[1]-1)))
elif dx == 0 and dy == -1:
self.body.append(cube((tail.pos[0], tail.pos[1]+1)))
self.body[-1].dirnx = dx
self.body[-1].dirny = dy
x=0
y=0
for l in range (rows):
x = x + sizeBtwn
y = y + sizeBtwn
def redrawWindow(surface):
global rows, width, s, snack
surface.fill((0,0,0))
s.draw(surface)
snack.draw(surface)
drawGrid(width, rows,surface)
pygame.display.update()
positions = item.body
while True:
x = random.randrange(rows)
y = random.randrange(rows)
if len(list(filter(lambda z:z.pos == (x,y), positions)))> 0:
continue
else:
break
return (x,y)
def main():
global width, rows, s, snack
width = 500
rows = 20
win = pygame.display.set_mode((width, width))
s = snake((255,0,0), (10,10))
snack = cube(randomSnack(rows, s), color=(0,255,0))
flag = True
clock = pygame.time.Clock()
while flag:
pygame.time.delay(50)
clock.tick(10)
s.move()
if s.body[0].pos == snack.pos:
s.addCube()
snack = cube(randomSnack(rows, s), color=(0,255,0))
for x in range(len(s.body)):
if s.body[x].pos in list(map(lambda z:z.pos, s.body[x+1:])):
print('Score: ', len(s.body))
message_box('You Lost!', 'Play again...')
s.reset((10,10))
break
redrawWindow(win)
pass
main()
OUTPUT
CONCLUSION
We learned how to create the snake game in Python along with concepts such
as collision detection, image loading and event handling. Many things could be
added to this little toy game but this serves as a very simple example.
The good thing about this game and our solution is that it is very simple. The
approach is pretty simple and easy to understand even for beginners. This
game could run on many platforms.
There can be many more features which can be added to this game to make it
more interactive and interesting.
BIBLIOGRAPHY
Books used:
1. Sumita Arora Computer text book for class XI
2. Sumita Arora Computer text book for class XII
Websites:
1. https://www.codementor.io/arsya/build-snake-game-using-curses-
du107zpmw
2. https://pythonspot.com/snake-with-pygame/
3. http://programarcadegames.com/python_examples/f.php?file=snake.p
y