0% found this document useful (0 votes)
50 views

Unit 3: Parameters and Graphics

The document discusses parameters and graphics in Python. It provides examples of using parameters in function definitions and calls. It also introduces the DrawingPanel module for basic graphics and shows examples of drawing shapes, lines, and animating objects. The exercises at the end involve rewriting code samples to use parameters and animating a car object driving across the panel.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views

Unit 3: Parameters and Graphics

The document discusses parameters and graphics in Python. It provides examples of using parameters in function definitions and calls. It also introduces the DrawingPanel module for basic graphics and shows examples of drawing shapes, lines, and animating objects. The exercises at the end involve rewriting code samples to use parameters and animating a car object driving across the panel.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Unit 3

parameters and graphics


Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work.
Except where otherwise noted, this work is licensed under:
http://creativecommons.org/licenses/by-nc-sa/3.0
Constants
• Python doesn't really have constants.
– Instead, declare a variable at the top of your code.
– All methods will be able to use this "constant" value.

constant.py
1 MAX_VALUE = 3
2
3 def print_top():
4 for i in range(MAX_VALUE):
5 for j in range(i):
6 print(j)
7 print()
8
9 def print_bottom():
10 for i in range(MAX_VALUE, 0, -1):
11 for j in range(i, 0, -1):
12 print(MAX_VALUE)
13 print()
2
Exercise
• Rewrite the Mirror lecture program in Python. Its output:

#================#
| <><> |
| <>....<> |
| <>........<> |
|<>............<>|
|<>............<>|
| <>........<> |
| <>....<> |
| <><> |
#================#

– Make the mirror resizable by using a "constant."

3
Exercise Solution
SIZE = 4
def bar():
print("#" + 4 * SIZE * "=" + "#")
def top():
for line in range(1, SIZE + 1):
# split a long line by ending it with \
print("|" + (-2 * line + 2 * SIZE) * " " + \
"<>" + (4 * line - 4) * "." + "<>" + \
(-2 * line + 2 * SIZE) * " " + "|")
def bottom():
for line in range(SIZE, 0, -1):
print("|" + (-2 * line + 2 * SIZE) * " " + \
"<>" + (4 * line - 4) * "." + "<>" + \
(-2 * line + 2 * SIZE) * " " + "|")
# main
bar()
top()
bottom()
bar()

4
Parameters
def name(parameter, parameter, ..., parameter):
statements

– Parameters are declared by writing their names (no types)

>>> def print_many(message, n):


... for i in range(n):
... print(message)

>>> print_many("hello", 4)
hello
hello
hello
hello

5
Exercise
• Recreate the lines/boxes of stars example from lecture:
*************

*******

***********************************

**********
* *
**********

*****
* *
* *
*****

6
Exercise Solution
stars.py
1 # Draws a box of stars with the given width and
2 height.
3 def box(width, height):
4 print(width * "*")
5 for i in range(height - 2):
6 print("*" + (width - 2) * " " + "*")
7 print(width * "*")
8
9 # main
10 print(13 * "*")
11 print( 7 * "*")
12 print(35 * "*")
13 box(10, 3)
box(5, 4)

7
Default Parameter Values
def name(parameter=value, ..., parameter=value):
statements
– Can make parameter(s) optional by specifying a default value

>>> def print_many(message, n=1):


... for i in range(n):
... print(message)
>>> print_many("shrubbery")
shrubbery
>>> print_many("shrubbery", 3)
shrubbery
shrubbery
shrubbery

– Exercise: Modify stars.py to add an optional parameter for the


character to use for the outline of the box (default "*").

8
Parameter Keywords
name(parameter=value, ..., parameter=value)
– Can specify name of each parameter as you call a function
– This allows you to pass the parameters in any order
>>> def print_many(message, n):
... for i in range(n):
... print(message)

>>> print_many(str="shrubbery", n=4)


shrubbery
shrubbery
shrubbery
shrubbery
>>> print_many(n=3, str="Ni!")
Ni!
Ni!
Ni!

9
DrawingPanel
• Instructor-provided drawingpanel.py file must be in the
same folder as your Python program

• At the top of your program, write:


– from drawingpanel import *

• Panel's canvas field behaves like Graphics g in Java

10
DrawingPanel Example
draw1.py
1 from drawingpanel import *
2
3 panel = DrawingPanel(400, 300)
4 panel.set_background("yellow")
5 panel.canvas.create_rectangle(100, 50, 200, 300)

11
Drawing Methods
Java Python
drawLine panel.canvas.create_line(x1, y1, x2, y2)
drawRect, panel.canvas.create_rect(x1, y1, x2, y2)
fillRect
drawOval, panel.canvas.create_oval(x1, y1, x2, y2)
fillOval
drawString panel.canvas.create_text(x, y, text="text")

setColor (see next slide)


setBackground panel.set_background(color)

– Notice, methods take x2/y2 parameters, not width/height

12
Colors and Fill
• Python doesn't have fillRect, fillOval, or setColor.
– Instead, pass outline and fill colors when drawing a shape.
– List of all color names: http://wiki.tcl.tk/16166
– See class web site for visual index of colors!

drawcolors.py
1 from drawingpanel import *
2
3 panel = DrawingPanel(400, 300)
4 panel.canvas.create_rectangle(100, 50, 200, 200,
outline="red", fill="yellow")
5 panel.canvas.create_oval(20, 10, 180, 70, fill="blue")

13
Polygons
• Draw arbitrary polygons with create_polygon
• Draw line groups by passing more params to create_line
drawpoly.py
1 from drawingpanel import *
2
3 panel = DrawingPanel(200, 200)
4 panel.canvas.create_polygon(100, 50, 150, 0,
150, 100, fill="green")
5 panel.canvas.create_line(10, 120, 20, 160,
30, 120, 40, 175)

14
Exercise
• Write a Python version of the Car program.
– Convert this Java code to Python:

DrawingPanel panel = new DrawingPanel(200, 200);


panel.setBackground(Color.LIGHT_GRAY);
Graphics g = panel.getGraphics();
g.setColor(Color.BLACK); // body
g.fillRect(10, 30, 100, 50);
g.setColor(Color.RED); // wheels
g.fillOval(20, 70, 20, 20);
g.fillOval(80, 70, 20, 20);
g.setColor(Color.CYAN); // windshield
g.fillRect(80, 40, 30, 20);

15
Exercise
• Modify your car program to use parameters so that cars can
be drawn in many different locations.

16
Exercise
• Write a variation of the Car program
where the car body is octagonal 2 3
and there is a stop sign. 1 4

– Stop sign at (150, 10), size 40 8 5


• post at (165, 50), size 10x30, brown fill 7 6

– Write an octagon function to draw the car body / stop sign.


• Points of car body, located at (10, 10):
1. (10, 20), 2. (20, 10), 3. (100, 10), 4. (110, 20),
5. (110, 50), 6. (100, 60), 7. (20, 60), 8. (10, 50)
• Points of stop sign, located at (150, 10):
1. (150, 20), 2. (160, 10), 3. (180, 10), 4. (190, 20),
5. (190, 40), 6. (180, 50), 7. (160, 50), 8. (150, 40)

(An octagon has 10x10 triangular cuts in each corner.)

17
Animation
• Pause the panel by calling sleep
animation.py
1 from drawingpanel import *
2
3 panel = DrawingPanel(350, 300)
4 for i in range(20):
5 # clear any previous image
6 panel.canvas.create_rectangle(0, 0, 400, 400,
outline="white", fill="white")
7
8 panel.canvas.create_polygon(20 * i, 50, 20 * i,
100, 20 * i + 50, 75)
9 panel.sleep(100)

18
Exercise
• Animate the car to make it drive across the panel using the
sleep function.

19

You might also like