Difference between revisions of "CSC111 Homework 11 2011"

From dftwiki3
Jump to: navigation, search
(Part 2)
(Part 2)
Line 72: Line 72:
 
</source>
 
</source>
 
<br />
 
<br />
 +
 +
=Part 3=
 +
* Once your program works well, put all the classes you have created in a separate file, called '''hw11class.py''' and your main program in a file called '''hw11.py''' where you will '''import hw11class''' or '''from hw11class import *'''.
 +
* Make sure your program works as well as when it was in one class.
 +
 +
=Testing=
 +
* Make your program stop when the user clicks the mouse on the graphics window (once to stop the animation, once to close the window)
 +
 +
=Submission=
 +
* Submit your class as follows:
 +
 +
  rsubmit hw11 hw11.py
 +
  rsubmit hw11 hw11class.py
 +
 +
* or use the submit form at http://cs.smith.edu/~111a/submit11.htm

Revision as of 18:04, 6 December 2011

--D. Thiebaut 17:50, 6 December 2011 (EST)


Traffic Light Problem: Part 1

TrafficLight.jpg
  • Create a class for a traffic light that can be drawn on the graphics window, with the bus/car and the trees.
  • The traffic light is simply a tall long rectangle with three circles inside, one which is either black or yellow, one that is either black or green, and one that is either black or red.
  • Your class should contain methods that should allow objects instantiated from it to
    • Turn the green light on. This will set the other ones off (i.e. black)
    • Turn the yellow light on. This will set the other ones off (i.e. black)
    • Turn the red light on. This will set the other ones off (i.e. black)
  • The default mode is for TrafficLight objects to be created with the green light on.
  • Test your program and make sure you can draw a traffic light and control it in some ways. Below is an example of how you could test this:


def main():
      win = GraphWin( "Hw 11 - 111b-xx", W, H )
      x = ...
      y = ...
      light = TrafficLight( Point( x, y ) )
      light.draw( win )

      click = 0
      while  True:
                   
          if win.checkMouse() != None:
               click = ( click + 1 ) % 3
               if click == 0:  light.setGreenOn()
               if click == 1:  light.setYellowOn()
               if click == 2:  light.setRedOn()
    
      win.close()

main()


Part 2

  • Same as Part 1, but the TrafficLight object will now switch on its own from green to yellow, from yellow to red, and from red back to green.
  • The way to do that is for the traffic light class to contain a counter, and every time it is called to update itself, it increments a counter. If the counter passes a particular threshold, say 10, it decide to turn on anther light.
  • There should be a car (or bus) going around the window, wrapping around the window as it leaves one edge and reappearing on the other side.
  • There should be trees around as well.
  • The car should stop if it is within 50 pixels in front of the traffic light and the light is red or yellow. Otherwise the car moves on...
  • Here is an example below of what your main program could look like:


position = Point( ..., ... )
light = TrafficLight( position )
light.draw( win )
car = Car( ... )
car.draw( win )

while True:
    light.update()

    if ( not light.isGreen() ) and car.distanceFrontTo( light.getPosition() ) <= 50 :
          car.move( )


Part 3

  • Once your program works well, put all the classes you have created in a separate file, called hw11class.py and your main program in a file called hw11.py where you will import hw11class or from hw11class import *.
  • Make sure your program works as well as when it was in one class.

Testing

  • Make your program stop when the user clicks the mouse on the graphics window (once to stop the animation, once to close the window)

Submission

  • Submit your class as follows:
  rsubmit hw11 hw11.py
  rsubmit hw11 hw11class.py