简体   繁体   中英

How can I make my turtle race game run continuously?

I am new to programming and have made a simply turtle race game. The game currently pauses after one turtle gets to the finish line. However, I am having trouble getting the game to run continuously.

I am not sure on the best way of making the game loop in such a way that it refreshes the location of each turtle each time but keeps the score for each turtle. Any advice would be appreciated.

Code:

# Basic Turtle Game

import time
import turtle
from turtle import *
from turtle import Turtle
from random import randint

play_again = True

#START WINDOW SET UP
#Window setup
window = turtle.Screen()
#Window Properties
window.title("Turtle Race!")
window.bgcolor("white")
window.setup(width=800, height=800)


#Start Title
title_turtle = turtle.Turtle()
title_turtle.penup()
title_turtle.speed(0)
title_turtle.setpos(-100,300)
title_turtle.color("black")
title_turtle.write("Turtle Race", font=("Arial", 25, "bold"))


#Finish Line
turtle.color("black")
turtle.penup()
turtle.speed(0)
turtle.setpos(-220,240)
turtle.pendown()
turtle.pensize(10)
turtle.forward(405)
turtle.hideturtle()


#Turtles
#Turtles 1
turtle_1 = turtle.Turtle()
turtle_1.speed(0)
turtle_1.penup()
turtle_1.setpos(-200,-120)
turtle_1.color("red")
turtle_1.shape("turtle")
turtle_1.pendown()
turtle_1.left(90)

#Turtles 2
turtle_2 = turtle.Turtle()
turtle_2.penup()
turtle_2.speed(0)
turtle_2.setpos(-140,-120)
turtle_2.color("green")
turtle_2.shape("turtle")
turtle_2.pendown()
turtle_2.left(90)

#Turtles 3
turtle_3 = turtle.Turtle()
turtle_3.penup()
turtle_3.speed(0)
turtle_3.setpos(-80,-120)
turtle_3.color("blue")
turtle_3.shape("turtle")
turtle_3.pendown()
turtle_3.left(90)

#Turtles 4
turtle_4 = turtle.Turtle()
turtle_4.penup()
turtle_4.speed(0)
turtle_4.setpos(-20,-120)
turtle_4.color("yellow")
turtle_4.shape("turtle")
turtle_4.pendown()
turtle_4.left(90)

#Turtles 5
turtle_5 = turtle.Turtle()
turtle_5.penup()
turtle_5.speed(0)
turtle_5.setpos(40,-120)
turtle_5.color("cyan")
turtle_5.shape("turtle")
turtle_5.pendown()
turtle_5.left(90)

#Turtles 6
turtle_6 = turtle.Turtle()
turtle_6.penup()
turtle_6.speed(0)
turtle_6.setpos(100,-120)
turtle_6.color("purple")
turtle_6.shape("turtle")
turtle_6.pendown()
turtle_6.left(90)

#Turtles 7
turtle_7 = turtle.Turtle()
turtle_7.penup()
turtle_7.speed(0)
turtle_7.setpos(160,-120)
turtle_7.color("orange")
turtle_7.shape("turtle")
turtle_7.pendown()
turtle_7.left(90)

#scores
turtle_1_score = 0
turtle_2_score = 0
turtle_3_score = 0
turtle_4_score = 0
turtle_5_score = 0
turtle_6_score = 0
turtle_7_score = 0

#scoarboard
pen = turtle.Turtle()
pen.speed(0)
pen.color("black")
pen.penup()
pen.hideturtle()
pen.goto(-40, -210)
pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))

pen2 = turtle.Turtle()
pen2.hideturtle()
pen2.speed(0)
pen2.color("black")
pen2.penup()
pen2.goto(-40, -270)

#pause game for 1 second
time.sleep(1)

winner = None
#Move the turtles

