<diagram program="umletino" version="15.0.0"><zoom_level>10</zoom_level><help_text></help_text><element><id>UMLClass</id><coordinates><x>30</x><y>260</y><w>300</w><h>120</h></coordinates><panel_attributes>Controller bg=red - - get_and_handle_events() exit_if_time_to_quit(events) key_was_pressed_on_this_cycle(key, events) -> bool </panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>320</x><y>10</y><w>360</w><h>170</h></coordinates><panel_attributes>main -- bg=orange halign=left 1. Initializes pygame, a screen, and a Clock (for the frame rate). Implements a Model-View-Controller (MVC) architecture: 1. Constructs the Game, View and Controller. 2. Enters the game loop, which repeatedly (per frame rate): -- Asks the Controller object to get and respond to events. -- Asks the Game object to run one cycle. -- Asks the View object to draw everything.</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>770</x><y>10</y><w>190</w><h>120</h></coordinates><panel_attributes>View bg=red - - draw_everything() -- Draws the background. -- Asks the Game to ask its objects to draw themselves.</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>390</x><y>230</y><w>380</w><h>150</h></coordinates><panel_attributes>Game bg=red - - run_one_cycle() -- Called to do whatever actions need to happen (independently of events / user-input) during this cycle of the game loop. draw_game() -- Asks the Game objects to draw themselves. </panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>830</x><y>170</y><w>230</w><h>80</h></coordinates><panel_attributes>screen -- bg=yellow The pygame.Surface object returned by pygame.display.set_mode().</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>410</x><y>170</y><w>140</w><h>80</h></coordinates><panel_attributes>lt=<- constructs m1=1 </panel_attributes><additional_attributes>110;60;110;40;10;40;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>230</x><y>170</y><w>160</w><h>110</h></coordinates><panel_attributes>lt=<- constructs m1=1</panel_attributes><additional_attributes>10;90;10;50;120;50;140;10</additional_attributes></element><element><id>Relation</id><coordinates><x>670</x><y>50</y><w>120</w><h>50</h></coordinates><panel_attributes>lt=<- constructs m1=1</panel_attributes><additional_attributes>100;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>930</x><y>120</y><w>40</w><h>90</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>12;70;10;13</additional_attributes></element><element><id>Relation</id><coordinates><x>560</x><y>170</y><w>290</w><h>60</h></coordinates><panel_attributes>lt=<- m2=constructs m1=1 m2pos=10,-12 </panel_attributes><additional_attributes>270;30;10;30;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>720</x><y>120</y><w>90</w><h>130</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;110;70;13</additional_attributes></element><element><id>UMLNote</id><coordinates><x>20</x><y>10</y><w>240</w><h>60</h></coordinates><panel_attributes>Model-View-Controller (MVC) architecture. PUT THE NAME OF YOUR GAME HERE. bg=blue</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>760</x><y>220</y><w>90</w><h>50</h></coordinates><panel_attributes>lt=<- m2=1 m2pos=10,0 </panel_attributes><additional_attributes>70;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>320</x><y>290</y><w>90</w><h>60</h></coordinates><panel_attributes>lt=<- m1=1 </panel_attributes><additional_attributes>70;23;10;23</additional_attributes></element></diagram>