15 112 fundamentals of programming
play

15-112 Fundamentals of Programming Week 2 - Lecture 4: Graphics. - PowerPoint PPT Presentation

15-112 Fundamentals of Programming Week 2 - Lecture 4: Graphics. May 26, 2016 Pop Quiz Pop Quiz Fill in the blank: Lists are . awesome T/F: A variable stores the value of an object. T/F: To make a copy of the list a =


  1. 15-112 Fundamentals of Programming Week 2 - Lecture 4: Graphics. May 26, 2016

  2. Pop Quiz

  3. Pop Quiz Fill in the blank: Lists are . awesome T/F: A variable stores the value of an object. T/F: To make a copy of the list a = [1, 2, 3], do b = a # a and b are aliases b = copy.copy(a) What will the following print? a = [1, 2, 3] b = copy.copy(a) print(a == b, a is b)

  4. Pop Quiz Fill in the blank: List parameters are . awesome

  5. 
 Pop Quiz Fill in the blank: List parameters are . awesome def fill(a, value): 
 for i in range(len(a)): 
 Destructive function a[i] = value 
 x = [1, 2, 3] 
 fill(x, 42) print(x) 
 [42, 42, 42]

  6. 
 Pop Quiz Fill in the blank: List parameters are . awesome def fill(a, value): a = copy.copy(a) 
 for i in range(len(a)): 
 Nondestructive version a[i] = value return a 
 x = [1, 2, 3] 
 y = fill(x, 42) print(x, y) 
 [1, 2, 3] [42, 42, 42]

  7. Pop Quiz Is the sorted function destructive? a = [5, 4, 3, 2, 1] 
 b = sorted(a) print(a, b) 
 [5, 4, 3, 2, 1] [1, 2, 3, 4, 5] Is the sort method destructive? a = [5, 4, 3, 2, 1] 
 b = a.sort() print(a, b) 
 [1, 2, 3, 4, 5] None

  8. Pop Quiz How do you convert a string to a list? s = “You suck anil!” 
 print(list(s)) 
 ['Y', 'o', 'u', ' ', 's', 'u', 'c', 'k', ' ', 'a', 'n', 'i', 'l', '!'] print(s.split(“ ”)) ['You', 'suck', 'anil!'] How do you convert a list of strings into one string? a = [“Stephen”, “is”, “awesome”] print(“”.join(a)) Stephenisawesome print(“ ”.join(a)) Stephen is awesome print(“,”.join(a)) 
 Stephen,is,awesome

  9. Pop Quiz What does this print? a = [1, 2, 3] b = a a = a + [4] [1, 2, 3, 4] print(a) [1, 2, 3] print(b) 
 What does this print? a = [1, 2, 3] b = a a += [4] print(a) [1, 2, 3, 4] [1, 2, 3, 4] print(b) 


  10. Pop Quiz What is the difference between pop and other destructive methods? It makes a cool sound.

  11. Pop Quiz What is the difference between pop and other destructive methods? It returns something.

  12. An Exercise

  13. Coin Flips Simulation If you flipped a coin 200 times, what would be the longest consecutive run of heads or tails? ... ... H T T H T H

  14. Exercise: Coin Flips Simulation Warning: Just because you can use lists, doesn’t mean you should use lists.

  15. GRAPHICS! (with tkinter module)

  16. Importing modules In general, 2 ways to import a module: import math print(math.sqrt(5)) from math import sqrt print(sqrt(5)) print(pi) ERROR “all” from math import * print(sqrt(5)) print(pi) from tkinter import *

  17. tkinter canvas tkinter window area which you can draw on canvas (width and height specified in pixels)

  18. Creating an empty canvas from tkinter import * 
 root = Tk() 
 canvas = Canvas(root, width=300, height=200) 
 canvas.pack() 
 root.mainloop()

  19. Creating an empty canvas from tkinter import * 
 (creates a window) creates an object of type Tk root = Tk() 
 canvas = Canvas(root, width=300, height=200) 
 canvas.pack() 
 root.mainloop() creates an object(data) of type int x = 5 creates an object(data) of type list a = list()

  20. Creating an empty canvas from tkinter import * 
 root = Tk() 
 canvas = Canvas(root, width=300, height=200) 
 canvas.pack() 
 creates an object of type Canvas root.mainloop() 200 pixels 300 pixels

  21. Creating an empty canvas from tkinter import * 
 root = Tk() 
 canvas = Canvas(root, width=300, height=200) 
 canvas.pack() 
 root.mainloop()

  22. Creating an empty canvas from tkinter import * 
 root = Tk() 
 canvas = Canvas(root, width=300, height=200) 
 canvas.pack() 
 keep running until window is closed root.mainloop()

  23. Creating an empty canvas from tkinter import * 
 root = Tk() 
 canvas = Canvas(root, width=300, height=200) 
 canvas.pack() ... code to draw things go here ... 
 root.mainloop()

  24. Creating a rectangle from tkinter import * root = Tk() canvas = Canvas(root, width=600, height=400) canvas.pack() canvas.create_rectangle(150, 150, 300, 300, fill=“yellow”) root.mainloop() (0, 0) (600, 0) 150 (150, 150) 150 (300, 300) (0, 400) (600, 400)

  25. Creating a line from tkinter import * root = Tk() canvas = Canvas(root, width=300, height=200) canvas.pack() canvas.create_line(50, 50, 250, 150, fill=“red”, width=5) root.mainloop() (0, 0) (300, 0) (50, 50) (250, 150) (0, 200) (300, 200)

  26. Creating text from tkinter import * root = Tk() canvas = Canvas(root, width=300, height=200) canvas.pack() canvas.create_text(150, 100, text="15112", fill="purple", font="Helvetica 26 bold underline") 
 canvas.create_text(150, 100, text="Is Awesome!", anchor=SW, fill="orange", font="Times 18 italic") root.mainloop()

  27. Creating an oval from tkinter import * root = Tk() canvas = Canvas(root, width=300, height=200) canvas.pack() canvas.create_oval(50, 50, 250, 150, fill="yellow") root.mainloop() (50, 50) (250, 150)

  28. Creating a polygon from tkinter import * root = Tk() canvas = Canvas(root, width=300, height=200) canvas.pack() canvas.create_polygon(50,30,150,50,250,30,150,100,fill="green") root.mainloop() (50, 30) (250, 30) (150, 50) (150, 100)

  29. The framework we’ll use from tkinter import * def runDrawing(width=300, height=300): root = Tk() canvas = Canvas(root, width=width, height=height) canvas.pack() draw(canvas, width, height) root.mainloop() print(“bye!") def draw(canvas, width, height): # put your code for drawing here runDrawing(400, 200)

  30. Example: drawing rectangles from tkinter import * def runDrawing(width=300, height=300): … def draw(canvas, width, height): canvas.create_rectangle( 0, 0, 150, 150, fill=“yellow”) canvas.create_rectangle(100, 50, 250, 100, fill=“orange”, width=5) canvas.create_rectangle( 50, 100, 150, 200, fill=“green”, outline=“red”, width=3) canvas.create_rectangle(125, 25, 175, 190, fill=“purple”, width=0) runDrawing(400, 200)

  31. Example: drawing rectangles

  32. Example: drawing centered rectangles def draw(canvas, width, height): margin = 30 canvas.create_rectangle(margin, margin, width-margin, height-margin, fill=“darkGreen”) 30 30 30 30

  33. Example: drawing centered rectangles def draw(canvas, width, height): (cx, cy) = (width/2, height/2) (rectWidth, rectHeight) = (200, 100) canvas.create_rectangle( cx - rectWidth/2 , cy - rectHeight/2 , cx + rectWidth/2 , cy + rectHeight/2 , fill=“orange”) (cx, cy)

  34. Example: drawing centered rectangles def draw(canvas, width, height): (cx, cy) = (width/2, height/2) (rectWidth, rectHeight) = (width/2, height/2) canvas.create_rectangle( cx - rectWidth/2 , cy - rectHeight/2 , cx + rectWidth/2 , cy + rectHeight/2 , fill=“orange”) (cx, cy)

  35. Example: drawing centered circles def draw(canvas, width, height): (cx, cy) = (width/2, height/2) r = min(width, height)/4 canvas.create_oval( cx - r , cy - r , cx + r , cy + r , fill=“orange”) (cx, cy)

  36. Example: drawing a Belgian flag def drawBelgianFlag(canvas, x0, y0, x1, y1): 
 # draw a Belgian flag in the area bounded by (x0,y0) in # the top-left and (x1,y1) in the bottom-right (x0, y0) (x1, y1)

  37. Example: drawing a Belgian flag def drawBelgianFlag(canvas, x0, y0, x1, y1): 
 # draw a Belgian flag in the area bounded by (x0,y0) in # the top-left and (x1,y1) in the bottom-right width = x1 - x0 (x0+width/3, y0) (x0+width*2/3, y0) (x0, y0) (x1, y1) (x0+width/3, y1) (x0+width*2/3, y1)

  38. Example: drawing a Belgian flag def drawBelgianFlag(canvas, x0, y0, x1, y1): 
 width = (x1 - x0) 
 canvas.create_rectangle(x0, y0, x0+width/3, y1, fill=" black ", width=0) 
 canvas.create_rectangle(x0+width/3, y0, x0+width*2/3, y1, fill=" yellow ", width=0) 
 canvas.create_rectangle(x0+width*2/3, y0, x1, y1, fill=" red ", width=0) 
 def draw(canvas, width, height) 
 drawBelgianFlag(canvas, 25, 25, 175, 150)

  39. Example: drawing a Belgian flag def draw(canvas, width, height): (flagWidth, flagHeight) = (60, 50) 
 margin = 5 
 for row in range(3): 
 for col in range(4): 
 x0 = col * flagWidth + margin 
 y0 = row * flagHeight + margin 
 x1 = x0 + flagWidth - margin 
 y1 = y0 + flagHeight - margin 
 drawBelgianFlag(canvas, x0, y0, x1, y1)

  40. Example: drawing circular patterns How do you determine the right positions to put the numbers?

  41. Trig 101 (r cos , r sin ) θ θ r θ (0, 0)

  42. Trig 101 (cx, 0) (0, 0) (cx + r cos , cy - r sin ) θ θ r θ (0, cy) (cx, cy)

  43. Example: drawing circular patterns import math def draw(canvas, width, height): (cx, cy, r) = (width/2, height/2, min(width, height)/3) canvas.create_oval(cx - r, cy - r, cx + r, cy + r, fill=“yellow”)

  44. Example: drawing circular patterns import math def draw(canvas, width, height): (cx, cy, r) = (width/2, height/2, min(width, height)/3) canvas.create_oval(cx - r, cy - r, cx + r, cy + r, fill=“yellow”) for hour in range(12):

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend