<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5050113136400811496</id><updated>2009-10-13T17:04:30.231-05:00</updated><title type='text'>Professor Craven's Blog</title><subtitle type='html'>Thoughts from a Computer Science instructor at Simpson College, in Indianola, Iowa.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.cravenfamily.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default?start-index=26&amp;max-results=25'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>84</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-8372698152213495938</id><published>2009-08-30T12:59:00.002-05:00</published><updated>2009-08-30T13:10:55.617-05:00</updated><title type='text'>HP Counterfeit Ink</title><content type='html'>Just when I thought my HP Photosmart C7280 Printer could not be any more annoying, it has picked up a new "feature."&lt;br /&gt;&lt;br /&gt;What were a few of the original annoying features?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Continuously running 6 different processes.&lt;/li&gt;&lt;li&gt;Throwing up a dialog box to every computer in the house when it is low on ink, out of paper, or even if it has been turned on.&lt;/li&gt;&lt;li&gt;Originally it had 'critical updates' 2-3 times a week it needed to download. I figured out how to turn that off thankfully.&lt;/li&gt;&lt;li&gt;1/2 the computers in the house cause a blank sheet to print between each actual page we want printed.&lt;/li&gt;&lt;/ul&gt;The 'new' feature: accusing me of using counterfeit ink. It is already a waste when studies have shown printers to report cartridges empty long before they actually are.  But now I can't use my nearly full cartridge after only a month, because printer is suddenly convinced it is not a 'real' HP cartridge. At first it kept giving me nasty messages about voiding my warranty. Now it just refuses to use it at all.&lt;br /&gt;&lt;br /&gt;Bad Hewlett-Packard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-8372698152213495938?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/8372698152213495938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/8372698152213495938'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/08/hp-counterfeit-ink.html' title='HP Counterfeit Ink'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-7031635469174091111</id><published>2009-07-09T10:11:00.004-05:00</published><updated>2009-07-09T10:37:21.452-05:00</updated><title type='text'>Searching and Sorting algorithms</title><content type='html'>I'm teaching second semester programming this summer. This is the class where classic algorithms such as &lt;a href="http://en.wikipedia.org/wiki/Binary_search_algorithm"&gt;binary search&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Quicksort"&gt;QuickSort&lt;/a&gt; are introduced. These algorithms have a certain beauty about them that I really enjoy.&lt;br /&gt;&lt;br /&gt;The book I'm using is &lt;a href="http://www.amazon.com/Java-Software-Structures-Designing-Using/dp/0136078583/ref=cm_cr-mr-title"&gt;Java Software Structures&lt;/a&gt;. This book is a solid CS2 textbook that covers searching and sorting in the order one would expect. I did not find the book to be outstanding, just a solid contender. I think the book would be outstanding if these issues were addressed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The book uses generics, iterators, and other advanced features of Java without adequate coverage in the text. There is some coverage, but not enough. Many students coming out of a CS1 course won't be prepped enough to use them.&lt;/li&gt;&lt;li&gt;Code for searching and sorting is only given using generics. This forces students to solve 2 problems, what is the algorithm doing, and what's going on with the generics. I'd prefer the code first be introduced using an integer array, or even pseudo-code. If the code using generics was shown right after an integer array example, it would help emphasize what generics add.&lt;/li&gt;&lt;li&gt;I'd like to see some recursive algorithms, like binary search, be shown in non-recursive form. Otherwise students might think that the recursive algorithm is the only way to do it.&lt;/li&gt;&lt;li&gt;I'd like to see better images of the searching and sorting in progress.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Past that, not a bad book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-7031635469174091111?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/7031635469174091111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/7031635469174091111'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/07/searching-and-sorting-algorithms.html' title='Searching and Sorting algorithms'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-3506074857102114452</id><published>2009-06-23T10:43:00.002-05:00</published><updated>2009-06-23T11:02:45.976-05:00</updated><title type='text'>8-bit microcontoller programming</title><content type='html'>I'm once again learning how to do simple embedded programming. I'm using the &lt;a href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=DEMO9S08AW60E"&gt;DEMO9S08AW60E&lt;/a&gt; board from &lt;a href="http://www.freescale.com/"&gt;Freescale&lt;/a&gt;. Unfortunately I'm solving the same problems I ran into last summer I worked on this.&lt;br /&gt;&lt;br /&gt;So just in case someone (like me) runs into these problems, I'll blog about them so that the solution can be found via Google.&lt;br /&gt;&lt;br /&gt;1. CodeWarrior for Microcontrollers doesn't work with 64-bit Microsoft Vista. It won't even install. Its been that way for several years, no fix coming. Even more annoying, the installer just fails with a cryptic message. Nothing that would indicate that the problem is 64-bit Vista incompatibility.&lt;br /&gt;&lt;br /&gt;2. Any time my program tries to run an analog to digital conversion (ADC), the program hangs. I'm not sure why, but I traced the issue to this line in the ADC bean's initialization function:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;setReg8(ADC1CFG, 0x7A);              /* Set prescaler bits */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once that runs, I can't do a conversion. The line is auto-generated by the 'processor expert' that comes with CodeWarrior. Every time the processor expert generates the code, I have to comment out this line. I'm not sure yet whatthe 'prescalar bits' are supposed to be set to. I figure when I take the time to understand that, I can code around the issue.&lt;br /&gt;&lt;br /&gt;3. Since doing a ADC uses an interrupt, it doesn't work to place the code inside a different interrupt. Measurements have to be done in the main loop.&lt;br /&gt;&lt;br /&gt;Now I can blink LEDs and read a 2-axis accelerometer. My not-very-exciting program can change the rate the lights blink depending on how the board is tilted. Next step is to see if the custom printed board a student built last year can be programmed. That board is set up for interfacing robotic servos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-3506074857102114452?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3506074857102114452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3506074857102114452'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/06/8-bit-microcontoller-programming.html' title='8-bit microcontoller programming'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-8065015331566779632</id><published>2009-06-13T15:02:00.002-05:00</published><updated>2009-06-13T15:17:36.621-05:00</updated><title type='text'>Python and scope</title><content type='html'>I think this rule with scope in Python is not intuitive. Take a look at the following program:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;a name="1"&gt;    1&lt;/a&gt; x = 1&lt;br /&gt;&lt;a name="2"&gt;    2&lt;/a&gt;&lt;br /&gt;&lt;a name="3"&gt;    3&lt;/a&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;main&lt;/span&gt;():&lt;br /&gt;&lt;a name="4"&gt;    4&lt;/a&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;print&lt;/span&gt; x&lt;br /&gt;&lt;a name="5"&gt;    5&lt;/a&gt;              &lt;br /&gt;&lt;a name="6"&gt;    6&lt;/a&gt; main()&lt;/pre&gt;&lt;br /&gt;x is in scope within main(), and the program runs correctly. Now look at this program:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;a name="1"&gt;    1&lt;/a&gt; x = 1&lt;br /&gt;&lt;a name="2"&gt;    2&lt;/a&gt;&lt;br /&gt;&lt;a name="3"&gt;    3&lt;/a&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;main&lt;/span&gt;():&lt;br /&gt;&lt;a name="4"&gt;    4&lt;/a&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;print&lt;/span&gt; x&lt;br /&gt;&lt;a name="5"&gt;    5&lt;/a&gt;     x = 1&lt;br /&gt;&lt;a name="6"&gt;    6&lt;/a&gt;              &lt;br /&gt;&lt;a name="7"&gt;    7&lt;/a&gt; main()&lt;/pre&gt;&lt;br /&gt;This program fails, it can't print x because the value for x has not been set before printing it in line 4.&lt;br /&gt;&lt;br /&gt;Why? x is set in line 1, correct? True. But that x is not in scope.&lt;br /&gt;&lt;br /&gt;By setting x=1 in the main function, we get a brand new variable called x, which is only in the main function. There are 2 variables, both named x. One for the main file script, and one for the main function. And since x has not been set in the main function, print x does not work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-8065015331566779632?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/8065015331566779632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/8065015331566779632'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/06/python-and-scope.html' title='Python and scope'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-7511027536189223825</id><published>2009-03-07T16:14:00.003-06:00</published><updated>2009-03-07T16:21:13.252-06:00</updated><title type='text'>Running into walls with Python and Pygame</title><content type='html'>This is an example of using Python and Pygame. You can move a square box with the keyboard and bump into wall objects.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_FzQ1J4_f5P4/SbLy7ML2alI/AAAAAAAAAIQ/HI0wGXcrFlc/s1600-h/pygame_and_walls.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_FzQ1J4_f5P4/SbLy7ML2alI/AAAAAAAAAIQ/HI0wGXcrFlc/s320/pygame_and_walls.png" alt="" id="BLOGGER_PHOTO_ID_5310574009320368722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;a name="1"&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;import&lt;/span&gt; pygame&lt;br /&gt;&lt;/a&gt;&lt;a name="2"&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;from&lt;/span&gt; pygame.locals &lt;span style="color: rgb(128, 64, 0);"&gt;import&lt;/span&gt; *&lt;br /&gt;&lt;/a&gt;&lt;a name="3"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="4"&gt; black = (0,0,0)&lt;br /&gt;&lt;/a&gt;&lt;a name="5"&gt; white = (255,255,255)&lt;br /&gt;&lt;/a&gt;&lt;a name="6"&gt; blue = (0,0,255)&lt;br /&gt;&lt;/a&gt;&lt;a name="7"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="8"&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;# This class represents the bar at the bottom that the player controls&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="9"&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;Wall&lt;/span&gt;(pygame.sprite.Sprite):&lt;br /&gt;&lt;/a&gt;&lt;a name="10"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Constructor function&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="11"&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;__init__&lt;/span&gt;(self,height,width,x,y):&lt;br /&gt;&lt;/a&gt;&lt;a name="12"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Call the parent's constructor&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="13"&gt;         pygame.sprite.Sprite.__init__(self)&lt;br /&gt;&lt;/a&gt;&lt;a name="14"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="15"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Make a blue wall, of the size specified in the parameters&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="16"&gt;         self.image = pygame.Surface([width, height])&lt;br /&gt;&lt;/a&gt;&lt;a name="17"&gt;         self.image.fill((blue))&lt;br /&gt;&lt;/a&gt;&lt;a name="18"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="19"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Make our top-left corner the passed-in location.&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="20"&gt;         self.rect = self.image.get_rect()&lt;br /&gt;&lt;/a&gt;&lt;a name="21"&gt;         self.rect.topleft = (x, y)&lt;br /&gt;&lt;/a&gt;&lt;a name="22"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="23"&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;# This class represents the bar at the bottom that the player controls&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="24"&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;Player&lt;/span&gt;(pygame.sprite.Sprite):&lt;br /&gt;&lt;/a&gt;&lt;a name="25"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Constructor function&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="26"&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;__init__&lt;/span&gt;(self,x,y):&lt;br /&gt;&lt;/a&gt;&lt;a name="27"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Call the parent's constructor&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="28"&gt;         pygame.sprite.Sprite.__init__(self)&lt;br /&gt;&lt;/a&gt;&lt;a name="29"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="30"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Set speed vector&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="31"&gt;         self.change_x=0&lt;br /&gt;&lt;/a&gt;&lt;a name="32"&gt;         self.change_y=0&lt;br /&gt;&lt;/a&gt;&lt;a name="33"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="34"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Set height, width&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="35"&gt;         self.image = pygame.Surface([15, 15])&lt;br /&gt;&lt;/a&gt;&lt;a name="36"&gt;         self.image.fill((white))&lt;br /&gt;&lt;/a&gt;&lt;a name="37"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="38"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Make our top-left corner the passed-in location.&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="39"&gt;         self.rect = self.image.get_rect()&lt;br /&gt;&lt;/a&gt;&lt;a name="40"&gt;         self.rect.topleft = [x,y]&lt;br /&gt;&lt;/a&gt;&lt;a name="41"&gt;  &lt;br /&gt;&lt;/a&gt;&lt;a name="42"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Change the speed of the player&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="43"&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;changespeed&lt;/span&gt;(self,x,y):&lt;br /&gt;&lt;/a&gt;&lt;a name="44"&gt;         self.change_x+=x&lt;br /&gt;&lt;/a&gt;&lt;a name="45"&gt;         self.change_y+=y&lt;br /&gt;&lt;/a&gt;&lt;a name="46"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="47"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Find a new position for the player&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="48"&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;update&lt;/span&gt;(self,walls):&lt;br /&gt;&lt;/a&gt;&lt;a name="49"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Get the old position, in case we need to go back to it&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="50"&gt;         old_x=self.rect.topleft[0]&lt;br /&gt;&lt;/a&gt;&lt;a name="51"&gt;         old_y=self.rect.topleft[1]&lt;br /&gt;&lt;/a&gt;&lt;a name="52"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="53"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Update position according to our speed (vector)&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="54"&gt;         new_x=old_x+self.change_x&lt;br /&gt;&lt;/a&gt;&lt;a name="55"&gt;         new_y=old_y+self.change_y&lt;br /&gt;&lt;/a&gt;&lt;a name="56"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="57"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Put the player in the new spot&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="58"&gt;         self.rect.topleft = (new_x,new_y)&lt;br /&gt;&lt;/a&gt;&lt;a name="59"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="60"&gt;         &lt;span style="color: rgb(128, 0, 0);"&gt;# Did this update cause us to hit a wall?&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="61"&gt;         collide = pygame.sprite.spritecollide(self, walls, False)&lt;br /&gt;&lt;/a&gt;&lt;a name="62"&gt;         &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; collide:&lt;br /&gt;&lt;/a&gt;&lt;a name="63"&gt;             &lt;span style="color: rgb(128, 0, 0);"&gt;# Whoops, hit a wall. Go back to the old position&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="64"&gt;             self.rect.topleft=(old_x,old_y)&lt;br /&gt;&lt;/a&gt;&lt;a name="65"&gt;          &lt;br /&gt;&lt;/a&gt;&lt;a name="66"&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;# This is the main function where our program begins&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="67"&gt; &lt;span style="color: rgb(128, 64, 0);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;main&lt;/span&gt;():&lt;br /&gt;&lt;/a&gt;&lt;a name="68"&gt;     score = 0&lt;br /&gt;&lt;/a&gt;&lt;a name="69"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Call this function so the Pygame library can initialize itself&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="70"&gt;     pygame.init()&lt;br /&gt;&lt;/a&gt;&lt;a name="71"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="72"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Create an 800x600 sized screen&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="73"&gt;     screen = pygame.display.set_mode([800, 600])&lt;br /&gt;&lt;/a&gt;&lt;a name="74"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Set the title of the window&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="75"&gt;     pygame.display.set_caption('&lt;span style="color: rgb(0, 96, 0);"&gt;Test&lt;/span&gt;')&lt;br /&gt;&lt;/a&gt;&lt;a name="76"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Enable this to make the mouse dissappear when over our window&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="77"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;#pygame.mouse.set_visible(0)&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="78"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# This is a font we use to draw text on the screen (size 36)&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="79"&gt;     font = pygame.font.Font(&lt;span style="color: rgb(128, 64, 0);"&gt;None&lt;/span&gt;, 36)&lt;br /&gt;&lt;/a&gt;&lt;a name="80"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="81"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Create a surface we can draw on&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="82"&gt;     background = pygame.Surface(screen.get_size())&lt;br /&gt;&lt;/a&gt;&lt;a name="83"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Used for converting color maps and such&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="84"&gt;     background = background.convert()&lt;br /&gt;&lt;/a&gt;&lt;a name="85"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Fill the screen with a black background&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="86"&gt;     background.fill(black)&lt;br /&gt;&lt;/a&gt;&lt;a name="87"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="88"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Create the player paddle object&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="89"&gt;     player = Player( 50,50 )&lt;br /&gt;&lt;/a&gt;&lt;a name="90"&gt;     movingsprites = pygame.sprite.RenderPlain((player))&lt;br /&gt;&lt;/a&gt;&lt;a name="91"&gt;  &lt;br /&gt;&lt;/a&gt;&lt;a name="92"&gt;     &lt;span style="color: rgb(128, 0, 0);"&gt;# Make the walls. (height, width, x_pos, y_pos)&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="93"&gt;     wall_list=[]&lt;br /&gt;&lt;/a&gt;&lt;a name="94"&gt;     wall_list.append(Wall(600,10,0,0))&lt;br /&gt;&lt;/a&gt;&lt;a name="95"&gt;     wall_list.append(Wall(10,790,10,0))&lt;br /&gt;&lt;/a&gt;&lt;a name="96"&gt;     wall_list.append(Wall(10,100,10,200))&lt;br /&gt;&lt;/a&gt;&lt;a name="97"&gt;  &lt;br /&gt;&lt;/a&gt;&lt;a name="98"&gt;     walls=pygame.sprite.RenderPlain(wall_list)&lt;br /&gt;&lt;/a&gt;&lt;a name="99"&gt;  &lt;br /&gt;&lt;/a&gt;&lt;a name="100"&gt;     clock = pygame.time.Clock()&lt;br /&gt;&lt;/a&gt;&lt;a name="101"&gt;  &lt;br /&gt;&lt;/a&gt;&lt;a name="102"&gt;     &lt;span style="color: rgb(128, 64, 0);"&gt;while&lt;/span&gt; 1:&lt;br /&gt;&lt;/a&gt;&lt;a name="103"&gt;         clock.tick(40)&lt;br /&gt;&lt;/a&gt;&lt;a name="104"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="105"&gt;         &lt;span style="color: rgb(128, 64, 0);"&gt;for&lt;/span&gt; event &lt;span style="color: rgb(128, 64, 0);"&gt;in&lt;/span&gt; pygame.event.get():&lt;br /&gt;&lt;/a&gt;&lt;a name="106"&gt;             &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.type == pygame.QUIT:&lt;br /&gt;&lt;/a&gt;&lt;a name="107"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;return&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="108"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="109"&gt;             &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.type == KEYDOWN:&lt;br /&gt;&lt;/a&gt;&lt;a name="110"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_LEFT:&lt;br /&gt;&lt;/a&gt;&lt;a name="111"&gt;                     player.changespeed(-3,0)&lt;br /&gt;&lt;/a&gt;&lt;a name="112"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_RIGHT:&lt;br /&gt;&lt;/a&gt;&lt;a name="113"&gt;                     player.changespeed(3,0)&lt;br /&gt;&lt;/a&gt;&lt;a name="114"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_UP:&lt;br /&gt;&lt;/a&gt;&lt;a name="115"&gt;                     player.changespeed(0,-3)&lt;br /&gt;&lt;/a&gt;&lt;a name="116"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_DOWN:&lt;br /&gt;&lt;/a&gt;&lt;a name="117"&gt;                     player.changespeed(0,3)&lt;br /&gt;&lt;/a&gt;&lt;a name="118"&gt;                  &lt;br /&gt;&lt;/a&gt;&lt;a name="119"&gt;             &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.type == KEYUP:&lt;br /&gt;&lt;/a&gt;&lt;a name="120"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_LEFT:&lt;br /&gt;&lt;/a&gt;&lt;a name="121"&gt;                     player.changespeed(3,0)&lt;br /&gt;&lt;/a&gt;&lt;a name="122"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_RIGHT:&lt;br /&gt;&lt;/a&gt;&lt;a name="123"&gt;                     player.changespeed(-3,0)&lt;br /&gt;&lt;/a&gt;&lt;a name="124"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_UP:&lt;br /&gt;&lt;/a&gt;&lt;a name="125"&gt;                     player.changespeed(0,3)&lt;br /&gt;&lt;/a&gt;&lt;a name="126"&gt;                 &lt;span style="color: rgb(128, 64, 0);"&gt;if&lt;/span&gt; event.key == K_DOWN:&lt;br /&gt;&lt;/a&gt;&lt;a name="127"&gt;                     player.changespeed(0,-3)&lt;br /&gt;&lt;/a&gt;&lt;a name="128"&gt;                  &lt;br /&gt;&lt;/a&gt;&lt;a name="129"&gt;         player.update(walls)&lt;br /&gt;&lt;/a&gt;&lt;a name="130"&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a name="131"&gt;         pygame.draw.rect(screen,black,(0,0,800,600))&lt;br /&gt;&lt;/a&gt;&lt;a name="132"&gt;         movingsprites.draw(screen)&lt;br /&gt;&lt;/a&gt;&lt;a name="133"&gt;         walls.draw(screen)&lt;br /&gt;&lt;/a&gt;&lt;a name="134"&gt;         pygame.display.flip()&lt;br /&gt;&lt;/a&gt;&lt;a name="135"&gt;              &lt;br /&gt;&lt;/a&gt;&lt;a name="136"&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;#this calls the 'main' function when this script is executed&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;a name="137"&gt; main()&lt;br /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-7511027536189223825?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/7511027536189223825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/7511027536189223825'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/03/running-into-walls-with-python-and.html' title='Running into walls with Python and Pygame'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_FzQ1J4_f5P4/SbLy7ML2alI/AAAAAAAAAIQ/HI0wGXcrFlc/s72-c/pygame_and_walls.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-3146927336016775126</id><published>2009-02-17T19:46:00.003-06:00</published><updated>2009-02-17T20:53:03.083-06:00</updated><title type='text'>Wells Fargo Rewards</title><content type='html'>I'm a fan of Wells Fargo. But even good companies can make a mess of things.&lt;br /&gt;&lt;br /&gt;Today I decided to use some of the reward points for my credit card. So I dug out my password and signed on to the rewards site. After logging in I got this screen:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/paul_craven/3288572733/" title="wf_1 by Professor Craven, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3555/3288572733_7a36ff897b.jpg" alt="wf_1" height="311" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I didn't read it to carefully the first time. I still don't quite get what it is saying, but for some reason it thinks I need to choose a new user name and password. My old user name and password meet all their requirements, why do I need a new one?&lt;br /&gt;&lt;br /&gt;This is the next screen:&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/paul_craven/3288572753/" title="wf_2 by Professor Craven, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3598/3288572753_8539b3efe3.jpg" alt="wf_2" height="278" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After seeing this, alarm bells go off. I already logged in, why does it need this information? I checked the URL and the signed certificate and both were legit. So I go on to the next screen:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/paul_craven/3289390032/" title="wf_3 by Professor Craven, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3284/3289390032_ce253f835e.jpg" alt="wf_3" height="395" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The option where you can choose to change user name, password, or both? You can't choose any option other than both. Why even show the option if it isn't one?&lt;br /&gt;&lt;br /&gt;It then asks for my card number. Didn't I already enter that in the last screen? The default password is the last 4 of my SSN, which I entered the last screen.&lt;br /&gt;&lt;br /&gt;On the plus side, I was able to enter the same user name and password I had before and the system took it. On the bad side, the next time I logged in it sent me though the process again.&lt;br /&gt;&lt;br /&gt;Another example of security improvements that annoy the user and don't improve security: The Wells Fargo employee site. Here they improve security by requiring not one, but two passwords.&lt;br /&gt;&lt;br /&gt;I think this is supposed to be a poor man's version of &lt;a href="http://en.wikipedia.org/wiki/Two-factor_authentication"&gt;two-factor authentication&lt;/a&gt;. Except the person specifying the requirement flunked their security class. There is no difference between two passwords and one password. They are both "something you know"; just one factor. You could just increase the minimum password length to get the same effect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-3146927336016775126?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3146927336016775126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3146927336016775126'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/02/wells-fargo-rewards.html' title='Wells Fargo Rewards'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-4866406297056870570</id><published>2009-02-12T08:25:00.003-06:00</published><updated>2009-02-12T08:30:24.444-06:00</updated><title type='text'>DSL Splitter</title><content type='html'>Ever since we switched from cable Internet service to DSL service, we've had three problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Our phone line was noisy.&lt;/li&gt;&lt;li&gt;The Internet might disconnect while someone was on the phone.&lt;/li&gt;&lt;li&gt;We didn't weren't getting the full speed of the Internet connection we were paying for.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I just finished installing a solution to those problems:&lt;br /&gt;                 &lt;ul&gt;&lt;li&gt;&lt;a href="http://sector29.com/PRODUCT_PAGES/137/137-649A1-649A1.html" target="_blank"&gt;SUTTLE 649A1 DSL POTS SPLITTER&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;This thing works great. $30, plus $10 for shipping. About an hour to install.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-4866406297056870570?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/4866406297056870570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/4866406297056870570'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/02/dsl-splitter.html' title='DSL Splitter'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-9131467581029159147</id><published>2009-01-07T08:22:00.003-06:00</published><updated>2009-01-07T08:26:26.204-06:00</updated><title type='text'>TinyMCE Javascript WYSIWYG editor</title><content type='html'>&lt;a href="http://tinymce.moxiecode.com/"&gt;TinyMCE&lt;/a&gt; looks like a good WYSIWYG editor that can be put on web pages. I like what Google uses for &lt;a href="http://www.blogger.com/"&gt;Blogger&lt;/a&gt; as well. About anything would be better than what &lt;a href="http://moodle.org"&gt;Moodle&lt;/a&gt; uses. What editor do other people like to use?&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-9131467581029159147?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/9131467581029159147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/9131467581029159147'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2009/01/tinymce-javascript-wysiwyg-editor.html' title='TinyMCE Javascript WYSIWYG editor'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-3088010762458663140</id><published>2008-12-30T20:57:00.003-06:00</published><updated>2008-12-30T21:15:55.142-06:00</updated><title type='text'>Breakout example code using Python and Pygame</title><content type='html'>&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; is a great language that puts the 'fun' back in programming. Here's an example that uses the &lt;a href="http://www.pygame.org/"&gt;Pygame&lt;/a&gt; library to create a game &lt;a href="http://en.wikipedia.org/wiki/Breakout_%28arcade_game%29"&gt;Breakout&lt;/a&gt; in 159 lines of code.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:Lucida,Courier New;"&gt;&lt;span style="color:#004080;"&gt;"""&lt;br /&gt;A Simple Breakout Example&lt;br /&gt;Paul Vincent Craven&lt;br /&gt;"""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# --- Import libraries used for this program&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# System libraries that come with python&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;import&lt;/span&gt; &lt;span style="color:#000000;"&gt;os&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;sys&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;import&lt;/span&gt; &lt;span style="color:#000000;"&gt;math&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# Pygame library from http://www.pygame.org/&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;import&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;from&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;locals&lt;/span&gt; &lt;span style="color:#c00000;"&gt;import&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# Define some colors&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;black&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;white&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;blue&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;green&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;red&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;purple&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0xBF&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0x0F&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0xB5&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# This function loads a sound&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;load_sound&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;try&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;sound&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mixer&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sound&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;except&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;error&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;message&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;print&lt;/span&gt; &lt;span style="color:#004080;"&gt;'Cannot load sound:'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;name&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;raise&lt;/span&gt; &lt;span style="color:#000000;"&gt;SystemExit&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;message&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;return&lt;/span&gt; &lt;span style="color:#000000;"&gt;sound&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# This class represents each block that will get knocked out by the ball&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# It derives from the "Sprite" class in Pygame&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;class&lt;/span&gt; &lt;span style="color:#000000;"&gt;Block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Constructor. Pass in the color of the block, and its x and y position&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;__init__&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;color&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;x&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;y&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;setspeed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;setscore&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Call the parent class (Sprite) constructor&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;__init__&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Class variables to hold the height and width of the block&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;setspeed&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;score&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;setscore&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Create the image of the block of appropriate size&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# The width and height are sent as a list for the first parameter.&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Fill the image with the appropriate color&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;fill&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;color&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Fetch the rectangle object that has the dimensions of the image&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Move the top left of the rectangle to x,y.&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# This is where our block will appear..&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;topleft&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;x&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;y&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# This class represents the ball        &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# It derives from the "Sprite" class in Pygame&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;class&lt;/span&gt; &lt;span style="color:#000000;"&gt;Ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Constructor. Pass in the color of the block, and its x and y position&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;__init__&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Call the parent class (Sprite) constructor&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;__init__&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Class attributes for width and height&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;10&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;10&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;.2&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# A list with the x and y of our ball. (This is the starting position)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0.0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;180.0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Direction in degrees (zero is straight up)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;200&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Speed in pixels per cycle&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0.3&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Create the image of the ball&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Color the ball&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;fill&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;white&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Get a rectangle object that shows where our image is&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Get attributes for the height/width of the screen&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenheight&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenwidth&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# This function will bounce the ball off a horizontal surface (not a verticle one)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;bounce&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;diff&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;180&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;%&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;360&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-=&lt;/span&gt; &lt;span style="color:#000000;"&gt;diff&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Update the position of the ball&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;update&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Sine and Cosine work in degrees, so we have to convert them&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;direction_radians&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;math&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;radians&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Change the position (x and y) according to the speed and direction&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+=&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;*&lt;/span&gt; &lt;span style="color:#000000;"&gt;math&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sin&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction_radians&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-=&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;*&lt;/span&gt; &lt;span style="color:#000000;"&gt;math&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;cos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction_radians&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Update the rectangle of the ball so that it is at mypos&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;left&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Do we bounce off the top of the screen?&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&lt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;bounce&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Do we bounce off the left of the screen?&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&lt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;360&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;%&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;360&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Do we bounce of the right side of the screen?&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&gt;&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenwidth&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;360&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;direction&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;%&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;360&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenwidth&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mypos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&gt;&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;600&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;return&lt;/span&gt; &lt;span style="color:#000000;"&gt;True&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;else&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;return&lt;/span&gt; &lt;span style="color:#000000;"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# This class represents the bar at the bottom that the player controls&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;class&lt;/span&gt; &lt;span style="color:#000000;"&gt;Player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Constructor function&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;__init__&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Call the parent's constructor&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;__init__&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;75&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;fill&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;white&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Make our top-left corner the passed-in location.&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;image&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenheight&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenwidth&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;print&lt;/span&gt; &lt;span style="color:#004080;"&gt;"Screen height"&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenheight&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;topleft&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenheight&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Update the player&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;update&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Get where the mouse is&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;pos&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;mouse&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_pos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Set the left side of the player bar to the mouse position&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;left&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Make sure we don't push the player paddle off the right side of the screen&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;left&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&gt;&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenwidth&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;left&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;screenwidth&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-&lt;/span&gt; &lt;span style="color:#000000;"&gt;self&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;# This is the main function where our program begins&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;def&lt;/span&gt; &lt;span style="color:#000000;"&gt;main&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;score&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Call this function so the Pygame library can initialize itself&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;init&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create an 800x600 sized screen&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;screen&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;set_mode&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;800&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;600&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Set the title of the window&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;set_caption&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#004080;"&gt;'Breakout'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Enable this to make the mouse dissappear when over our window&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;#pygame.mouse.set_visible(0)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# This is a font we use to draw text on the screen (size 36)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;font&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;font&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Font&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;None&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;36&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create a surface we can draw on&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;background&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Surface&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;screen&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_size&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Used for converting color maps and such&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;background&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;convert&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Fill the screen with a black background&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;fill&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;black&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create the player paddle object&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;player&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;Player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create the ball&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;ball&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;Ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create a group of 1 ball (used in checking collisions)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;balls&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Group&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;balls&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;add&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create a group that will hold the blocks we are about to create&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;RenderPlain&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# The top of the block (y position)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;80&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Number of blocks to create&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;blockcount&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;40&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Create a row of purple blocks&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;i&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;range&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;blockcount&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#008000;"&gt;# Create a block (color,x,y,new ball speed,points)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;Block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;purple&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;i&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;.85&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;30&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;add&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;#Blue&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;i&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;range&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;blockcount&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;Block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;blue&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;i&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;.7&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;add&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Green&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;i&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;range&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;blockcount&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;Block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;green&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;i&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;.55&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;add&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;#Yellow&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;i&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;range&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;blockcount&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;Block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;[&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;255&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;]&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;i&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;.4&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;10&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;add&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;15&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008000;"&gt;# Red&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;i&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;range&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;blockcount&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;Block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;red&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;i&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;*&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;20&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;.3&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;5&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;add&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;block&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;movingsprites&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;RenderPlain&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;clock&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;time&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;Clock&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;block_hit_sound&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;load_sound&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#004080;"&gt;'chink.wav'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;block_hit_sound&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;play&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#000000;"&gt;done&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;False&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#c00000;"&gt;while&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#000000;"&gt;clock&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;tick&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1000&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;event&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;event&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;event&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;type&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;==&lt;/span&gt; &lt;span style="color:#000000;"&gt;QUIT&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#c00000;"&gt;return&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#c00000;"&gt;not&lt;/span&gt; &lt;span style="color:#000000;"&gt;done&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# Update the player and ball positions&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;update&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;done&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;update&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# If we are done, print game over&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;done&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;text&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;font&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;render&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#004080;"&gt;"Game Over"&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;200&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;200&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;200&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;textpos&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;text&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;centerx&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;/&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;textpos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;300&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;blit&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;text&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;textpos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#c00000;"&gt;print&lt;/span&gt; &lt;span style="color:#004080;"&gt;"Game Over"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# See if the ball hits the player paddle&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;spritecollide&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;balls&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;False&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#008000;"&gt;# The 'diff' lets you try to bounce the ball left or right depending where on the paddle you hit it&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;diff&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;left&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+&lt;/span&gt; &lt;span style="color:#000000;"&gt;player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;/&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;left&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;/&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;2&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#008000;"&gt;# Set the ball's y position in case we hit the ball on the edge of the paddle&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;top&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;screen&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;get_height&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-&lt;/span&gt; &lt;span style="color:#000000;"&gt;player&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-&lt;/span&gt; &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;height&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;-&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;bounce&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;diff&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# Check for collisions between the ball and the blocks&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;deadblocks&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;sprite&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;spritecollide&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;False&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# For every block we hit:&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;for&lt;/span&gt; &lt;span style="color:#000000;"&gt;b&lt;/span&gt; &lt;span style="color:#c00000;"&gt;in&lt;/span&gt; &lt;span style="color:#000000;"&gt;deadblocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#008000;"&gt;# Speed up the ball if we hit a block that causes ball speed up&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&lt;&lt;/span&gt; &lt;span style="color:#000000;"&gt;b&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;b&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;speed&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#008000;"&gt;# Add to our score&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;score&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;+=&lt;/span&gt; &lt;span style="color:#000000;"&gt;b&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;score&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#008000;"&gt;# Remove the block from the list of blocks&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;remove&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;b&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# If we actually hit a block, bounce the ball and play a sound&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;len&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;deadblocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;&gt;&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;block_hit_sound&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;play&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:#000000;"&gt;ball&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;bounce&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;# Print the score&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;scoreprint&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#004080;"&gt;"Score: "&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;str&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;score&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;clearrect&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;Rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;250&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;30&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;draw&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;rect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;black&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#000000;"&gt;clearrect&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;text&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#000000;"&gt;font&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;render&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;scoreprint&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;1&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;white&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;textpos&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;=&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;blit&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;text&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#000000;"&gt;textpos&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;           &lt;span style="color:#008000;"&gt;#Draw Everything&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;screen&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;blit&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;background&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;,&lt;/span&gt; &lt;span style="color:#0080c0;"&gt;0&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;movingsprites&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;draw&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;screen&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;blocks&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;draw&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#000000;"&gt;screen&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:#000000;"&gt;pygame&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;display&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;flip&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;#this calls the 'main' function when this script is executed&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#c00000;"&gt;if&lt;/span&gt; &lt;span style="color:#000000;"&gt;__name__&lt;/span&gt; &lt;span style="color:#0000c0;"&gt;==&lt;/span&gt; &lt;span style="color:#004080;"&gt;'__main__'&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;:&lt;/span&gt; &lt;span style="color:#000000;"&gt;main&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;(&lt;/span&gt;&lt;span style="color:#0000c0;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-3088010762458663140?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3088010762458663140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3088010762458663140'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/12/breakout-example-code-using-python-and.html' title='Breakout example code using Python and Pygame'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-1822734518811716550</id><published>2008-12-15T19:52:00.002-06:00</published><updated>2008-12-15T20:23:29.983-06:00</updated><title type='text'>Spying On The Homefront</title><content type='html'>&lt;a href="http://www.newsweek.com/id/174601/page/1"&gt;This article in Newsweek&lt;/a&gt; is a nice summary of Thomas Tamm's work as a whistle-blower. The U.S. Government set up rooms in major telecoms that allowed them to wiretap virtually everyone in the United States. Is was illegal, as wiretaps require a court order.&lt;br /&gt;&lt;br /&gt;So if it was illegal, why isn't anyone in jail? Congress passed a law giving retro-active immunity to telecoms. The constitutionality of that law &lt;a href="http://www.ecommercetimes.com/story/Judge-Mulls-Constitutionality-of-Telecom-Immunity-Law-65352.html"&gt;is in question&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tamm's life has been ruined, with mounting debt from hiring lawyers to defend him. The government would like him to plead guilty for disclosure of classified information. The fact that the U.S. was breaking the law was classified.&lt;br /&gt;&lt;br /&gt;Technological advances in data-mining have created new tools that can be used for law enforcement. Tools that our current law does not support. Have we gotten anything useful by having the government wiretaps? Frontline &lt;a href="http://www.pbs.org/wgbh/pages/frontline/homefront/"&gt;did a great piece&lt;/a&gt; on how New Year's Eve parties were almost canceled in Las Vegas because of a translation error with a wiretap. But I'm unaware if any legitimate plot has been uncovered in return for no longer requiring a warrent.&lt;br /&gt;&lt;br /&gt;We need to have a rational conversation as a country about the new tools technology supplies our society, and how to balance it against citizen rights.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-1822734518811716550?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/1822734518811716550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/1822734518811716550'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/12/spying-on-homefront.html' title='Spying On The Homefront'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-2833145008293071719</id><published>2008-12-03T09:32:00.001-06:00</published><updated>2008-12-03T09:33:47.282-06:00</updated><title type='text'>Dad makes the paper</title><content type='html'>My dad made the paper today for his volunteer work &lt;a href="http://www.desmoinesregister.com/apps/pbcs.dll/article?AID=2008812030333"&gt;helping seniors choose the best drug plan&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-2833145008293071719?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/2833145008293071719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/2833145008293071719'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/12/dad-makes-paper.html' title='Dad makes the paper'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-3635223874031621330</id><published>2008-11-14T09:14:00.002-06:00</published><updated>2008-11-14T09:21:00.328-06:00</updated><title type='text'>Salisbury House</title><content type='html'>Last night the &lt;a href="http://www.ewh.ieee.org/r4/central_iowa/"&gt;Central Iowa IEEE chapter&lt;/a&gt; had their annual meeting at the &lt;a href="http://www.salisburyhouse.org/"&gt;Salisbury House&lt;/a&gt;. IEEE got one of the electricians who worked on the house restoration to give a tour. We got to see parts of the Salisbury house you don't normally get to tour. It was an impressive job. The Salisbury house has a lot of concrete, so outfitting the place with sprinklers, an alarm system, security cameras, and modern wiring was no easy task. They did a good job, in the places where the restoration is complete, you don't really notice their work.&lt;br /&gt;&lt;br /&gt;The Salisbury House is a worth-while stop for anyone in the Des Moines area. If you haven't been there in a few years, it is worth checking out the restoration work.&lt;br /&gt;&lt;br /&gt;While I'd like to have a house like that, there is no way I could afford their $12,000 per month heating bill in the winter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-3635223874031621330?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3635223874031621330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/3635223874031621330'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/11/salisbury-house.html' title='Salisbury House'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-279617335513887224</id><published>2008-10-25T15:13:00.003-05:00</published><updated>2008-10-25T15:23:32.400-05:00</updated><title type='text'>Excellent Logitech Harmony Customer Service</title><content type='html'>A few months ago we bought a &lt;a href="http://www.logitech.com/index.cfm/remotes/universal_remotes/devices/377&amp;amp;cl=US,EN"&gt;Logitech Harmony 670 Remote&lt;/a&gt;. We had an older Harmony remote before this, and really liked it.&lt;br /&gt;&lt;br /&gt;Unfortunately the new remote stopped working properly after about a month. About four of the buttons failed to do anything at all.&lt;br /&gt;&lt;br /&gt;After having me go though several reasonable attempts at trying to fix the remote, the tech support individual concluded it was a bad unit, and had a new one shipped out to me. I was surprised, good customer service is hard to come by.&lt;br /&gt;&lt;br /&gt;So not only do I recommend the Logitech Harmony 670 Remote, I'll also recommend them for their customer support. Well done Logitech!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-279617335513887224?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/279617335513887224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/279617335513887224'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/10/excellent-logitech-harmony-customer.html' title='Excellent Logitech Harmony Customer Service'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-329631824635186629</id><published>2008-10-08T08:09:00.002-05:00</published><updated>2008-10-08T08:16:08.710-05:00</updated><title type='text'>Ballooning Photos</title><content type='html'>Several years back, I got camera-happy at one of the National Balloon Classic events. This was before digital cameras were popular. The cost of the film and printing was over $200. But the real issue was, what do I do with all those photos?&lt;br /&gt;&lt;br /&gt;Well, that question is easier to answer today. Not only has digital photography made taking photos cheaper, it has also opened up great ways to share the photos. You can create slide shows, like a relative of mine did with photos from the 2008 National Balloon Classic. &lt;a href="http://animoto.com/play/h2lQsT9n8qH0GvCWek6tVQ"&gt;You can see them here&lt;/a&gt;. I've also gotten a book created by &lt;a href="http://www.shutterfly.com/"&gt;Shutterfly&lt;/a&gt; with these photos. Shutterfly allows you to create a very high-quality book with your photos. And of course, sites like flickr, pbase, and picasa easily allow sharing photos on-line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-329631824635186629?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/329631824635186629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/329631824635186629'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/10/ballooning-photos.html' title='Ballooning Photos'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-282018838162415458</id><published>2008-10-05T20:00:00.002-05:00</published><updated>2008-10-05T20:06:55.904-05:00</updated><title type='text'>The Hobbit</title><content type='html'>Today our family went to see &lt;a href="https://www.dmplayhouse.com/0809Season/TheHobbit.html"&gt;The Hobbit&lt;/a&gt;, a play put on at &lt;a href="http://www.dmplayhouse.com/"&gt;The Des Moines Playhouse&lt;/a&gt;. As usual, it was a good production. I really liked the stage construction, particularly with the dragon. The acting was well done too.&lt;br /&gt;&lt;br /&gt;The KG Children's Theater does a really good job. For many years I thought they put on some lame puppet shows or something. Quite the contrary, they put a massive amount of work into it. I highly recommend their plays, even if you aren't a kid anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-282018838162415458?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/282018838162415458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/282018838162415458'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/10/hobbit.html' title='The Hobbit'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-4762530393145996926</id><published>2008-08-20T18:24:00.012-05:00</published><updated>2008-08-20T19:25:40.420-05:00</updated><title type='text'>Using NBC.com to watch the Olympics</title><content type='html'>&lt;script type="text/javascript"&gt;&lt;br /&gt;digg_url = 'http://blog.cravenfamily.com/2008/08/using-nbccom-to-watch-olympics.html';&lt;br /&gt;&lt;/script&gt;&lt;script src="http://digg.com/tools/diggthis.js" type="text/javascript"&gt;&lt;/script&gt; &lt;a href="http://www.shawnjohnson.net/"&gt;Shawn Johnson's&lt;/a&gt; gold-winning balance beam routine was too late for my daughter to watch. So I thought I could cruise to the Internet to watch it. Here's what it took:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Search on-line for the video.&lt;/li&gt;&lt;li&gt;Find lots of You-Tube videos&lt;/li&gt;&lt;li&gt;All the You-Tube videos want you to go to some blog to watch. No thanks, probably a trick to download malware. I'll go the legit route and try to watch at NBC.com&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go to NBC.com.&lt;/li&gt;&lt;li&gt;Click on Olympic coverage, right up front.&lt;/li&gt;&lt;li&gt;Click on 'find by sport'&lt;/li&gt;&lt;li&gt;Scroll way down to gymnastics.&lt;/li&gt;&lt;li&gt;See Shawn Johnson, click 'download'&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Oops, no download. I got a 'DRM' check screen.&lt;/li&gt;&lt;li&gt;I'm told it doesn't support Firefox without a Windows Media Player plug-in.&lt;/li&gt;&lt;li&gt;Search for WMP on-line.&lt;/li&gt;&lt;li&gt;Find the 'official' plug-in at a place that isn't Microsoft.&lt;/li&gt;&lt;li&gt;Try to see if this is malware or not.&lt;/li&gt;&lt;li&gt;Cross fingers and install.&lt;/li&gt;&lt;li&gt;Repeat steps 4-9.&lt;/li&gt;&lt;li&gt;Plug-in doesn't work at all.&lt;/li&gt;&lt;li&gt;Bitch about having to use IE. Thankfully, I'm not on my Linux computer at work.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open IE. Repeat steps 4-9.&lt;/li&gt;&lt;li&gt;At DRM screen, I can now click 'play test video'&lt;/li&gt;&lt;li&gt;Now I can finally click 'Download now'! (Didn't I already do this a few times?)&lt;/li&gt;&lt;li&gt;Oops, no download. I have to install "NBC Direct"&lt;/li&gt;&lt;li&gt;Grumble about adding more crap to my computer just because I want to watch a video&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tell IE it is ok to install a new program&lt;/li&gt;&lt;li&gt;Click 'run'&lt;/li&gt;&lt;li&gt;Tell Vista's User Access Control it is ok to run the program&lt;/li&gt;&lt;li&gt;Read ra-ra intro screen from NBC.&lt;/li&gt;&lt;li&gt;Click 'continue'&lt;/li&gt;&lt;li&gt;Read 3,500 word license agreement.&lt;/li&gt;&lt;li&gt;Click 'I agree'&lt;/li&gt;&lt;li&gt;Wait while some progress bars flash&lt;/li&gt;&lt;li&gt;Get presented with a screen to sign in, or create an account.&lt;/li&gt;&lt;li&gt;Bitch that after all this, now I have to create an account so they can spam me with e-mail too.&lt;/li&gt;&lt;li&gt;Click 'Create New Account'.&lt;/li&gt;&lt;li&gt;Get scary alert box saying I have chosen to receive "HIGH QUALITY" video downloads. Oh, any I'll be joined to an NBC P2P network. Am I sure I want to proceed?&lt;/li&gt;&lt;li&gt;I'm not, but I click 'Yes' anyway.&lt;/li&gt;&lt;li&gt;I get a form to fill out. Some fields are yellow, some white.&lt;/li&gt;&lt;li&gt;Figure only the yellow is required.&lt;/li&gt;&lt;li&gt;Bitch I have to give a 'descriptive name' for this computer. WTF? I just want to watch one video?&lt;/li&gt;&lt;li&gt;Enter required info.&lt;/li&gt;&lt;li&gt;Oh, no the white fields are required too. I have to tell my zip code and birth date.&lt;/li&gt;&lt;li&gt;Make up a zip code and birth date.&lt;/li&gt;&lt;li&gt;Click continue.&lt;/li&gt;&lt;li&gt;Get a message that the registration servers are down. No account was created.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click my only option, quit.&lt;/li&gt;&lt;li&gt;Cuss a lot.&lt;/li&gt;&lt;li&gt;Repeat steps 17-42.&lt;/li&gt;&lt;li&gt;Pray servers are up.&lt;/li&gt;&lt;li&gt;Get message that my e-mail is already registered.&lt;/li&gt;&lt;li&gt;Hit back a lot, and log in with the account I was told in step 43 that wasn't created.&lt;/li&gt;&lt;li&gt;Again, I have to enter a descriptive name for this computer.&lt;/li&gt;&lt;li&gt;Scary dialog saying ATTENTION! and HIGH QUALITY pops up again.&lt;/li&gt;&lt;li&gt;Click 'Yes'&lt;/li&gt;&lt;li&gt;Wait while progress bars flash. Something about "OpenCASE". Hopefully other customer know more about what that is than I do.&lt;/li&gt;&lt;li&gt;Get "Install is about to start" dialog. Crap, I'm just now starting to install? It says it should take about 10 minutes.&lt;/li&gt;&lt;li&gt;Cuss.&lt;/li&gt;&lt;li&gt;Click 'continue'&lt;/li&gt;&lt;li&gt;Notice this whole NBC Direct thing is 'Beta'. Is that safe?&lt;/li&gt;&lt;li&gt;Oh, great, the install puts another icon on my desktop. It didn't even ask. Kind of arrogant to assume it is so important that it deserves to live on my desktop, isn't it?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Congratulations, I'm not ready to start using NBC direct.&lt;/li&gt;&lt;li&gt;Oh, if you skip registration you get STANDARD QUALITY video. Not that HIGH QUALITY they talked about before. Hm, did I register or not?&lt;/li&gt;&lt;li&gt;Click 'close'&lt;/li&gt;&lt;li&gt;Oh, now I can register. What the hell was I doing before, if I wasn't registering?&lt;/li&gt;&lt;li&gt;Click 'register'&lt;/li&gt;&lt;li&gt;Says I haven't registered my e-mail, please click 'resend'&lt;/li&gt;&lt;li&gt;Click close, because there is no 'resend'&lt;/li&gt;&lt;li&gt;Now I can click 'resend'&lt;/li&gt;&lt;li&gt;Ooh boy, my request is being process. And they spell "You'll" with a box in place of the apostrophe. Classy.&lt;/li&gt;&lt;li&gt;Open my email.&lt;/li&gt;&lt;li&gt;Find registration confirmation.&lt;/li&gt;&lt;li&gt;Click on link&lt;/li&gt;&lt;li&gt;Get a page saying I'm confirmed. Click to customize my profile to get started. Hey folks, this is step 71, and I haven't even started yet?&lt;/li&gt;&lt;li&gt;Ignore that web page. Switch apps and go back to Direct Beta, click close&lt;/li&gt;&lt;li&gt;Click 'register'&lt;/li&gt;&lt;li&gt;A new dialog pops up. Hey! Important update. An operating system patch is required to use this beta!&lt;/li&gt;&lt;li&gt;What? I keep my OS up with the required Microsoft patches. Why do I have to download an OS patch from NBC to watch one silly 3 minute video? Should NBC be patching my operating system?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It says I just have to 'click here' to get the required patch&lt;/li&gt;&lt;li&gt;I get a dialog warning me I'll have to restart the machine after installing the patch.&lt;/li&gt;&lt;li&gt;Oh, and after the restart, please try running NBC direct again.&lt;/li&gt;&lt;li&gt;Click on the link. Get option to open a file. Also get warning about running files downloaded from the Internet from untrusted sources.&lt;/li&gt;&lt;li&gt;My wife come in, asks what I'm up to.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I tell her.&lt;/li&gt;&lt;li&gt;My wife points out I've been home an hour, and have yet to help my daughter with her homework.&lt;/li&gt;&lt;li&gt;Finally I give up. I then try to explain to my daughter why she can't watch Shawn on the balance beam.&lt;/li&gt;&lt;li&gt;"That's ok," my daughter says. "While I was waiting for you, they showed it again on TV."&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-4762530393145996926?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/4762530393145996926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/4762530393145996926'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/08/using-nbccom-to-watch-olympics.html' title='Using NBC.com to watch the Olympics'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-2288360951927471909</id><published>2008-08-15T08:30:00.004-05:00</published><updated>2008-08-15T08:41:19.003-05:00</updated><title type='text'>Creating Presentations with Beamer</title><content type='html'>I like to use &lt;a href="http://latex-beamer.sourceforge.net/"&gt;Beamer &lt;/a&gt;to create presentations with &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt;. I love the slides it creates, and I'm not a big PowerPoint fan.&lt;br /&gt;&lt;br /&gt;I have found &lt;a href="http://www.informatik.uni-freiburg.de/%7Efrank/ENG/latex-course/latex-course-3/latex-course-3_en.html"&gt;this simple page&lt;/a&gt; of examples to be of more use than the 224 page Beamer manual. I mean, really, who has the time to read that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-2288360951927471909?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/2288360951927471909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/2288360951927471909'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/08/creating-presentations-with-beamer.html' title='Creating Presentations with Beamer'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-2440391168990237451</id><published>2008-07-27T15:08:00.000-05:00</published><updated>2008-07-27T15:08:40.306-05:00</updated><title type='text'>2008 National Balloon Classic</title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;&lt;a href="http://bp3.blogger.com/_FzQ1J4_f5P4/SIzVxvWz36I/AAAAAAAAAFM/TE-nWr9gBZo/s1600-h/2008+Balloons+008.JPG"&gt;&lt;img alt="" src="http://bp3.blogger.com/_FzQ1J4_f5P4/SIzVxvWz36I/AAAAAAAAAFM/TE-nWr9gBZo/s400/2008+Balloons+008.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;&lt;a href="http://bp3.blogger.com/_FzQ1J4_f5P4/SIzVxjLf12I/AAAAAAAAAFU/pPTc0vOELb0/s1600-h/2008+Balloons+031.JPG"&gt;&lt;img alt="" src="http://bp3.blogger.com/_FzQ1J4_f5P4/SIzVxjLf12I/AAAAAAAAAFU/pPTc0vOELb0/s400/2008+Balloons+031.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;&lt;a href="http://bp2.blogger.com/_FzQ1J4_f5P4/SIzVxwydDAI/AAAAAAAAAFc/_l2TS5ogL_k/s1600-h/2008+Balloons+002.JPG"&gt;&lt;img alt="" src="http://bp2.blogger.com/_FzQ1J4_f5P4/SIzVxwydDAI/AAAAAAAAAFc/_l2TS5ogL_k/s400/2008+Balloons+002.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-2440391168990237451?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/2440391168990237451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/2440391168990237451'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/2008-national-balloon-classic_27.html' title='2008 National Balloon Classic'/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_FzQ1J4_f5P4/SIzVxvWz36I/AAAAAAAAAFM/TE-nWr9gBZo/s72-c/2008+Balloons+008.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-9145545955922944224</id><published>2008-07-26T15:07:00.000-05:00</published><updated>2008-07-26T15:07:05.383-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;The wicker and nylon rods to form my new balloon basket.&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_FzQ1J4_f5P4/SIuD6A-9nzI/AAAAAAAAAFE/cwtEczdgPH8/s1600-h/003.JPG"&gt;&lt;img alt="" src="http://bp2.blogger.com/_FzQ1J4_f5P4/SIuD6A-9nzI/AAAAAAAAAFE/cwtEczdgPH8/s400/003.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-9145545955922944224?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/9145545955922944224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/9145545955922944224'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/wicker-and-nylon-rods-to-form-my-new.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_FzQ1J4_f5P4/SIuD6A-9nzI/AAAAAAAAAFE/cwtEczdgPH8/s72-c/003.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-1617066277329178161</id><published>2008-07-26T15:06:00.000-05:00</published><updated>2008-07-26T15:06:30.654-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;Here we show how the nylon rod will come up through the basket floor. The wicker will be woven around the nylon rods.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_FzQ1J4_f5P4/SIuDxjTWnlI/AAAAAAAAAE8/VvB7N_iRtAk/s1600-h/002.JPG"&gt;&lt;img alt="" src="http://bp1.blogger.com/_FzQ1J4_f5P4/SIuDxjTWnlI/AAAAAAAAAE8/VvB7N_iRtAk/s400/002.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-1617066277329178161?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/1617066277329178161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/1617066277329178161'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/here-we-show-how-nylon-rod-will-come-up.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_FzQ1J4_f5P4/SIuDxjTWnlI/AAAAAAAAAE8/VvB7N_iRtAk/s72-c/002.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-5405212827912644986</id><published>2008-07-26T15:05:00.000-05:00</published><updated>2008-07-26T15:05:31.260-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;In this photo, I'm staining a piece of 3/4" Ash plywood that will be the floor of my new basket.&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_FzQ1J4_f5P4/SIuDiiAQeYI/AAAAAAAAAE0/RepPS1U7xbQ/s1600-h/Balloons+002.JPG"&gt;&lt;img alt="" src="http://bp3.blogger.com/_FzQ1J4_f5P4/SIuDiiAQeYI/AAAAAAAAAE0/RepPS1U7xbQ/s400/Balloons+002.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-5405212827912644986?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/5405212827912644986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/5405212827912644986'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/in-this-photo-im-staining-piece-of-34.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_FzQ1J4_f5P4/SIuDiiAQeYI/AAAAAAAAAE0/RepPS1U7xbQ/s72-c/Balloons+002.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-6217254016793031897</id><published>2008-07-26T14:57:00.000-05:00</published><updated>2008-07-26T14:57:22.866-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;2008 National Balloon Classic&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_FzQ1J4_f5P4/SIuBoU-dwrI/AAAAAAAAAEs/J5EUfLEu3Qw/s1600-h/Balloons+033.JPG"&gt;&lt;img alt="" src="http://bp3.blogger.com/_FzQ1J4_f5P4/SIuBoU-dwrI/AAAAAAAAAEs/J5EUfLEu3Qw/s400/Balloons+033.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-6217254016793031897?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/6217254016793031897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/6217254016793031897'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/2008-national-balloon-classic_3385.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_FzQ1J4_f5P4/SIuBoU-dwrI/AAAAAAAAAEs/J5EUfLEu3Qw/s72-c/Balloons+033.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-1693918444629132025</id><published>2008-07-26T14:56:00.000-05:00</published><updated>2008-07-26T14:56:46.390-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;2008 National Balloon Classic&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_FzQ1J4_f5P4/SIuBfe5vrYI/AAAAAAAAAEk/HA-W8u9Z9cw/s1600-h/Balloons+050.JPG"&gt;&lt;img alt="" src="http://bp1.blogger.com/_FzQ1J4_f5P4/SIuBfe5vrYI/AAAAAAAAAEk/HA-W8u9Z9cw/s400/Balloons+050.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-1693918444629132025?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/1693918444629132025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/1693918444629132025'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/2008-national-balloon-classic_3585.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_FzQ1J4_f5P4/SIuBfe5vrYI/AAAAAAAAAEk/HA-W8u9Z9cw/s72-c/Balloons+050.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-820133618854185605</id><published>2008-07-26T14:55:00.000-05:00</published><updated>2008-07-26T14:55:51.572-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;2008 National Balloon Classic&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_FzQ1J4_f5P4/SIuBR2iVxMI/AAAAAAAAAEc/4QE5rNmke8w/s1600-h/Balloons+076.JPG"&gt;&lt;img alt="" src="http://bp1.blogger.com/_FzQ1J4_f5P4/SIuBR2iVxMI/AAAAAAAAAEc/4QE5rNmke8w/s400/Balloons+076.JPG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-820133618854185605?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/820133618854185605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/820133618854185605'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/2008-national-balloon-classic_26.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_FzQ1J4_f5P4/SIuBR2iVxMI/AAAAAAAAAEc/4QE5rNmke8w/s72-c/Balloons+076.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5050113136400811496.post-6348752231346364299</id><published>2008-07-26T14:54:00.000-05:00</published><updated>2008-07-26T14:54:33.699-05:00</updated><title type='text'></title><content type='html'>&lt;div style="MARGIN: 0px auto 10px; TEXT-ALIGN: center"&gt;2008 National Balloon Classic Parade&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_FzQ1J4_f5P4/SIuA-fJRZTI/AAAAAAAAAEU/TstUAkkHS_4/s1600-h/Balloons+125.JPG"&gt;&lt;img alt="" src="http://bp3.blogger.com/_FzQ1J4_f5P4/SIuA-fJRZTI/AAAAAAAAAEU/TstUAkkHS_4/s400/Balloons+125.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5050113136400811496-6348752231346364299?l=blog.cravenfamily.com'/&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/6348752231346364299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5050113136400811496/posts/default/6348752231346364299'/><link rel='alternate' type='text/html' href='http://blog.cravenfamily.com/2008/07/2008-national-balloon-classic-parade.html' title=''/><author><name>Paul Vincent Craven</name><uri>http://www.blogger.com/profile/10360093423000027330</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18074686973711778367'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_FzQ1J4_f5P4/SIuA-fJRZTI/AAAAAAAAAEU/TstUAkkHS_4/s72-c/Balloons+125.JPG' height='72' width='72'/></entry></feed>