free Friday 10/2/2025

today i tried to finish the snake game but it’s confusing

import os

import turtle

import time

import random

delay = .1

# Set up the screen

wn = turtle.Screen()

wn.title(“Snake Game by @TokyoEdTech”)

wn.bgcolor(“green”)

wn.setup(width=600, height=600)

wn.tracer(0) # Turns off the screen updates

# Snake food

food = turtle. Turtle()

food.speed(9)

food.shape(“circle”)

food.color(“red”)

food.penup()

food.goto(0,100)

segments = []

#Snake head

head = turtle.Turtle()

head.speed(8)

head.shape(“square”)

head.color(“black”)

head.penup()

head.goto(0,0)

head.direction = “stop”

#Functions

def move():

    if head.direction == “up”:

        y = head.ycor()

        head.sety(y + 20)

    if head.direction == “down”:

        y = head.ycor()

        head.sety(y – 20)

    if head.direction == “left”:

        x = head.xcor()

        head.setx(x – 20)

    if head.direction == “right”:

        x = head.xcor()

        head.setx(x + 20)

# Functions

def go_up():

    head.direction = “up”

def go_down():

    head.direction = “down”

def go_left():

    head.direction = “left”

def go_right():

    head.direction = “right”

#Keyboard bindings

wn.listen()

wn.onkeypress(go_up, “w”)

wn.onkeypress (go_down, “s”)

wn.onkeypress(go_left, “a”)

wn.onkeypress(go_right, “d”)

# Main game Loop

while True:

    wn.update()

    # Check for a collision with the border

    if head.xcor()>290 or head.xcor()<-290 or head.ycor()>290 or head.ycor()<-290:

        time.sleep(1)

        head.goto(0,0)

        head.direction = “stop”

        # Clear the segments list

        segments = []

    # Check for a collision with the food

    if head.distance(food) <20:

        # Move the food to a random spot

        x = random.randint(-298, 290)

        y = random.randint(-290, 290)

        food.goto(x,y)

         # Hide the segments

        for segment in segments:

            segment.goto(1000, 1000)

        # Add a segment

        new_segment = turtle. Turtle()

        new_segment.speed(8)

        new_segment.shape(“square”)

        new_segment.color(“grey”)

        new_segment.penup()

        segments.append(new_segment)

    # Move the end segments first in reverse order

    for index in range(len(segments)-1, 0, -1):

        x = segments[index-1].xcor()

        y = segments [index-1].ycor()

        segments [index].goto(x, y)

    #Move segment to where the head is

    if len(segments) > 0:

        x = head.xcor()

        y = head.ycor()

        segments[0].goto(x,y)

    move()

    #Check for head collision with the body segments

    for segment in segments:

        print(“distance”,segment.distance)

        if segment.distance (head) < 20:

            time.sleep(1)

            head.goto (0,0)

            head.direction = “stop”

            # Clear the segments list

            segments = []

    time.sleep(delay)

wn.mainloop()

that’s what i did

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top