How do I end a code using Python Turtle Module when getting a Terminator Error

54 Views Asked by At

Hello I'm new to python and I do not really know how to fix terminator errors. I tried some other fixes I found around this website but they end up leading to other errors such as .!canvas being an invalid command name.

This is the code

    import turtle as turtle

    import time

    import random

    import keyboard

    delay = 0.1

    score = 0

    high_score = 0


    t=turtle

 
    t=turtle.Screen()


    t.title("Snake Xenzia [Press Esc to end game]")

    t.bgcolor("skyblue")

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

    t.tracer(0)



    # Head of snake

    head = turtle.Turtle()

    head.shape("square")

    head.color("white")

    head.penup()

    head.goto(0, 0)

    head.direction = "Stop"



    # Food 

    food = turtle.Turtle()

    colors = random.choice(['red', 'green', 'blue'])

    shapes = random.choice(['square', 'triangle', 'circle'])

    food.speed(0)

    food.shape(shapes)

    food.color(colors)

    food.penup()

    food.goto(0, 100)



    # Adding Segments  

    pen = turtle.Turtle()

    pen.speed(0)

    pen.shape("square")

    pen.color("white")

    pen.penup()

    pen.hideturtle()

    pen.goto(0, 250)

    pen.write("Score : 0  High Score : 0", align="center",

    font=("candara", 24, "bold"))



 

    # Coding Moving

    def wkey():

        if head.direction != "down":

            head.direction = "up"



    def skey():

        if head.direction != "up":

            head.direction = "down"



    def akey():

        if head.direction != "right":

            head.direction = "left"



    def dkey():

        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)



 

         

    t.listen()

    t.onkeypress(wkey, "w")

    t.onkeypress(skey, "s")

    t.onkeypress(akey, "a")

    t.onkeypress(dkey, "d")



    segments = []



 

    # Main Gameplay

    while True:

        t.update()

        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"

        colors = random.choice(['red', 'blue', 'green'])

        shapes = random.choice(['square', 'circle'])

        for segment in segments:

            segment.goto(1000, 1000)

        segments.clear()

        score = 0

        delay = 0.1

        pen.clear()

        pen.write("Score : {} High Score : {} ".format(

            score, high_score), align="center", font=("candara", 24, "bold"))

    if head.distance(food) < 20:

        x = random.randint(-270, 270)

        y = random.randint(-270, 270)

        food.goto(x, y)



        # Adding segment

        new_segment = turtle.Turtle()

        new_segment.speed(0)

        new_segment.shape("square")

        new_segment.color("orange")  # tail colour

        new_segment.penup()

        segments.append(new_segment)

        delay -= 0.001

        score += 10

        if score > high_score:

            high_score = score

        pen.clear()

        pen.write("Score : {} High Score : {} ".format(

            score, high_score), align="center", font=("candara", 24, "bold"))

    # Collision

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

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

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

        segments[index].goto(x, y)

    if len(segments) > 0:

        x = head.xcor()

        y = head.ycor()

        segments[0].goto(x, y)

    move()

           
    for segment in segments:

        if segment.distance(head) < 20:
            time.sleep(1)

            head.goto(0, 0)

            head.direction = "stop"

            colors = random.choice(['red', 'blue', 'green'])

            shapes = random.choice(['square', 'circle'])

            for segment in segments:

                segment.goto(1000, 1000)

            segments.clear()



            score = 0

            delay = 0.1

            pen.clear()

            pen.write("Score : {} High Score : {} ".format(

                score, high_score), align="center", font=("candara", 24, "bold"))

        
    
    time.sleep(delay)


t.mainloop()

And this is the Terminator error received when I close the widget.

---------------------------------------------------------------------------
Terminator                                Traceback (most recent call last)
<ipython-input-12-9edf0a070d73> in <module>
    182 while True:
    183 
--> 184     t.update()
    185 
    186     if head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290:

~\anaconda3\lib\turtle.py in update(self)
   1301         self._tracing = True
   1302         for t in self.turtles():
-> 1303             t._update_data()
   1304             t._drawturtle()
   1305         self._tracing = tracing

~\anaconda3\lib\turtle.py in _update_data(self)
   2644 
   2645     def _update_data(self):
-> 2646         self.screen._incrementudc()
   2647         if self.screen._updatecounter != 0:
   2648             return

~\anaconda3\lib\turtle.py in _incrementudc(self)
   1290         if not TurtleScreen._RUNNING:
   1291             TurtleScreen._RUNNING = True
-> 1292             raise Terminator
   1293         if self._tracing > 0:
   1294             self._updatecounter += 1

Terminator: 
0

There are 0 best solutions below