while not winner:
        for i in range(1):
            turtle_1.forward(randint(1,8))
            turtle_2.forward(randint(1,8))
            turtle_3.forward(randint(1,8))
            turtle_4.forward(randint(1,8))
            turtle_5.forward(randint(1,8))
            turtle_6.forward(randint(1,8))
            turtle_7.forward(randint(1,8))
        if turtle_1.ycor() > 220:
            turtle_1_score += 1
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
            winner = "Turtle 1"
        elif turtle_2.ycor() > 220:
            turtle_2_score += 1
            winner = "Turtle 2"
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
        elif turtle_3.ycor() > 220:
            turtle_3_score += 1
            winner = "Turtle 3"
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
        elif turtle_4.ycor() > 220:
            turtle_4_score += 1
            winner = "Turtle 4"
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
        elif turtle_5.ycor() > 220:
            turtle_5_score += 1
            winner = "Turtle 5"
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
        elif turtle_6.ycor() > 220:
            turtle_6_score += 1
            winner = "Turtle 6"
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
        elif turtle_7.ycor() > 220:
            turtle_7_score += 1
            winner = "Turtle 7"
            pen.clear()
            pen.write(" " + str(turtle_1_score) + "     " + str(turtle_2_score) + "     " + str(
                turtle_3_score) + "     " + str(turtle_4_score) + "     " + str(turtle_5_score) + "     " + str(
                turtle_6_score) + "     " + str(turtle_7_score) + "     ", align="center", font=("Arial", 18, "bold"))
        else:
           continue

pen2.write("{} won the race!".format(winner),align="center", font=("Arial", 18, "bold"))

turtle.exitonclick()

#Keeps Screen on when code finishes
turtle.done()*

I have finished the code. What I did, was I made a loop and have just looped the entire code. I am sorry if it is kind of repetitive. Here it is


import time
import turtle
from turtle import *
from turtle import Turtle
from random import randint

play_again = True
turtle.speed(0)
#START WINDOW SET UP
#Window setup
window = turtle.Screen()
#Window Properties
window.title("Turtle Race!")
window.bgcolor("white")
window.setup(width=800, height=800)


#Start Title
title_turtle = turtle.Turtle()
title_turtle.penup()
title_turtle.speed(0)
title_turtle.setpos(-100,300)
title_turtle.color("black")
title_turtle.write("Turtle Race", font=("Arial", 25, "bold"))


#Finish Line
turtle.color("black")
turtle.penup()
turtle.speed(0)
turtle.setpos(-220,240)
turtle.pendown()
turtle.pensize(10)
turtle.forward(405)
turtle.hideturtle()


#Turtles
#Turtles 1
turtle_1 = turtle.Turtle()
turtle_1.speed(0)
turtle_1.penup()
turtle_1.setpos(-200,-120)
turtle_1.color("red")
turtle_1.shape("turtle")
turtle_1.pendown()
turtle_1.left(90)

#Turtles 2
turtle_2 = turtle.Turtle()
turtle_2.penup()
turtle_2.speed(0)
turtle_2.setpos(-140,-120)
turtle_2.color("green")
turtle_2.shape("turtle")
turtle_2.pendown()
turtle_2.left(90)

#Turtles 3
turtle_3 = turtle.Turtle()
turtle_3.penup()
turtle_3.speed(0)
turtle_3.setpos(-80,-120)
turtle_3.color("blue")
turtle_3.shape("turtle")
turtle_3.pendown()
turtle_3.left(90)

#Turtles 4
turtle_4 = turtle.Turtle()
turtle_4.penup()
turtle_4.speed(0)
turtle_4.setpos(-20,-120)
turtle_4.color("yellow")
turtle_4.shape("turtle")
turtle_4.pendown()
turtle_4.left(90)

#Turtles 5
turtle_5 = turtle.Turtle()
turtle_5.penup()
turtle_5.speed(0)
turtle_5.setpos(40,-120)
turtle_5.color("cyan")
turtle_5.shape("turtle")
turtle_5.pendown()
turtle_5.left(90)

#Turtles 6
turtle_6 = turtle.Turtle()
turtle_6.penup()
turtle_6.speed(0)
turtle_6.setpos(100,-120)
turtle_6.color("purple")
turtle_6.shape("turtle")
turtle_6.pendown()
turtle_6.left(90)

#Turtles 7
turtle_7 = turtle.Turtle()
turtle_7.penup()
turtle_7.speed(0)
turtle_7.setpos(160,-120)
turtle_7.color("orange")
turtle_7.shape("turtle")
turtle_7.pendown()
turtle_7.left(90)

#scores
turtle_1_score = 0
turtle_2_score = 0
turtle_3_score = 0
turtle_4_score = 0
turtle_5_score = 0
turtle_6_score = 0
turtle_7_score = 0

#scoarboard
pen = turtle.Turtle()
pen.speed(0)
pen.color("black")
pen.penup()
pen.hideturtle()
pen.goto(-40, -210)
pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))

pen2 = turtle.Turtle()
pen2.hideturtle()
pen2.speed(0)
pen2.color("black")
pen2.penup()
pen2.goto(-40, -270)

#pause game for 1 second
set_up_done=False
time.sleep(1)
winner = None
#Move the turtles
while True:
    if winner==None:
            for i in range(1):
                turtle_1.forward(randint(1,8))
                turtle_2.forward(randint(1,8))
                turtle_3.forward(randint(1,8))
                turtle_4.forward(randint(1,8))
                turtle_5.forward(randint(1,8))
                turtle_6.forward(randint(1,8))
                turtle_7.forward(randint(1,8))
            if turtle_1.ycor() > 220:
                turtle_1_score += 1
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                winner = "Turtle 1"
            elif turtle_2.ycor() > 220:
                turtle_2_score += 1
                winner = "Turtle 2"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
            elif turtle_3.ycor() > 220:
                turtle_3_score += 1
                winner = "Turtle 3"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
            elif turtle_4.ycor() > 220:
                turtle_4_score += 1
                winner = "Turtle 4"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
            elif turtle_5.ycor() > 220:
                turtle_5_score += 1
                winner = "Turtle 5"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
            elif turtle_6.ycor() > 220:
                turtle_6_score += 1
                winner = "Turtle 6"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
            elif turtle_7.ycor() > 220:
                turtle_7_score += 1
                winner = "Turtle 7"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
    elif winner !=None:
        for j in range(0,99):
            if set_up_done==False:
                    turtle_1.sety(-120)
                    turtle_2.sety(-120)
                    turtle_3.sety(-120)
                    turtle_4.sety(-120)
                    turtle_5.sety(-120)
                    turtle_6.sety(-120)
                    turtle_7.sety(-120)
                    set_up_done=True
            for i in range(1):
                turtle_1.forward(randint(1,8))
                turtle_2.forward(randint(1,8))
                turtle_3.forward(randint(1,8))
                turtle_4.forward(randint(1,8))
                turtle_5.forward(randint(1,8))
                turtle_6.forward(randint(1,8))
                turtle_7.forward(randint(1,8))
            if turtle_1.ycor() > 220:
                turtle_1_score += 1
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
                winner = "Turtle 1"
                break
            elif turtle_2.ycor() > 220:
                turtle_2_score += 1
                winner = "Turtle 2"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
                break
            elif turtle_3.ycor() > 220:
                turtle_3_score += 1
                winner = "Turtle 3"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
                break
            elif turtle_4.ycor() > 220:
                turtle_4_score += 1
                winner = "Turtle 4"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
                break
            elif turtle_5.ycor() > 220:
                turtle_5_score += 1
                winner = "Turtle 5"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
                break
            elif turtle_6.ycor() > 220:
                turtle_6_score += 1
                winner = "Turtle 6"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
                break
            elif turtle_7.ycor() > 220:
                turtle_7_score += 1
                winner = "Turtle 7"
                pen.clear()
                pen.write("            " + str(turtle_1_score) + "       " + str(turtle_2_score) + "       " + str(turtle_3_score) + "       " + str(turtle_4_score) + "       " + str(turtle_5_score) + "       " + str(turtle_6_score) + "       " + str(turtle_7_score) + "       ", align="center", font=("Arial", 18, "bold"))
                set_up_done=False
            break

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM