Answers for "python snake program"

9

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()
Posted by: Guest on February-02-2021
1

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()
Posted by: Guest on September-03-2021

Python Answers by Framework

Browse Popular Code Answers by Language