<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) -&gt; 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=&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=&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=&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=&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=&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=&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=&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=&lt;-
m1=1


</panel_attributes><additional_attributes>70;23;10;23</additional_attributes></element></diagram>