Skip to content

Made the game never end #27

Description

@DefiantPro

I added some code to line 111 of the program to make the snake bounce of the walls and never die
import turtle
import time
import random

delay = 0.3

Score

score = 0
high_score = 0

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 head

head = turtle.Turtle()
head.speed(0)
head.shape("square")
head.color("blue")
head.penup()
head.goto(0, 0)
head.direction = "stop"

Snake food

food = turtle.Turtle()
food.speed(0)
food.shape("circle")
food.color("orange")
food.penup()
food.goto(0, 100)

segments = []

Pen

pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("blue")
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write("Score: 0 High Score: 0", align="center", font=("Courier", 24, "normal"))

Functions

def go_up():
if head.direction != "down":
head.direction = "up"

def go_down():
if head.direction != "up":
head.direction = "down"

def go_left():
if head.direction != "right":
head.direction = "left"

def go_right():
if head.direction != "left":
head.direction = "right"

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)

Keyboard bindings

wn.listen()
wn.onkeypress(go_up, "q")
wn.onkeypress(go_down, "a")
wn.onkeypress(go_left, "w")
wn.onkeypress(go_right, "g")

Main game loop

while True:
wn.update()

# Check for a collision with the food
if head.distance(food) < 20:
    # Move the food to a random spot
    x = random.randint(-290, 290)
    y = random.randint(-290, 290)
    food.goto(x, y)

    # Add a segment
    new_segment = turtle.Turtle()
    new_segment.speed(0)
    new_segment.shape("circle")
    new_segment.color("red")
    new_segment.penup()
    segments.append(new_segment)

    # Shorten the delay
    delay -= 0.001

    # Increase the score
    score += 10

    if score > high_score:
        high_score = score

    pen.clear()
    pen.write("Score: {}  High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal"))

# 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 0 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:
    if segment.distance(head) < 20:
        # Reset the delay
        delay = 0.1

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions