snake
STOP PLAYING SNAKE AND GET BACK TO WORK
snake python
import pygame
import numpy
import random
import math
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((377, 377))
grid = numpy.zeros((15, 15), dtype="int8")
for i in range(4):
grid[7][2+i] = 2
apple_pos = [7, 11]
grid[apple_pos[0]][apple_pos[1]] = 5
snake = [[7, 2], [7, 5]]
d = [2, 2]
direction_list = []
keys = [pygame.K_UP, pygame.K_RIGHT, pygame.K_DOWN, pygame.K_LEFT]
colors = [(0, 150, 150), (0, 255, 0), (255, 0, 0)]
frames = 0
moving = False
while True:
frames += 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
if event.type == pygame.KEYDOWN:
for i in range(len(keys)):
if event.key == keys[i]:
moving = True
direction_list.append(i+1)
if moving and frames >= 10:
frames = 0
if len(direction_list) > 0:
d[1] = direction_list[0]
direction_list.pop(0)
d[0] = grid[snake[0][0]][snake[0][1]]
last_pos = [snake[0][:], snake[1][:]]
for i in range(2):
snake[i][round((d[i] % 2-1)*-1)] += round(5/24*d[i]**4 - 25/12*d[i]**3 + 151/24*d[i]**2 - 65/12*d[i])
grid[last_pos[i][0]][last_pos[i][1]] = d[i] * i
if i:
for n in range(2):
if snake[i][n] < 0 or snake[i][n] > 14:
quit()
if 5 > grid[snake[i][0]][snake[i][1]] > 0:
quit()
if snake[i] == apple_pos:
grid[last_pos[0][0]][last_pos[0][1]] = d[0]
snake[0] = last_pos[0]
while grid[apple_pos[0]][apple_pos[1]] != 0:
apple_pos = [random.randint(0, 14), random.randint(0, 14)]
grid[apple_pos[0]][apple_pos[1]] = 5
grid[snake[i][0]][snake[i][1]] = d[1]
for row in range(len(grid)):
for pos in range(len(grid[row])):
pygame.draw.rect(screen, colors[round((math.log(grid[row][pos]+1))-0.15)], (25*pos + 2, 25*row + 2, 23, 23))
clock.tick(60)
pygame.display.update()
how to make snake game using python
import turtle
import random
WIDTH = 500
HEIGHT = 500
FOOD_SIZE = 10
DELAY = 100 # milliseconds
offsets = {
"up": (0, 20),
"down": (0, -20),
"left": (-20, 0),
"right": (20, 0)
}
def reset():
global snake, snake_direction, food_pos, pen
snake = [[0, 0], [0, 20], [0, 40], [0, 60], [0, 80]]
snake_direction = "up"
food_pos = get_random_food_pos()
food.goto(food_pos)
# screen.update() Only needed if we are fussed about drawing food before next call to `draw_snake()`.
move_snake()
def move_snake():
global snake_direction
# Next position for head of snake.
new_head = snake[-1].copy()
new_head[0] = snake[-1][0] + offsets[snake_direction][0]
new_head[1] = snake[-1][1] + offsets[snake_direction][1]
# Check self-collision
if new_head in snake[:-1]: # Or collision with walls?
reset()
else:
# No self-collision so we can continue moving the snake.
snake.append(new_head)
# Check food collision
if not food_collision():
snake.pop(0) # Keep the snake the same length unless fed.
# Allow screen wrapping
if snake[-1][0] > WIDTH / 2:
snake[-1][0] -= WIDTH
elif snake[-1][0] < - WIDTH / 2:
snake[-1][0] += WIDTH
elif snake[-1][1] > HEIGHT / 2:
snake[-1][1] -= HEIGHT
elif snake[-1][1] < -HEIGHT / 2:
snake[-1][1] += HEIGHT
# Clear previous snake stamps
pen.clearstamps()
# Draw snake
for segment in snake:
pen.goto(segment[0], segment[1])
pen.stamp()
# Refresh screen
screen.update()
# Rinse and repeat
turtle.ontimer(move_snake, DELAY)
def food_collision():
global food_pos
if get_distance(snake[-1], food_pos) < 20:
food_pos = get_random_food_pos()
food.goto(food_pos)
return True
return False
def get_random_food_pos():
x = random.randint(- WIDTH / 2 + FOOD_SIZE, WIDTH / 2 - FOOD_SIZE)
y = random.randint(- HEIGHT / 2 + FOOD_SIZE, HEIGHT / 2 - FOOD_SIZE)
return (x, y)
def get_distance(pos1, pos2):
x1, y1 = pos1
x2, y2 = pos2
distance = ((y2 - y1) ** 2 + (x2 - x1) ** 2) ** 0.5
return distance
def go_up():
global snake_direction
if snake_direction != "down":
snake_direction = "up"
def go_right():
global snake_direction
if snake_direction != "left":
snake_direction = "right"
def go_down():
global snake_direction
if snake_direction != "up":
snake_direction = "down"
def go_left():
global snake_direction
if snake_direction != "right":
snake_direction = "left"
# Screen
screen = turtle.Screen()
screen.setup(WIDTH, HEIGHT)
screen.title("Snake master play and have fanda")
screen.bgcolor("yellow")
screen.setup(500, 500)
screen.tracer(0)
# Pen
pen = turtle.Turtle("square")
pen.penup()
# Food
food = turtle.Turtle()
food.shape("square")
food.color("red")
food.shapesize(FOOD_SIZE / 20) # Default size of turtle "square" shape is 20.
food.penup()
# Event handlers
screen.listen()
screen.onkey(go_up, "Up")
screen.onkey(go_right, "Right")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
# Let's go
reset()
turtle.done()
Copyright © 2021 Codeinu
Forgot your account's password or having trouble logging into your Account? Don't worry, we'll help you to get back your account. Enter your email address and we'll send you a recovery link to reset your password. If you are experiencing problems resetting your password contact us