コード例 #1
0
 def test_mouse_motion__highlight_tile_when_mouse_is_over_that_tile(self):
     board = Board()
     TILE_POS = {'row': 0, 'col': 0}
     tile = board.get_tile(**TILE_POS)
     view = BoardView(board)
     controller = BoardController(board, view)
     mouse_position = view.get_screen_coords_of_tile(**TILE_POS)
     
     self.assertFalse(tile.is_highlighted())
     controller.mouse_motion(mouse_position)
     self.assertTrue(tile.is_highlighted())
コード例 #2
0
 def test_mouse_motion__remove_highlight_when_mouse_leaves_tile_2(self):
     board = Board()
     TILE_POS_1 = {'row': 0, 'col': 1}
     view = BoardView(board)
     controller = BoardController(board, view)
     mouse_position = view.get_screen_coords_of_tile(**TILE_POS_1)
     
     controller.mouse_motion(mouse_position)
     self.assertTrue(board.get_tile(**TILE_POS_1).is_highlighted())
     
     TILE_POS_2 = {'row': 0, 'col': 2}
     mouse_position = view.get_screen_coords_of_tile(**TILE_POS_2)
     controller.mouse_motion(mouse_position)
     self.assertFalse(board.get_tile(**TILE_POS_1).is_highlighted())
     self.assertTrue(board.get_tile(**TILE_POS_2).is_highlighted())
コード例 #3
0
 def test_mouse_click__should_move_tile(self):
     board = Board("""
          1  2  3  4
          5  6  7  8
          9 10 11  .
         13 14 12 15
     """)
     view = BoardView(board)
     controller = BoardController(board, view)
     mouse_position = view.get_screen_coords_of_tile(row=3, col=3)
     
     controller.mouse_click(mouse_position)
     
     expected = Board("""
          1  2  3  4
          5  6  7  8
          9 10 11 15
         13 14 12  .
     """)
     self.assertEqual(str(expected), str(board))
コード例 #4
0
ファイル: game.py プロジェクト: newagebegins/fifteen
 def run(self):
     clock = pygame.time.Clock()
     pygame.init()
     screen = pygame.display.set_mode(WINSIZE)
     backbuffer = pygame.Surface(screen.get_size(), pygame.SRCALPHA, 32)
     pygame.display.set_caption('Fifteen')
     
     board = self._board
     board.shuffle()
     board_view = BoardView(board, x=80, y=80)
     board_controller = BoardController(board, board_view)
     game_over_msg = GameOverMessage()
     play_again_btn = Button(title='Play Again', x=80, y=340)
     play_again_btn.attach(self)
 
     while True:
         for event in pygame.event.get():
             if event.type == QUIT:
                 pygame.quit()
                 sys.exit()
             elif event.type == MOUSEMOTION:
                 if not board.is_solved():
                     board_controller.mouse_motion(event.pos)
                 else:
                     play_again_btn.mouse_motion(event.pos)
             elif event.type == MOUSEBUTTONDOWN:
                 if not board.is_solved():
                     board_controller.mouse_click(event.pos)
                 else:
                     play_again_btn.mouse_click(event.pos)
         
         backbuffer.fill((0, 0, 0))
         board_view.draw(backbuffer)
         if (board.is_solved()):
             game_over_msg.draw(backbuffer)
             play_again_btn.draw(backbuffer)
         
         screen.blit(backbuffer, (0, 0))
         pygame.display.flip()
         clock.tick(30)
コード例 #5
0
 def test_mouse_motion__do_not_throw_exception_when_mouse_is_not_over_the_board(self):
     board = Board()
     view = BoardView(board)
     controller = BoardController(board, view)
     controller.mouse_motion((999, 999))