Python Forum
Python 25 Line Challenge
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python 25 Line Challenge
#13
(May-06-2022, 07:33 PM)menator01 Wrote: One more.

All right Menator01, I've got one for you. Since you seem to like a challenge I off you this one. It is the classic turtle race example that I have expanded to show a practical use for arrays. Can you get this one down below 25 lines?

#Turtle race - An example of using all of the topics
#with an introduction to using lists

from turtle import *
from random import *

turtlecnt = 10                     #number of turtles in the race
linetop = turtlecnt * 30 / 2       #location of top line
linebottom = 0 - linetop - 30      #location of bottom line
hideturtle()                       #setup the screen
penup()
speed("fastest")
goto(-200,linetop)
pendown()
goto(-200,linebottom)
penup()
goto(200,linetop)
pendown()
goto(200,linebottom)

racers = []                         #a list to hold our turtles

for i in range(0,turtlecnt):        #for each position in the list 
    newturtle = Turtle()            #create the turtle 
    racers.append(newturtle)        #add it to the turtle list

#a list of colors to randomly choose from
colors = ["yellow", "gold", "orange", "red", "maroon", "violet", "pink", "magenta",
          "purple", "navy", "blue", "skyblue", "cyan", "turquoise", "lightgreen",
          "green", "darkgreen", "chocolate", "brown", "gray", "black"]

#Setup the turtles
for i in range(0,turtlecnt):           #for each turtle in the list
    clrnum = randint(0,len(colors)-1)  #choose a random color
    racers[i].color(colors[clrnum])    #set the turtle to the color
    colors.pop(clrnum)                 #remove the color from the list (avoid repeats)
    racers[i].shapesize(2)             #increase the turtles size
    racers[i].penup()                  #no drawing during the race
    racers[i].goto(-200, (i * 30) - (turtlecnt * 30 / 2)) #goto the starting line
    racers[i].speed("fastest")         #set the speed (same as 0)
    
#repeat until on of the turtles reaches the finish line
racing = True                       #the race is running
i = 0                               #start at the first turtle
tracer(0)                           #do not automatically update window
while racing:                       #while the race is running
    racerdist = randint(0,5)        #choose a random distance to travel
    racers[i].forward(racerdist)    #for the current turtle, move the random distance
    if racers[i].xcor() >= 200:     #check if that move won the race
        racing = False              #the race is over
        winpos = i                  #this turtle won
        
    i = i + 1                       #setting up for the next turtle
    if i >= turtlecnt:              #have we reached the end of the turtle list?
        i = 0                       #yes? wrap to the beginning
    update()                        #manually update the window (needed when tracer is 0)

penup()                             #relocate the default turtle
goto(-200,racers[winpos].ycor())    #display the winner
write("The winner is turtle " + str(winpos),font=("",25,""))
Reply


Messages In This Thread
Python 25 Line Challenge - by codingCat - May-02-2022, 01:08 PM
RE: Python 25 Line Challenge - by codingCat - May-02-2022, 01:11 PM
RE: Python 25 Line Challenge - by menator01 - May-02-2022, 08:02 PM
RE: Python 25 Line Challenge - by codingCat - May-03-2022, 11:23 AM
RE: Python 25 Line Challenge - by Gribouillis - May-03-2022, 12:24 PM
RE: Python 25 Line Challenge - by codingCat - May-04-2022, 06:52 PM
RE: Python 25 Line Challenge - by menator01 - May-03-2022, 07:49 PM
RE: Python 25 Line Challenge - by codingCat - May-04-2022, 06:55 PM
RE: Python 25 Line Challenge - by Gribouillis - May-03-2022, 09:24 PM
RE: Python 25 Line Challenge - by codingCat - May-04-2022, 07:06 PM
RE: Python 25 Line Challenge - by menator01 - May-05-2022, 07:10 PM
RE: Python 25 Line Challenge - by Coricoco_fr - May-09-2022, 01:11 PM
RE: Python 25 Line Challenge - by codingCat - May-09-2022, 02:27 PM
RE: Python 25 Line Challenge - by menator01 - May-06-2022, 07:33 PM
RE: Python 25 Line Challenge - by codingCat - May-09-2022, 11:49 AM
RE: Python 25 Line Challenge - by codingCat - May-09-2022, 12:17 PM
RE: Python 25 Line Challenge - by menator01 - May-09-2022, 06:04 PM
RE: Python 25 Line Challenge - by codingCat - May-09-2022, 06:33 PM
RE: Python 25 Line Challenge - by menator01 - May-09-2022, 06:36 PM
RE: Python 25 Line Challenge - by Coricoco_fr - May-11-2022, 05:34 PM
RE: Python 25 Line Challenge - by Gribouillis - May-09-2022, 06:30 PM
RE: Python 25 Line Challenge - by menator01 - May-09-2022, 06:33 PM
RE: Python 25 Line Challenge - by Gribouillis - May-09-2022, 06:51 PM
RE: Python 25 Line Challenge - by menator01 - May-09-2022, 07:03 PM
RE: Python 25 Line Challenge - by Gribouillis - May-09-2022, 07:07 PM
RE: Python 25 Line Challenge - by codingCat - May-10-2022, 01:43 PM
RE: Python 25 Line Challenge - by codingCat - May-10-2022, 02:55 PM
RE: Python 25 Line Challenge - by Gribouillis - May-10-2022, 07:03 PM
RE: Python 25 Line Challenge - by Gribouillis - May-11-2022, 05:51 AM
RE: Python 25 Line Challenge - by codingCat - May-11-2022, 11:33 AM
RE: Python 25 Line Challenge - by codingCat - May-12-2022, 07:10 PM
RE: Python 25 Line Challenge - by codingCat - May-13-2022, 07:00 PM
RE: Python 25 Line Challenge - by codingCat - May-17-2022, 01:50 PM
RE: Python 25 Line Challenge - by codingCat - May-17-2022, 06:24 PM
RE: Python 25 Line Challenge - by codingCat - May-18-2022, 07:17 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Python 100 line Challenge codingCat 9 3,406 Jun-20-2022, 07:18 AM
Last Post: Coricoco_fr
  Zen Python Challenge ichabod801 3 4,167 Aug-13-2018, 12:02 AM
Last Post: ichabod801

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020