Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Modify the bouncing balls simulation program so that each time a ball hits the top or bottom (but not left or right) edge of the

Modify the bouncing balls simulation program so that each time a ball hits the top or bottom (but not left or right) edge of the turtle graphics screen, it changes color. As well, modify the program such that a trail is left on the screen for 1 of every 3 balls.

# Bouncing Balls Simulation Program

import turtle import random import time

def atLeftEdge(ball, screen_width): if ball.xcor() < -screen_width / 2: return True else: return False

def atRightEdge(ball, screen_width): if ball.xcor() > screen_width / 2: return True else: return False

def atTopEdge(ball, screen_height): if ball.ycor() > screen_height / 2: return True else: return False

def atBottomEdge(ball, screen_height): if ball.ycor() < -screen_height / 2: return True else: return False

def bounceBall(ball, new_direction): if new_direction == 'left' or new_direction == 'right': new_heading = 180 - ball.heading() elif new_direction == 'down' or new_direction == 'up': new_heading = 360 - ball.heading()

return new_heading

def createBalls(num_balls): balls = [] for k in range(0, num_balls): new_ball = turtle.Turtle() new_ball.shape('circle') new_ball.fillcolor('black') new_ball.speed(0) new_ball.penup() new_ball.setheading(random.randint(1,359)) balls.append(new_ball)

return balls

# ---- main # program greeting print('This program simulates bouncing balls in a turtle screen') print('for a specified number of seconds.')

# init screen size screen_width = 800 screen_height = 600 turtle.setup(screen_width,screen_height)

# create turtle window window = turtle.Screen() window.title('Bouncing Balls')

# prompt user for execution time and number of balls num_seconds = int(input('Enter number of seconds to run: ')) num_balls = int(input('Enter number of balls in simulation: '))

# create balls balls = createBalls(num_balls)

# set start time start_time = time.time()

# begin simulation terminate = False

while not terminate: for k in range(0,len(balls)): balls[k].forward(15) if atLeftEdge(balls[k], screen_width): balls[k].setheading(bounceBall(balls[k],'right')) elif atRightEdge(balls[k], screen_width): balls[k].setheading(bounceBall(balls[k],'left')) elif atTopEdge(balls[k], screen_height): balls[k].setheading(bounceBall(balls[k],'down')) elif atBottomEdge(balls[k], screen_height): balls[k].setheading(bounceBall(balls[k],'up'))

if time.time() - start_time > num_seconds: terminate = True # exit on close window turtle.exitonclick()

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Learn Mysql The Easy Way A Beginner Friendly Guide

Authors: Kiet Huynh

1st Edition

B0CNY7143T, 979-8869761545

More Books

Students also viewed these Databases questions

Question

=+a. Use the data to calculate the estimated regression line.

Answered: 1 week ago

Question

What advice would you provide to Jennifer?

Answered: 1 week ago

Question

What are the issues of concern for each of the affected parties?

Answered: 1 week ago